• 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!!
  • 相关阅读:
    monkeyrunner小结
    ADB用法
    logcat命令详解【一】
    logcat命令详解【二】
    五步搞定Android开发环境部署——非常详细的Android开发环境搭建教程
    哈佛图书馆的二十条训言
    C#中千分位问题
    虚拟目录继承根目录web.config
    批量删除sql数据库木马
    决IE和Firefox下flash挡住div层的问题
  • 原文地址:https://www.cnblogs.com/pingge/p/3267609.html
Copyright © 2020-2023  润新知