3. 用MATLAB优化工具箱解线性规划和非线性规划
Posted sunchuangyu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3. 用MATLAB优化工具箱解线性规划和非线性规划相关的知识,希望对你有一定的参考价值。
线性规划
题目:
linprog找目标函数在约束条件下的最小值。
放题
第0问
假设生产甲饮料x百箱,乙饮料y百箱,利润为z
上代码
c=[-10 -9];%因为linprog找的是最小值,所以这个地方取相反数。 % <=条件约束 A=[6 5; 10 20]; b=[60; 150]; % =条件约束 Aeq=[]; beq=[]; %变量范围约束 vlb=[0,0]; vub=[]; [x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub);
运行结果
当X =642 Y = 428 时候大概取最优值(是不是X应该多一个或者Y少一个,我懒得算了,正式比赛再说)
此时利润 Z = 102.72
非线性规划也很简单
1.首先建立M文件fun.m,定义目标函数F(x):
function f= =fun (X) ;
f= =F(X) ;
2. 若约束条件中有非线性约束:G(X)或Ceq(X)=0,则建立M文件nonlcon.m定义函数G(X)与Ceq(X):
function [G,Ceq]=nonlcon(X)
G=...
Ceq=...
3.建立主程序.非线性规划求解的函数是fmincon,命令的基本格式如下:
(1)x=fmincon( ‘fun‘ ,Xo,A,b)
(2) x=fmincon( ‘fun‘ ,Xo,A,b, Aeq, beq)
(3) x=fmincon( ‘fun‘ ,Xo,A,b, Aeq, beq, VLB, VUB)
(4) x=fmincon( ‘fun‘ ,Xo,A,b, Aeq, beq, VLB, VUB, ‘ nonlcon‘ )
(5)x-fmincon( ‘fun‘ ,Xo,A,b, Aeq, beq, VLB, VUB, ‘nonlcon‘ ,options)
(6) [x, fval]= fmincon(...)
(7) [x, fval,exitflag]= fmincon(...)
function f=fun3(x); f=-x(1)-2*x(2)+(1/2)*x(1)^2+(1/2)*x(2)^2
(8) [x, fval, exi tflag, output]= fmincon(.. .)
非线性案例
案例1
代码:
fun.m
function f=fun(x); f=-x(1)-2*x(2)+(1/2)*x(1)^2+(1/2)*x(2)^2
main.m
x0=[1;1]; A=[2 3 ;1 4]; b=[6;5]; Aeq=[];beq=[]; VLB=[0;0]; VUB=[]; [x,fval]=fmincon(‘fun‘,x0,A,b,Aeq,beq,VLB,VUB)
结果
x =
0.7647
1.0588
fval =
-2.0294
案例二
fun.m
function f=fun(x); f=-2*x(1)-x(2);
mycon.m
function [g,ceq]=mycon(x) g=[x(1)^2+x(2)^2-25;x(1)^2-x(2)^2-7]; ceq = [];
main.m
x0=[3;2.5]; A=[];b=[]; Aeq=[];beq=[]; vlb=[0 0];vub=[5 10]; [x,fval]=fmincon(‘fun‘,x0,A,b,Aeq,beq,vlb,vub,‘mycon‘)
解得结果是
x =
4.0000
3.0000
fval =
-11.0000
标准型为: min F(X)
s.t AX<=b G(X)
Ceq(X)=0 VLBXVUB
![endif]-->!--[if>!--[endif]-->!--[if>![endif]-->!--[if>![endif]-->!--[if>!--[endif]-->!--[if>![endif]-->!--[if>![endif]-->!--[if>!--[endif]-->!--[if>![endif]-->以上是关于3. 用MATLAB优化工具箱解线性规划和非线性规划的主要内容,如果未能解决你的问题,请参考以下文章