如果线性规划决策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
,约束为0
或1
(即二元决策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的数目不会变得太大)。