数学建模1

4.1简单生产计划问题

今天建模课学习了规划模型问题,分别用LINGO和MATLAB求解

题目可以自己提炼为几个表达式:

目标函数:max f=8*x+9*y;

约束条件有三个:

1、 3*x+4*y<=300

2、10*x+8*y<=700

3、x>=0且y>=0(下界均为零)

①LINGO

打开LINGO直接敲入

max=8*x+9*y;%目标函数
[st_1] 3*x+4*y<300;%约束条件注意LINGO中没有小(大)于等于号,只能写小(大)于号
[st_2] 10*x+8*y<700;%约束条件 st_1和st_2只是两种符号代表约束条件

输入完了之后点那个红色的圈“求解”

//观察结果

 Global optimal solution found.
  Objective value:                              706.2500 %这是目标值,也就是最后利润可以达到多少
  Infeasibilities:                              0.000000
  Total solver iterations:                             2
  Model Class:                                        LP
  Total variables:                      2
  Nonlinear variables:                  0
  Integer variables:                    0
  Total constraints:                    3
  Nonlinear constraints:                0
  Total nonzeros:                       6
  Nonlinear nonzeros:                   0
                                Variable           Value        Reduced Cost %value是决策变量的取值,即X取25,Y取56.25时,利润达到最大706.25
                                       X        25.00000            0.000000
                                       Y        56.25000            0.000000
 
                                     Row    Slack or Surplus      Dual Price  %Slack or Surplus这一列是指剩余变量,剩余变量均为0,就代表工作日和资源量这2个约束条件取了等号,全部用完
                                       1        706.2500            1.000000           %Dual Price意为对偶价格
                                    ST_1        0.000000            1.625000       %这个约束条件的对偶价格为1.625,即当工作日增加1时,最大利润增加1.625,即工作日最大为301时,最大利润为707.875
                                    ST_2        0.000000           0.3125000        %这个约束条件的对偶价格为0.3125,即当资源原量(小麦)增加1时,最大利润增加0.3125,即工作日最大为701时,最大利润为706.5625
②MATLAB
 
首先要知道用什么函数,这个要用linprog(f,A,b,Aeq,beq,[],lb)/*不知道的时候要会用help 。min f'*x    约束条件:A*x<=b;Aeq*x=beq;Aeq,beq指等式约束,本题中没有等式约束,故为空[],linprog是求极小化的问题,我们要求最大化问题,故先求最小值,再加负号即可。
 
线性规划标准模型:
min z=f*X
使得:1.AX<=b;
           2.AeqX=beq//本题无等式约束条件,故Aex 和beq均为[]
           3.lb<=x<=ub//lb为下界,ub为上界,本题,X Y下界均为0故 lb=[0;0],无上界
代码:
f=[-8 -9];
A=[3 4;10 8];
b=[300;700];
lb=[0;0];
[x fval]=linprog(f,A,b,[],[],lb)
fmax=-fval
结果:X=
25.000
56.2500
fval=
-706.2500
fmax=
706.25
 
对比LINGO和MATLAB发现,对于线性规划而言,用LINGO给出的信息更多更加方便
原文地址:https://www.cnblogs.com/lysun/p/12550811.html