Lingo计算最优解

建模最后就是知道结果套过程。。

线性规划

model:
title 求解线性规划;
max=2*x1+3*x2;
2*x1+x2<8;
4*x1+3*x2<15;
end

结果:

  Global optimal solution found.
  Objective value:                              15.00000
  Infeasibilities:                              0.000000
  Total solver iterations:                             1

  Model Class:                                        LP

  Total variables:                      2
  Nonlinear variables:                  0
  Integer variables:                    0

  Total constraints:                    3
  Nonlinear constraints:                0

  Total nonzeros:                       6
  Nonlinear nonzeros:                   0


  Model Title: 求解线性规划
                                Variable           Value        Reduced Cost
                                      X1        0.000000            2.000000
                                      X2        5.000000            0.000000

                                     Row    Slack or Surplus      Dual Price
                                       1        15.00000            1.000000
                                       2        3.000000            0.000000
                                       3        0.000000            1.000000

当x1=0,x2=5时, 2 × x 1 + 3 × x 2 2×x1+3×x2 取最大值。

二次规划

model:
title 求解二次规划;
[opt]max=98*x1+277*x2-x1^2-0.3*x1*x2-2*x2^2;
[st1]x1+x2<100;
[st2]x1<2*x2;
@gin(x1);@gin(x2);
end
  Global optimal solution found.
  Objective value:                              11077.50
  Objective bound:                              11077.50
  Infeasibilities:                              0.000000
  Extended solver steps:                               4
  Total solver iterations:                           583

  Model Class:                                     PINLP

  Total variables:                      2
  Nonlinear variables:                  2
  Integer variables:                    2

  Total constraints:                    3
  Nonlinear constraints:                1

  Total nonzeros:                       6
  Nonlinear nonzeros:                   2


  Model Title: 求解二次规划
                                Variable           Value        Reduced Cost
                                      X1        35.00000           -8.500002
                                      X2        65.00000           -6.500004

                                     Row    Slack or Surplus      Dual Price
                                     OPT        11077.50            1.000000
                                     ST1        0.000000            0.000000
                                     ST2        95.00000            0.000000

下方state是全局最优解,如果是local则是局部最优,那么此时需要在options里面勾选Use Global Solver 。
在这里插入图片描述

集合段

50件商品供顾客选择,商品i占用空间为 w i w_i ,价值为 v i v_i ,车得容量为1000,怎么选择价值最大?

1.一种物品只能选一件,选或不选,利用01标致变量,放进车的体积加起来。
m a x f = i = 1 50 v i x i maxf=\sum_{i=1}^{50}v_{i}x_{i}
i = 1 50 w i x i 1000 \sum_{i=1}^{50}w_{i}x_{i}\leq1000
x i = 0 o r 1 x_{i}=0or1

model:
title 购物;
sets:
s/1..50/:w,v,x;
endsets
data:
V= 220, 208, 198, 192, 180, 180, 165, 162, 160, 158,155, 130, 125, 122, 120, 118, 115,
110, 105, 101, 100, 100, 98,96, 95, 90, 88, 82, 80, 77, 75, 73, 72, 70, 69, 66, 65, 63, 60,
58,56, 50, 30, 20, 15, 10, 8, 5, 3, 1;
W=80, 82, 85, 70, 72, 70, 66, 50, 55, 25, 50, 55, 40, 48,50, 32, 22, 60, 30, 32, 40, 38, 35,32,
25, 28, 30, 22, 50, 30, 45,30, 60, 50, 20, 65, 20, 25, 30, 10, 20, 25, 15, 10, 10, 10, 4, 4, 2,1;
enddata
max=@sum(s(i):v(i)*x(i));
@sum(s(i):w(i)*x(i))<1000;
@for(s(i):@bin(x(i)));
end
  Global optimal solution found.
  Objective value:                              3103.000
  Objective bound:                              3103.000
  Infeasibilities:                              0.000000
  Extended solver steps:                               0
  Total solver iterations:                             0

  Model Class:                                      PILP

  Total variables:                     50
  Nonlinear variables:                  0
  Integer variables:                   50

  Total constraints:                    2
  Nonlinear constraints:                0

  Total nonzeros:                     100
  Nonlinear nonzeros:                   0


  Model Title: 购物
                                Variable           Value        Reduced Cost
                                   W( 1)        80.00000            0.000000
                                   W( 2)        82.00000            0.000000
                                   W( 3)        85.00000            0.000000
                                   W( 4)        70.00000            0.000000
                                   W( 5)        72.00000            0.000000
                                   W( 6)        70.00000            0.000000
                                   W( 7)        66.00000            0.000000
                                   W( 8)        50.00000            0.000000
                                   W( 9)        55.00000            0.000000
                                  W( 10)        25.00000            0.000000
                                  W( 11)        50.00000            0.000000
                                  W( 12)        55.00000            0.000000
                                  W( 13)        40.00000            0.000000
                                  W( 14)        48.00000            0.000000
                                  W( 15)        50.00000            0.000000
                                  W( 16)        32.00000            0.000000
                                  W( 17)        22.00000            0.000000
                                  W( 18)        60.00000            0.000000
                                  W( 19)        30.00000            0.000000
                                  W( 20)        32.00000            0.000000
                                  W( 21)        40.00000            0.000000
                                  W( 22)        38.00000            0.000000
                                  W( 23)        35.00000            0.000000
                                  W( 24)        32.00000            0.000000
                                  W( 25)        25.00000            0.000000
                                  W( 26)        28.00000            0.000000
                                  W( 27)        30.00000            0.000000
                                  W( 28)        22.00000            0.000000
                                  W( 29)        50.00000            0.000000
                                  W( 30)        30.00000            0.000000
                                  W( 31)        45.00000            0.000000
                                  W( 32)        30.00000            0.000000
                                  W( 33)        60.00000            0.000000
                                  W( 34)        50.00000            0.000000
                                  W( 35)        20.00000            0.000000
                                  W( 36)        65.00000            0.000000
                                  W( 37)        20.00000            0.000000
                                  W( 38)        25.00000            0.000000
                                  W( 39)        30.00000            0.000000
                                  W( 40)        10.00000            0.000000
                                  W( 41)        20.00000            0.000000
                                  W( 42)        25.00000            0.000000
                                  W( 43)        15.00000            0.000000
                                  W( 44)        10.00000            0.000000
                                  W( 45)        10.00000            0.000000
                                  W( 46)        10.00000            0.000000
                                  W( 47)        4.000000            0.000000
                                  W( 48)        4.000000            0.000000
                                  W( 49)        2.000000            0.000000
                                  W( 50)        1.000000            0.000000
                                   V( 1)        220.0000            0.000000
                                   V( 2)        208.0000            0.000000
                                   V( 3)        198.0000            0.000000
                                   V( 4)        192.0000            0.000000
                                   V( 5)        180.0000            0.000000
                                   V( 6)        180.0000            0.000000
                                   V( 7)        165.0000            0.000000
                                   V( 8)        162.0000            0.000000
                                   V( 9)        160.0000            0.000000
                                  V( 10)        158.0000            0.000000
                                  V( 11)        155.0000            0.000000
                                  V( 12)        130.0000            0.000000
                                  V( 13)        125.0000            0.000000
                                  V( 14)        122.0000            0.000000
                                  V( 15)        120.0000            0.000000
                                  V( 16)        118.0000            0.000000
                                  V( 17)        115.0000            0.000000
                                  V( 18)        110.0000            0.000000
                                  V( 19)        105.0000            0.000000
                                  V( 20)        101.0000            0.000000
                                  V( 21)        100.0000            0.000000
                                  V( 22)        100.0000            0.000000
                                  V( 23)        98.00000            0.000000
                                  V( 24)        96.00000            0.000000
                                  V( 25)        95.00000            0.000000
                                  V( 26)        90.00000            0.000000
                                  V( 27)        88.00000            0.000000
                                  V( 28)        82.00000            0.000000
                                  V( 29)        80.00000            0.000000
                                  V( 30)        77.00000            0.000000
                                  V( 31)        75.00000            0.000000
                                  V( 32)        73.00000            0.000000
                                  V( 33)        72.00000            0.000000
                                  V( 34)        70.00000            0.000000
                                  V( 35)        69.00000            0.000000
                                  V( 36)        66.00000            0.000000
                                  V( 37)        65.00000            0.000000
                                  V( 38)        63.00000            0.000000
                                  V( 39)        60.00000            0.000000
                                  V( 40)        58.00000            0.000000
                                  V( 41)        56.00000            0.000000
                                  V( 42)        50.00000            0.000000
                                  V( 43)        30.00000            0.000000
                                  V( 44)        20.00000            0.000000
                                  V( 45)        15.00000            0.000000
                                  V( 46)        10.00000            0.000000
                                  V( 47)        8.000000            0.000000
                                  V( 48)        5.000000            0.000000
                                  V( 49)        3.000000            0.000000
                                  V( 50)        1.000000            0.000000
                                   X( 1)        1.000000           -220.0000
                                   X( 2)        1.000000           -208.0000
                                   X( 3)        0.000000           -198.0000
                                   X( 4)        1.000000           -192.0000
                                   X( 5)        0.000000           -180.0000
                                   X( 6)        1.000000           -180.0000
                                   X( 7)        0.000000           -165.0000
                                   X( 8)        1.000000           -162.0000
                                   X( 9)        1.000000           -160.0000
                                  X( 10)        1.000000           -158.0000
                                  X( 11)        1.000000           -155.0000
                                  X( 12)        0.000000           -130.0000
                                  X( 13)        1.000000           -125.0000
                                  X( 14)        1.000000           -122.0000
                                  X( 15)        0.000000           -120.0000
                                  X( 16)        1.000000           -118.0000
                                  X( 17)        1.000000           -115.0000
                                  X( 18)        0.000000           -110.0000
                                  X( 19)        1.000000           -105.0000
                                  X( 20)        1.000000           -101.0000
                                  X( 21)        0.000000           -100.0000
                                  X( 22)        1.000000           -100.0000
                                  X( 23)        1.000000           -98.00000
                                  X( 24)        1.000000           -96.00000
                                  X( 25)        1.000000           -95.00000
                                  X( 26)        1.000000           -90.00000
                                  X( 27)        1.000000           -88.00000
                                  X( 28)        1.000000           -82.00000
                                  X( 29)        0.000000           -80.00000
                                  X( 30)        1.000000           -77.00000
                                  X( 31)        0.000000           -75.00000
                                  X( 32)        0.000000           -73.00000
                                  X( 33)        0.000000           -72.00000
                                  X( 34)        0.000000           -70.00000
                                  X( 35)        1.000000           -69.00000
                                  X( 36)        0.000000           -66.00000
                                  X( 37)        1.000000           -65.00000
                                  X( 38)        0.000000           -63.00000
                                  X( 39)        0.000000           -60.00000
                                  X( 40)        1.000000           -58.00000
                                  X( 41)        1.000000           -56.00000
                                  X( 42)        0.000000           -50.00000
                                  X( 43)        0.000000           -30.00000
                                  X( 44)        0.000000           -20.00000
                                  X( 45)        0.000000           -15.00000
                                  X( 46)        0.000000           -10.00000
                                  X( 47)        1.000000           -8.000000
                                  X( 48)        0.000000           -5.000000
                                  X( 49)        0.000000           -3.000000
                                  X( 50)        0.000000           -1.000000

                                     Row    Slack or Surplus      Dual Price
                                       1        3103.000            1.000000
                                       2        0.000000            0.000000

2.一种物品可以选多件。利用整数变量。

model:
title 购物;
sets:
s/1..50/:w,v,x;
endsets
data:
V= 220, 208, 198, 192, 180, 180, 165, 162, 160, 158,155, 130, 125, 122, 120, 118, 115,
110, 105, 101, 100, 100, 98,96, 95, 90, 88, 82, 80, 77, 75, 73, 72, 70, 69, 66, 65, 63, 60,
58,56, 50, 30, 20, 15, 10, 8, 5, 3, 1;
W=80, 82, 85, 70, 72, 70, 66, 50, 55, 25, 50, 55, 40, 48,50, 32, 22, 60, 30, 32, 40, 38, 35,32,
25, 28, 30, 22, 50, 30, 45,30, 60, 50, 20, 65, 20, 25, 30, 10, 20, 25, 15, 10, 10, 10, 4, 4, 2,1;
enddata
max=@sum(s(i):v(i)*x(i));
@sum(s(i):w(i)*x(i))<1000;
@for(s(i):@gin(x(i)));
end
 Global optimal solution found.
  Objective value:                              6320.000
  Objective bound:                              6320.000
  Infeasibilities:                              0.000000
  Extended solver steps:                               0
  Total solver iterations:                             0

  Model Class:                                      PILP

  Total variables:                     50
  Nonlinear variables:                  0
  Integer variables:                   50

  Total constraints:                    2
  Nonlinear constraints:                0

  Total nonzeros:                     100
  Nonlinear nonzeros:                   0


  Model Title: 购物
                                Variable           Value        Reduced Cost
                                   W( 1)        80.00000            0.000000
                                   W( 2)        82.00000            0.000000
                                   W( 3)        85.00000            0.000000
                                   W( 4)        70.00000            0.000000
                                   W( 5)        72.00000            0.000000
                                   W( 6)        70.00000            0.000000
                                   W( 7)        66.00000            0.000000
                                   W( 8)        50.00000            0.000000
                                   W( 9)        55.00000            0.000000
                                  W( 10)        25.00000            0.000000
                                  W( 11)        50.00000            0.000000
                                  W( 12)        55.00000            0.000000
                                  W( 13)        40.00000            0.000000
                                  W( 14)        48.00000            0.000000
                                  W( 15)        50.00000            0.000000
                                  W( 16)        32.00000            0.000000
                                  W( 17)        22.00000            0.000000
                                  W( 18)        60.00000            0.000000
                                  W( 19)        30.00000            0.000000
                                  W( 20)        32.00000            0.000000
                                  W( 21)        40.00000            0.000000
                                  W( 22)        38.00000            0.000000
                                  W( 23)        35.00000            0.000000
                                  W( 24)        32.00000            0.000000
                                  W( 25)        25.00000            0.000000
                                  W( 26)        28.00000            0.000000
                                  W( 27)        30.00000            0.000000
                                  W( 28)        22.00000            0.000000
                                  W( 29)        50.00000            0.000000
                                  W( 30)        30.00000            0.000000
                                  W( 31)        45.00000            0.000000
                                  W( 32)        30.00000            0.000000
                                  W( 33)        60.00000            0.000000
                                  W( 34)        50.00000            0.000000
                                  W( 35)        20.00000            0.000000
                                  W( 36)        65.00000            0.000000
                                  W( 37)        20.00000            0.000000
                                  W( 38)        25.00000            0.000000
                                  W( 39)        30.00000            0.000000
                                  W( 40)        10.00000            0.000000
                                  W( 41)        20.00000            0.000000
                                  W( 42)        25.00000            0.000000
                                  W( 43)        15.00000            0.000000
                                  W( 44)        10.00000            0.000000
                                  W( 45)        10.00000            0.000000
                                  W( 46)        10.00000            0.000000
                                  W( 47)        4.000000            0.000000
                                  W( 48)        4.000000            0.000000
                                  W( 49)        2.000000            0.000000
                                  W( 50)        1.000000            0.000000
                                   V( 1)        220.0000            0.000000
                                   V( 2)        208.0000            0.000000
                                   V( 3)        198.0000            0.000000
                                   V( 4)        192.0000            0.000000
                                   V( 5)        180.0000            0.000000
                                   V( 6)        180.0000            0.000000
                                   V( 7)        165.0000            0.000000
                                   V( 8)        162.0000            0.000000
                                   V( 9)        160.0000            0.000000
                                  V( 10)        158.0000            0.000000
                                  V( 11)        155.0000            0.000000
                                  V( 12)        130.0000            0.000000
                                  V( 13)        125.0000            0.000000
                                  V( 14)        122.0000            0.000000
                                  V( 15)        120.0000            0.000000
                                  V( 16)        118.0000            0.000000
                                  V( 17)        115.0000            0.000000
                                  V( 18)        110.0000            0.000000
                                  V( 19)        105.0000            0.000000
                                  V( 20)        101.0000            0.000000
                                  V( 21)        100.0000            0.000000
                                  V( 22)        100.0000            0.000000
                                  V( 23)        98.00000            0.000000
                                  V( 24)        96.00000            0.000000
                                  V( 25)        95.00000            0.000000
                                  V( 26)        90.00000            0.000000
                                  V( 27)        88.00000            0.000000
                                  V( 28)        82.00000            0.000000
                                  V( 29)        80.00000            0.000000
                                  V( 30)        77.00000            0.000000
                                  V( 31)        75.00000            0.000000
                                  V( 32)        73.00000            0.000000
                                  V( 33)        72.00000            0.000000
                                  V( 34)        70.00000            0.000000
                                  V( 35)        69.00000            0.000000
                                  V( 36)        66.00000            0.000000
                                  V( 37)        65.00000            0.000000
                                  V( 38)        63.00000            0.000000
                                  V( 39)        60.00000            0.000000
                                  V( 40)        58.00000            0.000000
                                  V( 41)        56.00000            0.000000
                                  V( 42)        50.00000            0.000000
                                  V( 43)        30.00000            0.000000
                                  V( 44)        20.00000            0.000000
                                  V( 45)        15.00000            0.000000
                                  V( 46)        10.00000            0.000000
                                  V( 47)        8.000000            0.000000
                                  V( 48)        5.000000            0.000000
                                  V( 49)        3.000000            0.000000
                                  V( 50)        1.000000            0.000000
                                   X( 1)        0.000000           -220.0000
                                   X( 2)        0.000000           -208.0000
                                   X( 3)        0.000000           -198.0000
                                   X( 4)        0.000000           -192.0000
                                   X( 5)        0.000000           -180.0000
                                   X( 6)        0.000000           -180.0000
                                   X( 7)        0.000000           -165.0000
                                   X( 8)        0.000000           -162.0000
                                   X( 9)        0.000000           -160.0000
                                  X( 10)        40.00000           -158.0000
                                  X( 11)        0.000000           -155.0000
                                  X( 12)        0.000000           -130.0000
                                  X( 13)        0.000000           -125.0000
                                  X( 14)        0.000000           -122.0000
                                  X( 15)        0.000000           -120.0000
                                  X( 16)        0.000000           -118.0000
                                  X( 17)        0.000000           -115.0000
                                  X( 18)        0.000000           -110.0000
                                  X( 19)        0.000000           -105.0000
                                  X( 20)        0.000000           -101.0000
                                  X( 21)        0.000000           -100.0000
                                  X( 22)        0.000000           -100.0000
                                  X( 23)        0.000000           -98.00000
                                  X( 24)        0.000000           -96.00000
                                  X( 25)        0.000000           -95.00000
                                  X( 26)        0.000000           -90.00000
                                  X( 27)        0.000000           -88.00000
                                  X( 28)        0.000000           -82.00000
                                  X( 29)        0.000000           -80.00000
                                  X( 30)        0.000000           -77.00000
                                  X( 31)        0.000000           -75.00000
                                  X( 32)        0.000000           -73.00000
                                  X( 33)        0.000000           -72.00000
                                  X( 34)        0.000000           -70.00000
                                  X( 35)        0.000000           -69.00000
                                  X( 36)        0.000000           -66.00000
                                  X( 37)        0.000000           -65.00000
                                  X( 38)        0.000000           -63.00000
                                  X( 39)        0.000000           -60.00000
                                  X( 40)        0.000000           -58.00000
                                  X( 41)        0.000000           -56.00000
                                  X( 42)        0.000000           -50.00000
                                  X( 43)        0.000000           -30.00000
                                  X( 44)        0.000000           -20.00000
                                  X( 45)        0.000000           -15.00000
                                  X( 46)        0.000000           -10.00000
                                  X( 47)        0.000000           -8.000000
                                  X( 48)        0.000000           -5.000000
                                  X( 49)        0.000000           -3.000000
                                  X( 50)        0.000000           -1.000000

                                     Row    Slack or Surplus      Dual Price
                                       1        6320.000            1.000000
                                       2        0.000000            0.000000

发布了218 篇原创文章 · 获赞 131 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/qq_40828914/article/details/89786088