二次规划与非线性规划及matlab应用
1.概念
定義:如果目標函數或約束條件中至少有一個是非線性函數時的最優化問題就叫做非線性規劃問題.
其它情況: 求目標函數的最大值或約束條件為小于等于零的情況,都可通過取其相反數化為上述一般形式.
(1)二次規劃
用MATLAB軟件求解,其輸入格式如下:
實例:
Matlab命令
運算結果為:x =0.6667 1.3333 z = -8.2222
(2)一般非線性規劃
標準型為:
其中X為n維變元向量,G(X)與Ceq(X)均為非線性函數組成的向量,其它變量的含義與線性規劃、二次規劃中相同.
非線性規劃求解的函數是fmincon,命令的基本格式如下:
? x=fmincon(‘fun’,X0,A,b)
? x=fmincon(‘fun’,X0,A,b,Aeq,beq)
? x=fmincon(‘fun’,X0,A,b, Aeq,beq,VLB,VUB)
? x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’)
? x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’,options)
? [x,fval]= fmincon(…)
? [x,fval,exitflag]= fmincon(…)
? [x,fval,exitflag,output]= fmincon(…)
1.fun為目標函數
2.x0為初始值
3.A是不等式約束AX<=b的系數矩陣
4.b是不等式約束AX<=b的常數項
4.Aeq是等式約束AeqX=beq的系數矩陣,
5.beq是等式約束AeqX=beq的常數項,
6.lb是X的下限,
7.ub是X的上限,
8.nonlcon為非線性不等式約束
9.option為設置fmincon的參數
注意:
fmincon函數提供了大型優化算法和中型優化算法。默認時,若在fun函數中提供了梯度(options參數的GradObj設置為’on’),并且只有上下界存在或只有等式約束,fmincon函數將選擇大型算法。當既有等式約束又有梯度約束時,使用中型算法。
fmincon函數的中型算法使用的是序列二次規劃法。在每一步迭代中求解二次規劃子問題,并用BFGS法更新拉格朗日Hessian矩陣。
fmincon函數可能會給出局部最優解,這與初值X0的選取有關。
實例2
實例3:
實例4
總結
以上是生活随笔為你收集整理的二次规划与非线性规划及matlab应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 本地配置DNS服务器(MAC版)
- 下一篇: matlab写函数进行坐标正反算,基于m