整数规划模型的编程求解

1.掌握Lingo软件中变量定界函数,集合循环函数和@IF(条件,true结果,false结果)

2. 熟悉运输问题的数学模型,掌握简单运输问题数学模型的Lingo软件编程求解的方法,掌握解报告的内容

3. 掌握整数规划、0-1规划和指派问题的计算机求解方法。

1.求解下面混合整数规划

min z=-3x1+4x2-2x3+5x4;

4x1-x2+2x3-x4=-2;

x1+x2+3x3-x414;

-2x1+3x2-x3+2x42;

x1为整数,x2=0或1,x30,x4无约束;

源程序

 min=-3*x1+4*x2-2*x3+5*x4;

4*x1-x2+2*x3-x4=-2;

x1+x2+3*x3-x4<=14;

-2*x1+3*x2-x3+2*x4>=2;

@GIN(x1);

@BIN(x2);

end

运算结果:

  Global optimal solution found.

  Objective value:                              9.000000

  Objective bound:                              9.000000

  Infeasibilities:                              0.000000

  Extended solver steps:                               0

  Total solver iterations:                             6

                       Variable           Value        Reduced Cost

                             X1        0.000000            17.00000

                             X2        1.000000           -1.000000

                             X3        0.000000            8.000000

                             X4        1.000000            0.000000

                            Row    Slack or Surplus      Dual Price

                              1        9.000000           -1.000000

                              2        0.000000            5.000000

                              3        14.00000            0.000000

                              4        3.000000            0.000000

当x2=1,x4=1时,有最小值为9

2、有4种机械要分别装在4个工地,它们在4个工地的工作效率不同,问应如何指派安排,才能使4台机械发挥总的效率最大?效率表如下:

工地

机器

30

32

35

28

25

35

40

43

40

30

34

32

32

36

27

38

源程序:

sets:

men/1..4/:m;

site/1..4/:t;

link(men,site):c,x;

endsets

data:

c=30 25 40 32

  32 35 30 36

  35 40 34 27

  28 43 32 38;

end data

max=@sum(link(i,j):c(i,j)*x(i,j));

@for(men(i):@sum(site(j):x(i,j))=1);

@for(site(j):@sum(men(i):x(i,j))=1);

@for(link:@bin(x));!@bin表示的是0,1变量是对题目的约束进行简化的有效函数

end

运算结果:

   Objective value:                              154.0000

  Objective bound:                              154.0000

  Infeasibilities:                              0.000000

  Extended solver steps:                               0

  Total solver iterations:                             0

  Elapsed runtime seconds:                          0.10

  Model Class:                                      MILP

  Total variables:                     24

  Nonlinear variables:                  0

  Integer variables:                   16

  Total constraints:                    9

  Nonlinear constraints:                0

  Total nonzeros:                      48

  Nonlinear nonzeros:                   0

                                Variable           Value        Reduced Cost

                                   M( 1)        0.000000            0.000000

                                   M( 2)        0.000000            0.000000

                                   M( 3)        0.000000            0.000000

                                   M( 4)        0.000000            0.000000

                                   T( 1)        0.000000            0.000000

                                   T( 2)        0.000000            0.000000

                                   T( 3)        0.000000            0.000000

                                   T( 4)        0.000000            0.000000

                                C( 1, 1)        30.00000            0.000000

                                C( 1, 2)        25.00000            0.000000

                                C( 1, 3)        40.00000            0.000000

                                C( 1, 4)        32.00000            0.000000

                                C( 2, 1)        32.00000            0.000000

                                C( 2, 2)        35.00000            0.000000

                                C( 2, 3)        30.00000            0.000000

                                C( 2, 4)        36.00000            0.000000

                                C( 3, 1)        35.00000            0.000000

                                C( 3, 2)        40.00000            0.000000

                                C( 3, 3)        34.00000            0.000000

                                C( 3, 4)        27.00000            0.000000

                                C( 4, 1)        28.00000            0.000000

                                C( 4, 2)        43.00000            0.000000

                                C( 4, 3)        32.00000            0.000000

                                C( 4, 4)        38.00000            0.000000

                                X( 1, 1)        0.000000           -30.00000

                                X( 1, 2)        0.000000           -25.00000

                                X( 1, 3)        1.000000           -40.00000

                                X( 1, 4)        0.000000           -32.00000

                                X( 2, 1)        0.000000           -32.00000

                                X( 2, 2)        0.000000           -35.00000

                                X( 2, 3)        0.000000           -30.00000

                                X( 2, 4)        1.000000           -36.00000

                                X( 3, 1)        1.000000           -35.00000

                                X( 3, 2)        0.000000           -40.00000

                                X( 3, 3)        0.000000           -34.00000

                                X( 3, 4)        0.000000           -27.00000

                                X( 4, 1)        0.000000           -28.00000

                                X( 4, 2)        1.000000           -43.00000

                                X( 4, 3)        0.000000           -32.00000

                                X( 4, 4)        0.000000           -38.00000

                                     Row    Slack or Surplus      Dual Price

                                       1        154.0000            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. 现在要在五个工人中确定四个人来分别完成四项工作中的一项工作。由于每个工人的技术特长不同,他们完成各项工作所需的工时也不同。每个工人完成各项工作所需工时如下表所示,试找出一个工作分配方案,使总工时最小。

A

B

C

D

9

4

3

7

4

6

5

6

5

4

7

5

7

5

2

3

10

6

7

4

源程序:

sets:

men/1..5/:m;

task/1..4/:t;

link(men,task):c,x;

endsets

data:

c=9 4 3 7

  4 6 5 6

  5 4 7 5

  7 5 2 3

  10 6 7 4;

end data

min=@sum(link(i,j):c(i,j)*x(i,j));

@for(men(i):@sum(task(j):x(i,j))<=1);

@for(task(j):@sum(men(i):x(i,j))=1);

@for(link:@bin(x));!@bin表示的是0,1变量是对题目的约束进行简化的有效函数

end

运算结果:

Global optimal solution found.

  Objective value:                              14.00000

  Objective bound:                              14.00000

  Infeasibilities:                              0.000000

  Extended solver steps:                               0

  Total solver iterations:                             0

                       Variable           Value        Reduced Cost

                          M( 1)        0.000000            0.000000

                          M( 2)        0.000000            0.000000

                          M( 3)        0.000000            0.000000

                          M( 4)        0.000000            0.000000

                          M( 5)        0.000000            0.000000

                          T( 1)        0.000000            0.000000

                          T( 2)        0.000000            0.000000

                          T( 3)        0.000000            0.000000

                          T( 4)        0.000000            0.000000

                       C( 1, 1)        9.000000            0.000000

                       C( 1, 2)        4.000000            0.000000

                       C( 1, 3)        3.000000            0.000000

                       C( 1, 4)        7.000000            0.000000

                       C( 2, 1)        4.000000            0.000000

                       C( 2, 2)        6.000000            0.000000

                       C( 2, 3)        5.000000            0.000000

                       C( 2, 4)        6.000000            0.000000

                       C( 3, 1)        5.000000            0.000000

                       C( 3, 2)        4.000000            0.000000

                       C( 3, 3)        7.000000            0.000000

                       C( 3, 4)        5.000000            0.000000

                       C( 4, 1)        7.000000            0.000000

                       C( 4, 2)        5.000000            0.000000

                       C( 4, 3)        2.000000            0.000000

                       C( 4, 4)        3.000000            0.000000

                       C( 5, 1)        10.00000            0.000000

                       C( 5, 2)        6.000000            0.000000

                       C( 5, 3)        7.000000            0.000000

                       C( 5, 4)        4.000000            0.000000

                       X( 1, 1)        0.000000            9.000000

                       X( 1, 2)        0.000000            4.000000

                       X( 1, 3)        1.000000            3.000000

                       X( 1, 4)        0.000000            7.000000

                       X( 2, 1)        1.000000            4.000000

                       X( 2, 2)        0.000000            6.000000

                       X( 2, 3)        0.000000            5.000000

                       X( 2, 4)        0.000000            6.000000

                       X( 3, 1)        0.000000            5.000000

                       X( 3, 2)        1.000000            4.000000

                       X( 3, 3)        0.000000            7.000000

                       X( 3, 4)        0.000000            5.000000

                       X( 4, 1)        0.000000            7.000000

                       X( 4, 2)        0.000000            5.000000

                       X( 4, 3)        0.000000            2.000000

                       X( 4, 4)        1.000000            3.000000

                       X( 5, 1)        0.000000            10.00000

                       X( 5, 2)        0.000000            6.000000

                       X( 5, 3)        0.000000            7.000000

                       X( 5, 4)        0.000000            4.000000

                            Row    Slack or Surplus      Dual Price

                              1        14.00000           -1.000000

                              2        0.000000            0.000000

                              3        0.000000            0.000000

                              4        0.000000            0.000000

                              5        0.000000            0.000000

                              6        1.000000            0.000000

                              7        0.000000            0.000000

                              8        0.000000            0.000000

                              9        0.000000            0.000000

                             10        0.000000            0.000000

所以:第一个工人做C任务,第二个工人做A任务,第三个工人做B任务,第四个工人做D任务

4. 完成课件中的小学设点问题。

作业1:
      某市为方便学生上学,拟在新建的居民小区增设若干所小学。已知备选校址代号及其能覆盖的居民小区编号如表所示,问为覆盖所有小区至少应建多少所小学?

解:设:0--1变量 xi = 1 (第i 个备选校址被选用)或 0 (第i 个备选校址没被选用)。这样我们可建立如下的数学模型:

Min z=x1+x2+x3+x4+x5+x6;

x1+x2+x3>=1;

x2+x4>=1;   

x3+x5>=1;

x4+x6>=1;

x1+x2+x3+x4>=1;

x5+x6>=1;

x1=1;

利用lingo模型求解源代码:

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

x1+x2+x3>=1;

x2+x4>=1;

x3+x5>=1;

x4+x6>=1;

x1+x2+x3+x4>=1;

x5+x6>=1;

x1=1;

  Global optimal solution found.

  Objective value:                              3.000000

  Infeasibilities:                              0.000000

  Total solver iterations:                             3

  Elapsed runtime seconds:                          0.07

  Model Class:                                        LP

  Total variables:                      5

  Nonlinear variables:                  0

  Integer variables:                    0

  Total constraints:                    7

  Nonlinear constraints:                0

  Total nonzeros:                      18

  Nonlinear nonzeros:                   0

                                Variable           Value        Reduced Cost

                                      X1        1.000000            0.000000

                                      X2        0.000000            1.000000

                                      X3        0.000000            0.000000

                                      X4        1.000000            0.000000

                                      X5        1.000000            0.000000

                                      X6        0.000000            0.000000

                                     Row    Slack or Surplus      Dual Price

                                       1        3.000000           -1.000000

                                       2        0.000000            0.000000

                                       3        0.000000            0.000000

                                       4        0.000000           -1.000000

                                       5        0.000000           -1.000000

                                       6        1.000000            0.000000

                                       7        0.000000            0.000000

                                       8        0.000000           -1.000000

解答:至少建三个小学,校址代码为A、D、E。

5.完成课件中的篮球队员选拔问题。

        某篮球队有8名队员,其身高和专长如下表,现要选拔5名球员上场参赛,要求:
(1)中锋只有1人上场
(2)后卫至少有一人上场
(3)只有2号上场,6号才上场
要求平均身高最高,应如何选拔队员?

解:设:0--1变量 xi = 1 (第i 个队员被选中)或 0 (第i 个队员没被选用)。这样我们可建立如下的数学模型:

利用lingo模型求解源代码:

max=0.2*(1.92*x1+1.90*x2+1.88*x3+1.86*x4+1.85*x5+1.83*x6+1.80*x7+1.78*x8);

x1+x2+x3+x4+x5+x6+x7+x8=5;

x1+x2=1;

x6+x7+x8>=1;

x6<=x2;

@bin(x1);@bin(x2);@bin(x3);@bin(x4);@bin(x5);@bin(x6);@bin(x7);@bin(x8);

  Global optimal solution found.

  Objective value:                              1.864000

  Objective bound:                              1.864000

  Infeasibilities:                              0.000000

  Extended solver steps:                               0

  Total solver iterations:                             0

  Elapsed runtime seconds:                          0.05

  Model Class:                                      PILP

  Total variables:                      8

  Nonlinear variables:                  0

  Integer variables:                    8

  Total constraints:                    5

  Nonlinear constraints:                0

  Total nonzeros:                      23

  Nonlinear nonzeros:                   0

                                Variable           Value        Reduced Cost

                                      X1        0.000000          -0.3840000

                                      X2        1.000000          -0.3800000

                                      X3        1.000000          -0.3760000

                                      X4        1.000000          -0.3720000

                                      X5        1.000000          -0.3700000

                                      X6        1.000000          -0.3660000

                                      X7        0.000000          -0.3600000

                                      X8        0.000000          -0.3560000

                                     Row    Slack or Surplus      Dual Price

                                       1        1.864000            1.000000

                                       2        0.000000            0.000000

                                       3        0.000000            0.000000

                                       4        0.000000            0.000000

                                       5        0.000000            0.000000

解答:应当选择2,3,4,5,6号队员上场,平均身高1.864。

 

 

 

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tech行者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值