I'm trying to run a global optimization in Matlab using the global optimization toolbox. I am using the fmincon local optimizer as an input. I am able to successfully run the fmincon local optimizer, as well as the MultiStart global optimizer with this problem. However, when I try to set it up as a GlobalSearch, I get an error message.
Below is the code I am trying to use for the GlobalSearch:
%the functions is f(w) rather than f(x)
%constraints:
A = [1,0,0; 0,1,0; 0,0,1];b = [.80, .80, .80];Aeq = [1 1 1];beq = 1;lb = .10 * [1 1 1];ub = .8 * [1 1 1];w = [weight1, weight2, weight3]; wstart = randn(3,1);options = optimset('Algorithm','interior-point');% function handle for the objective function (note that variables
% aa through hh are additional parameters that the solver does not modify):
h = @(w)Difference_in_Returns(w(1),w(2),w(3), aa, bb, cc, dd, ee, ff, gg, hh);% problem structure:
problem = createOptimProblem('fmincon','x0',wstart,'objective',h,'Aineq',A,...''bineq',b,'Aeq',Aeq,'beq',beq,'options',options,'lb',lb,'ub',ub);gs = GlobalSearch;run(gs,problem)
When I try to run this, Matlab bugs out and prints:
Error using - Matrix dimensions must agree.Error in C:\Program Files\MATLAB\R2012a\toolbox\globaloptim\globaloptim\private\globalsearchnlp.p>i_calcConstrViolation (line 593)Error in C:\Program Files\MATLAB\R2012a\toolbox\globaloptim\globaloptim\private\globalsearchnlp.p>i_calcPenalty (line 627)Error in C:\Program Files\MATLAB\R2012a\toolbox\globaloptim\globaloptim\private\globalsearchnlp.p>globalsearchnlp (line 343)Error in GlobalSearch/run (line 330) [x,fval,exitflag,output] = ...Error in Optimization_Setup (line 62)run(gs,problem)
I believe the problem is outlined by the lines:
Error using - Matrix dimensions must agree.Error in GlobalSearch/run (line 330) [x,fval,exitflag,output] = ...
Any tips are highly appreciated. Please let me know if you have any questions.
Best Answer