⑴ matlab優化工具箱中fmincon函數應用
fmincon是用來做條件極值問題的,他需要調用你事先編好的函數,這應該是你編寫子函數的時候出現了問題。
⑵ 求matlab中fmincon函數格式的中文解釋謝謝!!
優化工具箱提供fmincon函數用於對有約束優化問題進行求解,其語法格式如下:
x= fmincon(fun,x0,A,b)
x= fmincon(fun,x0,A,b,Aeq,beq)
x= fmincon(fun,x0,A,b,Aeq,beq,lb,ub)
x= fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
x= fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
x= fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2, ...)
[x,fval]= fmincon(...)
[x,fval,exitflag]= fmincon(...)
[x,fval,exitflag,output]= fmincon(...)
其中,x, b, beq, lb,和ub為線性不等式約束的上、下界向量, A 和 Aeq 為線性不等式約束和等式約束的系數矩陣矩陣,fun為目標函數,nonlcon為非線性約束函數。
顯然,其調用語法中有很多和無約束函數fminunc的格式是一樣的,其意義也相同,在此不在重復介紹。對應上述調用格式的解釋如下:
x
= fmincon(fun,x0,A,b) 給定初值x0,求解fun函數的最小值x。fun函數的約束條件為A*x
<= b,x0可以是標量或向量。
x
= fmincon(fun,x0,A,b,Aeq,beq) 最小化fun函數,約束條件為Aeq*x
= beq 和 A*x <= b。若沒有不等式線性約束存在,則設置A=[]、b=[]。
x
= fmincon(fun,x0,A,b,Aeq,beq,lb,ub) 定義設計變數x的線性不等式約束下界lb和上界ub,使得總是有lb
<= x <= ub。若無等式線性約束存在,則令Aeq=[]、beq=[]。
x
= fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon) 在上面的基礎上,在nonlcon參數中提供非線性不等式c(x)或等式ceq(x)。
fmincon函數要求c(x) <= 0且ceq(x)
= 0。
x= fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options) 用options參數指定的參數進行最小化。
x= fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2,...) 將問題參數P1, P2等直接傳遞給函數fun和nonlin。若不需要這些變數,則傳遞空矩陣到A, b, Aeq, beq, lb, ub, nonlcon和 options。
[x,fval]= fmincon(...) 返回解x處的目標函數值到fval。
[x,fval,exitflag]= fmincon(...) 返回exitflag參數,描述函數計算的有效性,意義同無約束調用。
[x,fval,exitflag,output]= fmincon(...) 返回包含優化信息的輸出參數output。
非線性不等式約束nonlcon的定義方法
該參數計算非線性不等式約束c(x)<=0 和非線性等式約束ceq(x)=0。 nonlcon 參數是一個包含函數名的字元串。該函數可以是M文件、內部文件或MEX文件。它要求輸入一個向量x,返回兩個變數—解x處的非線性不等式向量c和非線性等式向量ceq。例如,若nonlcon='mycon',則M文件mycon.m須具有下面的形式:
function[c,ceq] = mycon(x)
c= ... % 計算x處的非線性不等式。
ceq= ... % 計算x處的非線性等式。
若還計算了約束的梯度,即options = optimset('GradConstr','on')
則nonlcon函數必須在第三個和第四個輸出變數中返回c(x)的梯度GC和ceq(x)的梯度Gceq。
function[c,ceq,GC,GCeq] = mycon(x)
c = ... % 解x處的非線性不等式。
ceq = ... % 解x處的非線性等式。
if nargout > 2 % 被調用的nonlcon函數,要求有4個輸出變數。
GC = ... % 不等式的梯度。
GCeq = ... % 等式的梯度。
end
⑶ "matlab"優化工具箱中fmincon命令中函數fun要求有參量傳遞怎麼辦
用 y = fmincon(@f12,x0,A,b,[],[],lb,[],a,b);就可以了。
即,將參數放在專[x,fopt,flag,c]=fmincon(F,x0,A,B,Aeq,Beq,xm,xM,CF,OPT,p1,p2);中的屬p1、p2處就可以了
⑷ matlab優化函數fmincon函數的問題
1、是不是局部最優可以通過退出代碼exitflag輔助判斷。至於說全局最優,沒有哪版種優化方法能夠保證,即使用全權局優化工具箱中的遺傳演算法之類的,也只是增加得到全局最優解的機會。
2、那個警告沒影響,可以忽略,不想看到的話,也可以關閉或通過指定演算法來避免。
3、受字數限制,代碼只能貼圖片,但這樣我沒法測試,只能給你提這些建議。必要時,可以考慮通過網盤或博客上傳代碼。或者私信也可以。
⑸ VB直接調用Matlab最優化工具箱函數FMINCON
請問你解決了嗎,我現在能轉化為dll,但是vb編程時,fmincon的目標函數在裡面總出錯
⑹ 在matlab中,使用優化工具箱fmincon,計算一個優化問題,但報錯了,求大神講解
目標函數(Objective function)應該設置為@(x)-x(1)*x(2)*x(3),像你現在的目標函數是需要三個輸入參數的,而fmincon調用它的時候只會提供一個參數,所以導致輸入參數不足。
另外,像這種簡單的優化問題,其實也可以直接用命令行調用:
fmincon(@(x)-x(1)*x(2)*x(3),[10 10 10],[-1 -2 -2;1 2 2],[0 72])
⑺ matlab fmincon函數用法
matlab fmincon函數用法如抄下:
1、給襲定初值x0,求解fun函數的最小值x。fun函數的約束條件為A*x<= b,x0可以是標量或向量。
2、返回exitflag參數,描述函數計算的有效性,意義同無約束調用。
3、返回包含優化信息的輸出參數output。
(7)mathlab工具箱fmincon擴展閱讀:
fmincon函數用法注意事項:
對於默認的「內點」演算法,fmincon將違反邊界lb≤x≤ub或等於邊界的x0分量設置為邊界區域的內部。對於「信賴域反射」演算法,fmincon將違反分量設置為邊界區域的內部。對於其他演算法,fmincon將違反組件設置為最接近的界。
fmincon作用:
fmincon用於求解非線性多元函數最小值的matlab函數,優化工具箱提供fmincon函數用於對有約束優化問題進行求解。
參考資料:fmincon-網路
⑻ 裝matlab時沒裝上fmincon函數怎麼辦
fmincon在matlab的優化工具箱里,你需要安裝的時候把optimization toolbox打勾
你現在得重新安裝一下
⑼ matlab優化工具箱裡面的fmincon用的是哪個優化演算法啊
幫助文件里,有介紹的:對於大規模優化問題,採用一種子空間信賴域演算法(基於內點反射牛頓演算法);對於中等規模優化問題,採用的是SQP序列二次規劃演算法。