数学建模与数学实验(第五版)第3章线性规划答案

Lingo求解

model:

min=300*x1+180*x2;

x1+x2=0.5;

x1>=0.5*0.2;

7000*x2<=6000;

end

 结果

 Global optimal solution found.

  Objective value:                              102.0000

  Infeasibilities:                              0.000000

  Total solver iterations:                             0

                       Variable           Value        Reduced Cost

                             X1       0.1000000            0.000000

                             X2       0.4000000            0.000000

                            Row    Slack or Surplus      Dual Price

                              1        102.0000           -1.000000

                              2        0.000000           -180.0000

                              3        0.000000           -120.0000

                              4        3200.000            0.000000

MATLAB解答:

c=[2,3,5,3,3,6];

A=[1,2,3,0,0,0;0,0,0,1,1,3];

b=[80;100];

Aeq=[1,0,0,1,0,0;0,1,0,0,1,0;0,0,1,0,0,1];

beq=[70;50;20];

vlb=zeros(6,1);

[x,fval]=linprog(c,A,b,Aeq,beq,vlb)

结果:x =       

70.0000    

0.0000           

3.3333    

0.0000   

50.0000  

16.6667

fval = 

406.6667

答:

MATLAB解题:

% 目标函数

f = [12 5 4 12 5 4];

% 不等式约束

a = [4 3 1 0 0 0;0 0 0 2 6 3];

b = [180;200];

% 等式约束

aeq = [];

beq = [];

% 上下限

vlb = zeros(6,1);

vub = [];

[x,fval] = linprog(-f,a,b,aeq,beq,vlb,vub)

计算结果:

x =

     0

     0

   180

   100

     0

     0

fval =

        -1920

每班的护士在值班始时向病房报到,连续工作8h.医院领导为满足每班所需要的护士数,最少需要雇佣多少护士?

lingo模型求解:

min=x1+x2+x3+x4+x5+x6;

x1+x6>=60;

x1+x2>=70;

x2+x3>=60;

x3+x4>=50;

x4+x5>=20;

x5+x6>=30;

@gin(x1);@gin(x2);@gin(x3);@gin(x4);@gin(x5);@gin(x6);

end

Global optimal solution found.

  Objective value:                              150.0000

  Objective bound:                              150.0000

  Infeasibilities:                              0.000000

  Extended solver steps:                               0

  Total solver iterations:                             4

                       Variable           Value        Reduced Cost

                             X1        60.00000            1.000000

                             X2        10.00000            1.000000

                             X3        50.00000            1.000000

                             X4        0.000000            1.000000

                             X5        30.00000            1.000000

                             X6        0.000000            1.000000

                            Row    Slack or Surplus      Dual Price

                              1        150.0000           -1.000000

                              2        0.000000            0.000000

                              3        0.000000            0.000000

                              4        0.000000            0.000000

                              5        0.000000            0.000000

                              6        10.00000            0.000000

                              7        0.000000            0.000000

答:最少需要雇佣150个护士。

1、MATLAB编程语句:

%目标函数的系数矩阵

f=-[6 4];

%设x1、x2为整数变量

intcon=[1,2];

%不等式约束的系数矩阵和资源数

a=[2 3;4 2];

b=[100;120];

%该模型不存在等式约束,用[]来表示

aeq=[];

beq=[];

%下限设为一个两行一列的矩阵,矩阵的每个量都为零,上限不限制

vlb=zeros(2,1);

vub=[];

[x,fval]=intlinprog(f,intcon,a,b,aeq,beq,vlb,vub)

运行结果:

x =

    20

    20

fval =

  -200

则x=20,x2=20,最优解为200,即生产A1为20件,A2为20件,为最优化生产方案。

2、LINGO编程语句:

model:

title 最优生产方案;

max=6*x1+4*x2;

2*x1+3*x2<=100;

4*x1+2*x2<=120;

@gin(x1);@gin(x2);

end

运行结果:

Global optimal solution found.

  Objective value:                              200.0000

  Objective bound:                              200.0000

  Infeasibilities:                              0.000000

  Extended solver steps:                               0

  Total solver iterations:                             2

  Model Title: 最优生产方案

                       Variable           Value        Reduced Cost

                             X1        20.00000           -6.000000

                             X2        20.00000           -4.000000

                            Row    Slack or Surplus      Dual Price

                              1        200.0000            1.000000

                              2        0.000000            0.000000

                              3        0.000000            0.000000

(2)对产品A1的利润进行灵敏度分析

model:

title 最优生产方案;

max=6*x1+4*x2;

2*x1+3*x2<=100;

4*x1+2*x2<=120;

end

  Global optimal solution found.

  Objective value:                              200.0000

  Infeasibilities:                              0.000000

  Total solver iterations:                             2

  Model Title: 最优生产方案

                       Variable           Value        Reduced Cost

                             X1        20.00000            0.000000

                             X2        20.00000            0.000000

                            Row    Slack or Surplus      Dual Price

                              1        200.0000            1.000000

                              2        0.000000           0.5000000

                              3        0.000000            1.250000

分析:其中可以得出每增加一个单位的装配小时,利润增长0.5元,每增加一个单位的检验小时,利润增加1.25元。

(3)对装配工序的工时进行灵敏度分析

model:

title 最优生产方案;

max=6*x1+4*x2;

2*x1+3*x2<=100;

4*x1+2*x2<=120;

end

 Ranges in which the basis is unchanged:

                                      Objective Coefficient Ranges

                                  Current        Allowable        Allowable

                Variable      Coefficient         Increase         Decrease

                      X1         6.000000         2.000000         3.333333

                      X2         4.000000         5.000000         1.000000

                                           Righthand Side Ranges

                     Row          Current        Allowable        Allowable

                                      RHS         Increase         Decrease

                       2         100.0000         80.00000         40.00000

                       3         120.0000         80.00000         53.33333

数据记录和实验结果:

  1. MATLAB编程语句:

%目标函数的系数矩阵

f=-[6 4 5];

%设x1、x2为整数变量

intcon=[1,2,3];

%不等式约束的系数矩阵和资源数

a=[2 3 4;4 2 2];

b=[100;120];

%该模型不存在等式约束,用[]来表示

aeq=[];

beq=[];

%下限设为一个两行一列的矩阵,矩阵的每个量都为零,上限不限制

vlb=zeros(3,1);

vub=[];

[x,fval]=intlinprog(f,intcon,a,b,aeq,beq,vlb,vub)

运行结果:

x =

   23.0000

    2.0000

   12.0000

fval =

  -206

x1=23,x2=2,x3=12,最优解为206,即生产A1为23件,A2为2件,A3为12件,利润增加,可以投入生产。

2、LINGO编程语句:

model:

title 新增生产后;

max=6*x1+4*x2+5*x3;

2*x1+3*x2+4*x3<=100;

4*x1+2*x2+2*x3<=120;

@gin(x1);@gin(x2);@gin(x3);

end

运行结果:

  Global optimal solution found.

  Objective value:                              206.0000

  Objective bound:                              206.0000

  Infeasibilities:                              0.000000

  Extended solver steps:                               0

  Total solver iterations:                             5

  Model Title: 新增生产后

                       Variable           Value        Reduced Cost

                             X1        23.00000           -6.000000

                             X2        2.000000           -4.000000

                             X3        12.00000           -5.000000

                            Row    Slack or Surplus      Dual Price

                              1        206.0000            1.000000

                              2        0.000000            0.000000

                              3        0.000000            0.000000

利润在增加,可以投入生产。

MATLAB求解:

% 目标函数

f = [10 5 6 4 8 15];

% 整数变量个数

intcon = [1,2,3,4,5,6];

% 不等式约束

a = [1 1 1 0 0 0;0 0 0 1 1 1;1 0 0 1 0 0;0 1 0 0 1 0;0 0 1 0 0 1];

b = [60 100 45 75 40];

% 等式约束

aeq = [];

beq = [];

% 上下限

vlb = zeros(6,1);

vub = [];

[x,fval] = intlinprog(f,intcon,-a,-b,aeq,beq,vlb,vub)

计算结果:

x =

         0

        20

40

45

55

0

fval =

       

      960

答:A厂供煤0 ,20 ,40;B厂供煤 45 55 0.

总运输量最小为960。

Matlab求解:

% 目标函数

f=[10 6 4];

%整数变量个数

intcon = [1,2,3];

%不等式约束

a=[1 1 1;10 4 5;2 2 6];

b=[100;600;300];

%等式约束

aeq =[];

beq =[];

%上下限

vlb = zeros(3,1);

vub =[];

[x,fval]= intlinprog(-f,intcon,a,b,aeq,beq,vlb,vub)

运行结果:

x =

   33.0000

   67.0000

         0

fval =

  -732

增加至25/3:

% 目标函数

f=[10 6 25/3];

%整数变量个数

intcon = [1,2,3];

%不等式约束

a=[1 1 1;10 4 5;2 2 6];

b=[100;600;300];

%等式约束

aeq =[];

beq =[];

%上下限

vlb = zeros(3,1);

vub =[];

[x,fval]= intlinprog(-f,intcon,a,b,aeq,beq,vlb,vub)

结果:

x =

   29.0000

   46.0000

   25.0000

fval =

 -774.3333

所以产品Ⅲ增加25/3不值得

Lingo求解:

maxf=10*x1+6*x2+4*x3;

x1+x2+x3<=100;

10*x1+4*x2+5*x3<=600;

2*x1+2*x2+6*x3<=300;

@gin(x1);@gin(x2);@gin(x3);

end

结果:

  Global optimal solution found.

  Objective value:                              732.0000

  Objective bound:                              732.0000

  Infeasibilities:                              0.000000

  Extended solver steps:                               0

  Total solver iterations:                             2

                       Variable           Value        Reduced Cost

                             X1        33.00000           -10.00000

                             X2        67.00000           -6.000000

                             X3        0.000000           -4.000000

                            Row    Slack or Surplus      Dual Price

                              1        732.0000            1.000000

                              2        0.000000            0.000000

                              3        2.000000            0.000000

                              4        100.0000            0.000000

所以影子价格为0

% 目标函数

f = [10 6 4 8];

% 整数变量个数

intcon = [1,2,3,4];

% 不等式约束

a = [1 1 1 1;10 4 5 4;2 2 6 4];

b = [100;600;300];

% 等式约束

aeq = [];

beq = [];

% 上下限

vlb = zeros(4,1);

vub = [];

[x,fval] = intlinprog(-f,intcon,a,b,aeq,beq,vlb,vub)

结果:

x =

   33.0000

   17.0000

         0

   50.0000

fval =

 -832.0000

所以生产Ⅰ产品33件,生产Ⅱ产品17件,生产Ⅲ产品50件,最优利润为832.

% 目标函数

f = [10 6 4];

% 整数变量个数

intcon = [1,2,3];

% 不等式约束

a = [1 1 1;10 4 5;2 2 6;0 0 -1];

b = [100;600;300;-10];

% 等式约束

aeq = [];

beq = [];

% 上下限

vlb = zeros(3,1);

vub = [];

[x,fval] = intlinprog(-f,intcon,a,b,aeq,beq,vlb,vub)

结果:

x =

   31.0000

   59.0000

   10.0000

fval =

 -704.0000

所以生产产品Ⅰ30件,产品Ⅱ59件,产品Ⅲ10件,最优利润为704

8.已知某工厂计划生产I、Ⅱ、Ⅲ三种产品,各产品需要在A、B,C设备上加工,有关数据如下:

试回答:

(1)如何发挥生产能力,使生产盈利最大?

(2)若为了增加产量,可借用别的工厂设备B,每月可借用60台时,租金1.8万元,借用设备B是否合算?

(3)假设另有两种新产品N、V,其中新产品I需用设备A12台时、设备B5台时、设备C10台时,单位产品盈利2.1千元;新产品V需用设备A4台时、设备B4台时、设备C12台时,单位产品盈利1.87千元.如果A,B,C的设备台时不增加,问这两种新产品投产在经济上是否合算?

(4)对产品工艺重新进行设计,改进结构,改进后生产每件产品I需用设备A9台时、设备B12台时、设备C4台时,单位产品盈利4.5千元,这时对原计划有何影响?

% 目标函数

f = [3 2 2.9 3 2 2.9 3 2 2.9];

% 不等式约束

a = [8 2 10 0 0 0 0 0 0;0 0 0 10 5 8 0 0 0;0 0 0 0 0 0 2 13 10];

b = [300;400;420];

% 等式约束

aeq = [];

beq = [];

% 上下限

vlb = zeros(9,1);

vub = [];

[x,fval] = linprog(-f,a,b,aeq,beq,vlb,vub)

x =

        0

150

0

0

80

0

210

0

0

fval =

       

       -1090

答:所以A生产Ⅱ产品数150件,B生产产品Ⅱ数80件,C生产产品I数210,利润最大1090

% 目标函数

f = [3 2 2.9;3 2 2.9;3 2 2.9];

% 不等式约束

a = [8 2 10 0 0 0 0 0 0;0 0 0 10 5 8 0 0 0;0 0 0 0 0 0 2 13 10];

b = [300;460;420];

% 等式约束

aeq = [];

beq = [];

% 上下限

vlb = zeros(9,1);

vub = [];

[x,fval] = linprog(-f,a,b,aeq,beq,vlb,vub)

fval = fval-18

结果:

x =

        0

150

0

0

92

0

210

0

0

fval =

       

       -1243

fval =

-1261

由结果可知若为增量产品,是合算的

% 目标函数

f = [3 2 2.9 2.1 1.87;3 2 2.9 2.1 1.87;3 2 2.9 2.1 1.87];

% 不等式约束

a = [8 2 10 12 4 0 0 0 0 0 0 0 0 0 0;0 0 0 0 0 10 5 8 5 4 0 0 0 0 0;0 0 0 0 0 0 0 0 0 0 2 13 10 10 12];

b = [300;400;420];

% 等式约束

aeq = [];

beq = [];

% 上下限

vlb = zeros(15,1);

vub = [];

[x,fval] = linprog(-f,a,b,aeq,beq,vlb,vub)

计算结果:x =

        0

150

0

0

 80

0

      105

0

0

fval =

       

       -1.1395e+03

答:所以对产品重新设计会比原计划更盈利。

  • 30
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值