2015-03-31 34 views
0

我有一個2個不同向量的函數。這些是函數的控制向量(決策變量)。我想使用fmincon來優化這個函數,並且同時得到兩個控制向量結果。 我試圖使用句柄@,但我得到一個錯誤。 功能是:如何使用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行)沒有足夠的輸入參數。 (funfcn {3},X,varargin {:});這個錯誤在fmincon(line 564) initVals.f = feval(funfcn {3},X,varargin {:}); (','),[],[],[],VLB,VUB,@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@。 (X,SV)myCon(SV),選項);

感謝

回答

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是不優化的變量,然後「凍結它與上述鏈路表明

相關問題