MATLAB中LINGO软件及数学规划问题应用

本篇文章,主要是熟悉lingo软件操作,利用lingo软件对线性规划和非线性规划问题的求解。

求解非线性规划问题(用lingo)

 解:代码如下所示;

max=2*x1+3*x1^2+3*x2+x2^2+x3;
x1+2*x1+x2+2*x2^2+x3<=10;
x1+x1^2+x2+x2^2-x3<=150;
2*x1+x1^2+2*x2+x3<=40;
x1+x3=2;
x1+2*x2>=1;
x1>=0;

最终符合条件的值为:x1=0,x2=1.765564,x3=2。其中最大值为:10.41391

 图  lingo解出的符合条件的最优解

 

某工厂利用两种原料甲、乙生产ABC三种产品,每月可供应的原材料数量(单位:t)、每万件产品所需各种原料的数量及每万件产品的价格如下表所示:

原料

每万件产品所需原料/t

每月原料供应量/t

A

B

C

4

3

1

180

2

6

3

200

价格/万元

12

5

4

试制定每月最优生产计划,使得总收益最大。

解:根据题意,列出方程为:设a,b,c三种材料分别为:x1,x2,x3.

max=12*x1+5*x2+4*x3;
4*x1+3*x2+x3<=180;
2*x1+6*x2+3*x3<=200;

 当每月使用a材料34t,c材料44t时,所取的利益最大为:584万元。

 

 

有四个工人,要指派他们分别完成4项工作,每人做各项工作所消耗的时间如下表:

 问指派哪个人去完成哪项工作,可使总的消耗时间为最小?

解:代码如下:其中a是每个工人做每件工作所消耗的时间,x代表甲、乙、丙、丁四人。

model:
sets:
person/1..4/;
time/1..4/;
links(person,time):a,x;
endsets
data:
a=15,18,21,24,19,23,22,18,26,17,16,19,19,24,23,17;
enddata
min=@sum(links:a*x);
@for(person(i):@sum(time(j):x(i,j))<=1);
@for(time(i):@sum(person(j):x(j,i))=1);
@for(links:@bin(x));

解得:甲做b工作,乙做a工作,丙做c工作,丁做d工作。总共耗时70小时。

下面是用lingo软件,解得的符合条件的最优解。

Global optimal solution found.

  Objective value:                              70.00000

  Objective bound:                              70.00000

  Infeasibilities:                              0.000000

  Extended solver steps:                               0

  Total solver iterations:                             0

  Model Class:                                      PILP

  Total variables:                     16

  Nonlinear variables:                  0

  Integer variables:                   16

  Total constraints:                    9

  Nonlinear constraints:                0

  Total nonzeros:                      48

  Nonlinear nonzeros:                   0

                                Variable           Value        Reduced Cost

                                A( 1, 1)        15.00000            0.000000

                                A( 1, 2)        18.00000            0.000000

                                A( 1, 3)        21.00000            0.000000

                                A( 1, 4)        24.00000            0.000000

                                A( 2, 1)        19.00000            0.000000

                                A( 2, 2)        23.00000            0.000000

                                A( 2, 3)        22.00000            0.000000

                                A( 2, 4)        18.00000            0.000000

                                A( 3, 1)        26.00000            0.000000

                                A( 3, 2)        17.00000            0.000000

                                A( 3, 3)        16.00000            0.000000

                                A( 3, 4)        19.00000            0.000000

                                A( 4, 1)        19.00000            0.000000

                                A( 4, 2)        24.00000            0.000000

                                A( 4, 3)        23.00000            0.000000

                                A( 4, 4)        17.00000            0.000000

                                X( 1, 1)        0.000000            15.00000

                                X( 1, 2)        1.000000            18.00000

                                X( 1, 3)        0.000000            21.00000

                                X( 1, 4)        0.000000            24.00000

                                X( 2, 1)        1.000000            19.00000

                                X( 2, 2)        0.000000            23.00000

                                X( 2, 3)        0.000000            22.00000

                                X( 2, 4)        0.000000            18.00000

                                X( 3, 1)        0.000000            26.00000

                                X( 3, 2)        0.000000            17.00000

                                X( 3, 3)        1.000000            16.00000

                                X( 3, 4)        0.000000            19.00000

                                X( 4, 1)        0.000000            19.00000

                                X( 4, 2)        0.000000            24.00000

                                X( 4, 3)        0.000000            23.00000

                                X( 4, 4)        1.000000            17.00000

                                     Row    Slack or Surplus      Dual Price

                                       1        70.00000           -1.000000

                                       2        0.000000            0.000000

                                       3        0.000000            0.000000

                                       4        0.000000            0.000000

                                       5        0.000000            0.000000

                                       6        0.000000            0.000000

                                       7        0.000000            0.000000

                                       8        0.000000            0.000000

                                       9        0.000000            0.000000

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值