如何使用fmincon优化函数的两个控制向量

时间:2015-03-31 13:13:14

标签: matlab optimization

我有2个不同的矢量功能。这些是函数的控制向量(决策变量)。我想使用fmincon来优化此函数,并分别获得两个控制向量结果。 我试过使用句柄,@,但是我收到了一个错误。 功能是:

function f = myFS(x,sv)      % x is a vector (5,1)
    f = norm(x)^2-sigma*(sv(1)+sv(2));
end

%%我试着写fmincone来考虑两个控制向量(x和sv)

  [Xtemp(:,h2),Fval, fiasco] = fmincon(@(x,sv)myFS(x,sv)...
,xstart,[],[],[],[],VLB,VUB,@(x,sv)myCon(sv),options);

这是我得到的错误:

  

使用myFS时出错(第12行)没有足够的输入参数。

     

fmincon出错(第564行)         initVals.f =         feval(funfcn {3},X,varargin {:});

     

main_Econstraint中的错误(第58行)[Xtemp(:,h2),Fval,fiasco] =   fmincon( 'myFS',XSTART,[],[],[],[],VLB,VUB,@(X,SV)myCon(SV),选项);

由于

1 个答案:

答案 0 :(得分:1)

fmincon希望你的函数是一个变量,没有解决这个问题,但请看:

http://se.mathworks.com/help/optim/ug/passing-extra-parameters.html

例如,如果x,cv都是优化的变量,你可以将它们组合起来,然后将它们分成实际目标

例如

x_cv = vertcat(x, cv)然后x = x_cv(1:5); cv = x_cv(6:end)'

如果cv不是优化的变量,那么'冻结它'如上面的链接所示