Home > Enterprise >  How to deal with such error when using MATLAB interior point method to handle convex optimization?
How to deal with such error when using MATLAB interior point method to handle convex optimization?

Time:11-08

When I implement such MATLAB codes to do convex optimization (the following example is similar to MATLAB official docs from here):

function [xsol,fval,history,searchdir] = runfmincon
clear;clc;
% Set up shared variables with outfun
history.x = [];
history.fval = [];
searchdir = [];
 
% Call optimization
x0 = [0.1 0.1];
options = optimoptions(@fmincon,'OutputFcn',@outfun,... 
    'Algorithm','interior-point','Display','iter');
[xsol,fval] = fmincon(@objfun,x0,[],[],[],[],[],[],@confun,options);
 
 function stop = outfun(x,optimValues,state)
     stop = false;
 
     switch state
         case 'init'
             hold on
         case 'iter'
         % Concatenate current point and objective function
         % value with history. x must be a row vector.
           history.fval = [history.fval; optimValues.fval];
           history.x = [history.x; x];
         % Concatenate current search direction with 
         % searchdir.
           searchdir = [searchdir;... 
                        optimValues.searchdirection'];
           plot(x(1),x(2),'o');
         % Label points with iteration number and add title.
         % Add .15 to x(1) to separate label from plotted 'o'.
           text(x(1) .15,x(2),... 
                num2str(optimValues.iteration));
           title('Sequence of Points Computed by fmincon');
         case 'done'
             hold off
         otherwise
     end
 end
 
 function f = objfun(x)
     f = -x(1)*x(2);
 end
 
 function [c, ceq] = confun(x)
     % Nonlinear inequality constraints
     c = [x(1)^2   x(2)^2 -1];
     % Nonlinear equality constraints
     ceq = [];
 end
end

When I run the code above, an error occurs:

出错 barrier

出错 fmincon (line 834)
    [X,FVAL,EXITFLAG,OUTPUT,LAMBDA,GRAD,HESSIAN] = barrier(funfcn,X,A,B,Aeq,Beq,l,u,confcn,options.HessFcn, ...

出错 runfmincon (line 15)
[xsol,fval] = fmincon(@objfun,x0,[],[],[],[],[],[],@confun,options);

Plus, other methods, like sqp and active-set, work fine, ONLY interior-point leads to an error. I have checked the initial point, I have NOT found any problems. How to solve that? Please help me!!! Thanks!!!

CodePudding user response:

Oh! I solved it!!! When implementing the interior-point method, just delete the parameter searchdir, and the codes corresponding to it—while for the sqp or active-set methods, keeping this parameter does not pose any problem.

  • Related