0

在matlab哪里可以找到障碍函数的实现?我正在尝试查看算法interior-point是如何实现的,这就是我最后发现的fmincon.m

elseif strcmpi(OUTPUT.algorithm,interiorPoint)
    defaultopt.MaxIter = 1000; defaultopt.MaxFunEvals = 3000; defaultopt.TolX = 1e-10;
    defaultopt.Hessian = 'bfgs';
    mEq = lin_eq + sizes.mNonlinEq + nnz(xIndices.fixed); % number of equalities
    % Interior-point-specific options. Default values for lbfgs memory is 10, and 
    % ldl pivot threshold is 0.01
    options = getIpOptions(options,sizes.nVar,mEq,flags.constr,defaultopt,10,0.01); 

    [X,FVAL,EXITFLAG,OUTPUT,LAMBDA,GRAD,HESSIAN] = barrier(funfcn,X,A,B,Aeq,Beq,l,u,confcn,options.HessFcn, ...
        initVals.f,initVals.g,initVals.ncineq,initVals.nceq,initVals.gnc,initVals.gnceq,HESSIAN, ...
        xIndices,options,optionFeedback,finDiffFlags,varargin{:});

所以我想看看有什么障碍但失败了。

edit barrier.m

我有: 在此处输入图像描述

4

1 回答 1

1

障碍函数在p 文件中定义(精确位于MATLABROOT/toolbox/optim/optim/barrier.p)。

不幸的是,p 文件的关键在于它们被混淆了,您无法阅读源代码。这是关于 SO 的一个反复出现的问题,例如,请参阅此线程。

恐怕你看不懂里面的东西barrier。也许如果你好心地询问 Mathworks,他们可以给你一些关于内容的信息。

最好的

于 2015-06-16T04:42:52.283 回答