码迷,mamicode.com
首页 > 其他好文 > 详细

3. 用MATLAB优化工具箱解线性规划和非线性规划

时间:2020-08-05 16:55:38      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:auto   led   err   目标   EDA   put   mini   假设   options   

线性规划

题目:

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    VLB技术图片X技术图片VUB

3. 用MATLAB优化工具箱解线性规划和非线性规划

标签:auto   led   err   目标   EDA   put   mini   假设   options   

原文地址:https://www.cnblogs.com/SunChuangYu/p/13440222.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!