【问题标题】:If Linear Programming Decision Variable > 0 then >= 3000如果线性规划决策变量 > 0 则 >= 3000
【发布时间】:2017-06-15 00:22:16
【问题描述】:

我正在尝试使用 Excel 中的求解器来创建一个线性程序,以最大限度地减少共同基金费用。我的决策变量是投资于每个基金的金额。如果有任何投资,则必须满足最低基金要求。我该如何编程?

投资于基金 1 的金额 >= 如果投资于基金 1 的金额 > 0,则投资于基金 1 的金额 >= 3000 否则投资的金额 = 0

非常感谢任何帮助。谢谢。

【问题讨论】:

    标签: excel if-statement conditional solver


    【解决方案1】:

    这些类型的约束由Big M Method 的变体强制实施

    假设x 是对应于基金1 投资金额的决策变量。在x 的可能值上选择一个上限M。例如,如果您只有 1,000,000 美元可投资,让M = 1,000,000 您不需要在x 上有最小上限。 M = 2,000,000 也可以工作(尽管如果 M 不是不合理的大,您通常会获得更快的收敛和更少的舍入误差)。

    引入一个新变量y,它被限制为01(即二元决策变量)。将以下两个约束添加到您的模型中:

    x >= 3000*y
    x <= M*y
    

    如果x&gt;0,那么第二个添加的约束会强制y 远离0,因此它会强制y = 1,因为y 是二进制的。但是如果y = 1,则第二个约束减少为x &lt;= M,通过选择M 自动为真,因此它不会对x 添加任何真正的约束。但是——因为在这种情况下y = 1,第一个约束变为x &gt;= 3000。因此,这两个约束一起强制x &gt;= 3000x &gt; 0。重要的是——它没有使用非线性if 函数。它确实使它成为一个 MILP(混合整数线性规划)问题——但 Excel 的求解器可以处理那些没有问题的问题(只要二进制变量的数量不会变得太大)。

    【讨论】:

      猜你喜欢
      • 2020-09-14
      • 1970-01-01
      • 1970-01-01
      • 2019-12-25
      • 1970-01-01
      • 2011-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多