zoukankan      html  css  js  c++  java
  • LinGo:疏散问题——线性规划,0-1规划

    甲市一家大公司由5个部门(ABCDE)组成。现要将它的几个部门迁出甲市,迁至乙市或丙市。

    (每个城市最多接纳三个部门)

    除去因政府鼓励这样做以外,还有用房便宜,招工方便等好处。对这些好处已作出数量估计,其值如下表所示。

    迁市

    部门A

    部门B

    部门C

    部门D

    部门E

    10 

    15 

    10 

    20 

    10 

    20 

    15 

    15 

    15 

    然而疏散后各部门间的通讯费用增加。部门间每年增加的通讯量如表2所示。

    部门

    1000 

    1500 

     

    1400 

    1200 

       

    2000 

         

    700 

    不同城市间单位通讯量的费用如表3所示(单位:元)。

    100 

    130 

    90 

     

    50 

    140 

       

    50 

    试求各部门应置于何市,使年费用最少?

    解:

    一.设决策变量Xij为部门j迁至i市

    Cij为部门j在i市所产生的利益

    Nij为部门i与部门j之间的通信量

    Pij为i市与j市之间单位通信量所产生的费用

     

    二.分析约束条件

    1.决策变量Xij为0-1约束

    @for(link1(i,j) : @bin(x(i,j)));

     

    2.每个部门只能迁至3个市的其中一个

    @for(class(j) : @sum(city(i) : x(i,j)) = 1);

    3.每个城市最多接纳三个部门

    @for(city(i) : @sum(class(j) : x(i,j)) <= 3);

     

    三.目标函数

    利益 = 总收益 – 总通信费用

    部门A与B的通信费用 = A与B的通信量 * A所在的市到B所在的市的单位通信费

    部门A所在的市到B所在的市的单位通信费 = @sum(link3(i,j) : p(i,j) * x(i,A) * x(j,B))

    [OBJ] max = @sum(link1(i,j) : x(i,j)*c(i,j))*10000 - @sum(link2(n,m) : w(n,m) * @sum(link3(i,j) : p(i,j) * x(i,n) * x(j,m)));

     

    四.LINGO代码

    sets:
        city/1..3/;
        class/1..5/;
        pro/1..4/;
        !利益&决策变量;
        link1(city, class) : x, c;
        !通讯量;
        link2(pro, class) : w;
        !通讯费用;
        link3(city, city) : p;
    endsets
    
    data:
        c = 0, 0, 0, 0, 0, 
            10, 15, 10, 20, 5, 
            10, 20, 15, 15, 15;
    
        w = 0, 0, 1000, 1500, 0, 
            0, 0, 1400, 1200, 0, 
            0, 0, 0, 0, 2000, 
            0, 0, 0, 0, 700;
    
        p = 100, 130, 90, 
            130, 50, 140, 
            90, 140, 50;
    enddata
    
    @for(link1(i,j) : @bin(x(i,j)));
    
    @for(class(j) : @sum(city(i) : x(i,j)) = 1);
    
    @for(city(i) : @sum(class(j) : x(i,j)) <= 3);
    
    [OBJ] max = @sum(link1(i,j) : x(i,j)*c(i,j))*10000 - @sum(link2(n,m) : w(n,m) * @sum(link3(i,j) : p(i,j) * x(i,n) * x(j,m)));

    五.运算结果

    Local optimal solution found.

    Objective value: 149000.0

    Objective bound: 149000.0

    Infeasibilities: 0.000000

    Extended solver steps: 0

    Total solver iterations: 11

     

     

    Variable Value Reduced Cost

    X( 1, 1) 0.000000 170000.0

    X( 1, 2) 0.000000 244000.0

    X( 1, 3) 0.000000 276000.0

    X( 1, 4) 0.000000 225000.0

    X( 1, 5) 0.000000 223000.0

    X( 2, 1) 1.000000 0.000000

    X( 2, 2) 0.000000 68000.00

    X( 2, 3) 0.000000 266000.0

    X( 2, 4) 1.000000 0.000000

    X( 2, 5) 0.000000 217000.0

    X( 3, 1) 0.000000 45000.00

    X( 3, 2) 1.000000 0.000000

    X( 3, 3) 1.000000 0.000000

    X( 3, 4) 0.000000 14000.00

    X( 3, 5) 1.000000 0.000000

    C( 1, 1) 0.000000 0.000000

    C( 1, 2) 0.000000 0.000000

    C( 1, 3) 0.000000 0.000000

    C( 1, 4) 0.000000 0.000000

    C( 1, 5) 0.000000 0.000000

    C( 2, 1) 10.00000 0.000000

    C( 2, 2) 15.00000 0.000000

    C( 2, 3) 10.00000 0.000000

    C( 2, 4) 20.00000 0.000000

    C( 2, 5) 5.000000 0.000000

    C( 3, 1) 10.00000 0.000000

    C( 3, 2) 20.00000 0.000000

    C( 3, 3) 15.00000 0.000000

    C( 3, 4) 15.00000 0.000000

    C( 3, 5) 15.00000 0.000000

    W( 1, 1) 0.000000 0.000000

    W( 1, 2) 0.000000 0.000000

    W( 1, 3) 1000.000 0.000000

    W( 1, 4) 1500.000 0.000000

    W( 1, 5) 0.000000 0.000000

    W( 2, 1) 0.000000 0.000000

    W( 2, 2) 0.000000 0.000000

    W( 2, 3) 1400.000 0.000000

    W( 2, 4) 1200.000 0.000000

    W( 2, 5) 0.000000 0.000000

    W( 3, 1) 0.000000 0.000000

    W( 3, 2) 0.000000 0.000000

    W( 3, 3) 0.000000 0.000000

    W( 3, 4) 0.000000 0.000000

    W( 3, 5) 2000.000 0.000000

    W( 4, 1) 0.000000 0.000000

    W( 4, 2) 0.000000 0.000000

    W( 4, 3) 0.000000 0.000000

    W( 4, 4) 0.000000 0.000000

    W( 4, 5) 700.0000 0.000000

    P( 1, 1) 100.0000 0.000000

    P( 1, 2) 130.0000 0.000000

    P( 1, 3) 90.00000 0.000000

    P( 2, 1) 130.0000 0.000000

    P( 2, 2) 50.00000 0.000000

    P( 2, 3) 140.0000 0.000000

    P( 3, 1) 90.00000 0.000000

    P( 3, 2) 140.0000 0.000000

    P( 3, 3) 50.00000 0.000000

     

    Row Slack or Surplus Dual Price

    1 0.000000 -115000.0

    2 0.000000 -38000.00

    3 0.000000 -160000.0

    4 0.000000 -141000.0

    5 0.000000 -48000.00

    6 3.000000 0.000000

    7 1.000000 0.000000

    8 0.000000 0.000000

    OBJ 149000.0 1.000000

    结论:

    迁市  A  B  C  D  E

    乙     1        1

    丙       1  1     1

    ——现在的努力是为了小时候吹过的牛B!!
  • 相关阅读:
    POJ-2393
    POJ-1328
    POJ-2376
    CF-811B
    CF-811A
    CF-816B
    P1111 修复公路
    P2777 [AHOI2016初中组]自行车比赛
    P1889 士兵站队
    P1459 三值的排序 Sorting a Three-Valued Sequence
  • 原文地址:https://www.cnblogs.com/pingge/p/3267609.html
Copyright © 2011-2022 走看看