zoukankan      html  css  js  c++  java
  • LinGo:投资问题——线性规划

    一.根据题目所给数据,建立一张表格方便查看

      

    项目A

    项目B

    项目C

    项目D

    可投资年

    1,2,3,4

    3

    2

    1,2,3,4,5

    收回本利年

    次年年末

    第5年

    第5年

    当年年末

    本利

    1.06

    1.15

    1.20

    1.02

    最大投资金额(万)

    -

    40

    30

    -

       

       

    二.设第i年投资第j个项目 Xij

    第j个项目的本利为r

       

    三.约束条件

    1.第一年投资的金额=100万

    x(1,1) + x(1,4) = 100;

    2.往后每年的投资金额要=今年年初回收的本利和

    x(2,1) + x(2,3) + x(2,4) = x(1,4) * r(4);

    x(3,1) + x(3,2) + x(3,4) = x(1,1) * r(1) + x(2,4) * r(4);

    x(4,1) + x(4,4) = x(2,1) * r(1) + x(3,4) * r(4);

    x(5,4) = x(3,1) * r(1) + x(4,4) * r(4);

    3.第2个项目的单次投资金额要<=40万

    x(3,2) <= 40;

    4.第3个项目的单次投资金额要<=30万

    x(2,3) <= 30;

       

    四.目标函数 : 第五年末的本利和

    max = r(1) * x(4,1) + r(2) * x(3,2) + r(3) * x(2,3) + r(4) * x(5,4);

       

    五.LINGO代码

       

    sets:
        row/1..5/;
        col/1..4/ : r;
          link(row,col) : x;
    endsets
    
    data:
        r = 1.06, 1.15, 1.20, 1.02;
    enddata
    
    !@for(link(i,j) : x(i,j) = 0);
    
    !1;
    x(1,1) + x(1,4) = 100;
    
    !2;
    x(2,1) + x(2,3) + x(2,4) = x(1,4) * r(4);
    
    !3;
    x(3,1) + x(3,2) + x(3,4) = x(1,1) * r(1) + x(2,4) * r(4);
    
    !4;
    x(4,1) + x(4,4) = x(2,1) * r(1) + x(3,4) * r(4);
    
    !5;
    x(5,4) = x(3,1) * r(1) + x(4,4) * r(4);
    
    x(3,2) <= 40;
    x(2,3) <= 30;
    
    [OBJ]max = r(1) * x(4,1) + r(2) * x(3,2) + r(3) * x(2,3) + r(4) * x(5,4);

    六.LINGO运算结果

     Global optimal solution found.

    Objective value: 119.6512

    Infeasibilities: 0.000000

    Total solver iterations: 1

    Variable Value Reduced Cost

    R( 1) 1.060000 0.000000

    R( 2) 1.150000 0.000000

    R( 3) 1.200000 0.000000

    R( 4) 1.020000 0.000000

    X( 1, 1) 70.58824 0.000000

    X( 1, 2) 0.000000 0.000000

    X( 1, 3) 0.000000 0.000000

    X( 1, 4) 29.41176 0.000000

    X( 2, 1) 0.000000 0.000000

    X( 2, 2) 0.000000 0.000000

    X( 2, 3) 30.00000 0.000000

    X( 2, 4) 0.000000 0.2077600E-01

    X( 3, 1) 0.000000 0.000000

    X( 3, 2) 40.00000 0.000000

    X( 3, 3) 0.000000 0.000000

    X( 3, 4) 34.82353 0.000000

    X( 4, 1) 35.52000 0.000000

    X( 4, 2) 0.000000 0.000000

    X( 4, 3) 0.000000 0.000000

    X( 4, 4) 0.000000 0.1960000E-01

    X( 5, 1) 0.000000 0.000000

    X( 5, 2) 0.000000 0.000000

    X( 5, 3) 0.000000 0.000000

    X( 5, 4) 0.000000 0.000000

    Row Slack or Surplus Dual Price

    1 0.000000 1.146072

    2 0.000000 1.123600

    3 0.000000 1.081200

    4 0.000000 1.060000

    5 0.000000 1.020000

    6 0.000000 0.6880000E-01

    7 0.000000 0.7640000E-01

    OBJ 119.6512 1.000000

    结论:

    第一年:A:70.58824  D:29.41176

    第二年:C:30

    第三年:B:40  D:34.82353

    第四年:A:35.52

    第五年:不投资

      

    ——现在的努力是为了小时候吹过的牛B!!
  • 相关阅读:
    安装JDK,如何配置PATH,如何配置CLASSPATH
    存储过程笔记
    用BeanFactoryAware接口,用BEAN的名称来获取BEAN对象
    静态工厂实例代码
    setTimeout 和 setInterval 的区别
    Spring Autowire自动装配
    动态工厂模式代码实例
    JS处理回车事件
    不错的Spring学习笔记(转)
    单例模式要点
  • 原文地址:https://www.cnblogs.com/pingge/p/3264227.html
Copyright © 2011-2022 走看看