【问题标题】:Combine two calculations with lp_solve (linear programming)将两个计算与 lp_solve(线性规划)结合起来
【发布时间】:2016-08-13 13:45:21
【问题描述】:

我是 lp_solve 的新手。我想结合这两个计算, (因为原料都是一样的……)

首次生产:

    min: 13.21 x0 + 27.46 x1 + 35.66 x2 + 89.21 x3 + 60.69 x4;

    x0 + x1 + x2 + x3 + x4 >= 200000;

    x0 <= 69148;
    x1 <= 25460;
    x2 <= 34020;
    x3 <= 69873;
    x4 <= 737299;

    -0.425 x0 + 0.086 x3 + -0.003 x4 >= 0;
    /* 0.175*x0 + 0.60*x1 + 0.60*x2 + 0.686*x3 + 0.59745*x4 >= (x0 + x1 + x2 + x3 + x4)*0.6 */

第二次生产:

    min: 13.21 y0 + 27.46 y1 + 35.66 y2 + 89.21 y3 + 60.69 y4;

    y0 + y1 + y2 + y3 + y4 >= 50000;

    y0 <= 69148;
    y1 <= 25460;
    y2 <= 34020;
    y3 <= 69873;
    y4 <= 737299;

    -0.275 y0 + 0.15 y1 + 0.15 y2 + 0.236 y3 + 0.14745 y4 >= 0;
    /* 0.175*y0 + 0.60*y1 + 0.60*y2 + 0.686*y3 + 0.59745*y4 >= (y0 + y1 + y2 + y3 + y4)*0.45 */

我的解决方案:

    min: 13.21 x0 - 13.21 y0
       + 27.46 x1 - 27.46 y1
       + 35.66 x2 - 35.66 y2
       + 89.21 x3 - 89.21 y3
       + 60.69 x4 - 60.69 y4;

    x0 + x1 + x2 + x3 + x4 >= 200000;
    y0 + y1 + y2 + y3 + y4 >= 50000;

    x0 + y0 <= 69148;
    x1 + y1 <= 25460;
    x2 + y2 <= 34020;
    x3 + y3 <= 69873;
    x4 + y4<= 737299;

    -0.425 x0 + 0.086 x3 + -0.003 x4 >= 0;
    -0.275 y0 + 0.15 y1 + 0.15 y2 + 0.236 y3 + 0.14745 y4 >= 0;

返回一个奇怪的结果:

    x0 0
    y0 69148
    x1 25460
    y1 0
    x2 34020
    y2 0
    x3 4736.62921348315
    y3 65136.3707865169
    x4 135783.370786517
    y4 601515.629213483

当我将 x 和 y 相加时:

    x = 200,000 (okay)
    y = 735,800 (not 50,000!)

所以我使用整个库存...而不是 250.000...

【问题讨论】:

    标签: math optimization linear-programming lpsolve


    【解决方案1】:

    在您的组合目标函数中:

    min: 13.21 x0 - 13.21 y0
       + 27.46 x1 - 27.46 y1
       + 35.66 x2 - 35.66 y2
       + 89.21 x3 - 89.21 y3
       + 60.69 x4 - 60.69 y4;
    

    您从x 目标函数中减去y 目标函数,而不是添加它们。既然你告诉它最小化,求解器会很高兴地尝试最大化你原来的 y 目标,而不是最小化。

    如果你改用:

    min: 13.21 x0 + 13.21 y0
       + 27.46 x1 + 27.46 y1
       + 35.66 x2 + 35.66 y2
       + 89.21 x3 + 89.21 y3
       + 60.69 x4 + 60.69 y4;
    

    您会得到以下结果:

    x0                              0
    x1                          25460
    x2                          34020
    x3                        4736.63
    x4                         135783
    y0                        17451.8
    y1                              0
    y2                              0
    y3                              0
    y4                        32548.2
    

    所以x 基本上是 200000,y 是 50000,正如你所希望的。

    【讨论】:

    • @ABSimon 如果有帮助,您应该投票并接受答案。如果你有没有这样做的记录,人们就不太可能帮助你。感谢您的感谢,但我也会感谢神奇的互联网积分,而且它们提供的工作量更少。 :)
    猜你喜欢
    • 1970-01-01
    • 2021-11-23
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    相关资源
    最近更新 更多