如果线性规划决策variables> 0,则> = 3000

我试图在Excel中使用求解器来创build一个线性程序来最小化共同基金的开支。 我的决定variables是每个基金投入的金额。 如果有什么投资,它必须达到资金的最低限度。 我如何编程?

基金1投入金额=>基金投资额> 0,基金投资额1> = 3000其他投资额= 0

任何帮助是极大的赞赏。 谢谢。

这些types的约束是由大M方法的变化来强制执行的

假设x是决定variables对应于在基金1投资的金额。selectx的可能值的上限M 例如,如果你只有100万美元的投资,让M = 1,000,000你不需要在x上有最小的上界。 M = 2,000,000也是可以的(尽pipe如果M不是不合理的大,你通常会得到更快的收敛和更less的舍入误差)。

引入一个新的variablesy ,约束为01 (即二元决策variables)。 将以下两个约束添加到您的模型中:

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

如果x>0那么第二个增加的约束迫使y离开0 ,因此它迫使y = 1因为y是二元的。 但是,如果y = 1 ,那么第二个约束就会减less到x <= M ,这通过selectM自动为真,因此它不会在x上添加任何真正的约束。 但是 – 因为在这种情况下y = 1 ,所以第一个约束变成x >= 3000 。 因此,这两个约束一起x > 0就迫使x >= 3000 。 重要的是 – 它不使用非线性if函数。 它确实使它成为一个MILP(混合整数线性规划)问题 – 但是Excel的求解器可以处理没有问题的问题(只要二进制variables的数目不会变得太大)。