0
我這樣做MatLab fmincon約束優化「輸入參數不足」。
function f=objfun(w)
a=0.5
w0=[0.1;0.2;0.3];
f=(a^2)/2 + w(1)+ w(2)+ w(3);
[w,fval]=fmincon('objfun',w0,[],[],[],[],[],[],'constraint')
但我得到這個錯誤訊息。
Error using objfun (line 3)
Not enough input arguments.
它說什麼問題?
我從
http://www.math.colostate.edu/~gerhard/classes/331/lab/fmincon.html
瞭解到fmincon
,它告訴我,像這樣
function f=objfun(x)
f=x(1)^4-x(1)^2+x(2)^2-2*x(1)+x(2);
代碼將是第一線做約束優化。
出了什麼問題?
您的代碼混合在一起,例如你在objfun中定義'w0'。而且,'fmincon'至少需要四個輸入參數:'(fun,x0,A,b)'。也許你應該首先從文檔中瞭解這個功能:http://www.mathworks.com/help/optim/ug/fmincon.html –
你學習Matlab的第一件事:在使用或學習新的函數,在Matlab命令窗口中鍵入'help nameoffunction'並讀取。然後(或者相反),您可以單擊幫助底部的鏈接,也可以鍵入'doc nameoffunction'在一個漂亮的瀏覽器窗口中深入閱讀。使用Google搜索功能的名稱應該只在您耗盡這些資源並且意識到您發現的內容可能不適用於您的Matlab版本之後才能完成。 – horchler
@ A.Donda最初我爲我的代碼寫了一個簡化版本的stackoverflow。但在我的代碼中,fmincon就像[x,fval] = fmincon('objfun',w0,[],[],[],[],[],[],'constraint'),所以輸入參數的不足不是問題。 – user1849133