Dan*_*ick 2 excel conditional if-statement solver
我正在尝试在Excel中使用求解器来创建线性程序,以最大程度地减少共同基金的费用。我的决策变量是每个基金的投资额。如果投资了任何资金,则必须达到最低资金要求。我该如何编程?
投资基金1的金额> =如果投资基金1的金额> 0,则投资基金1的金额> = 3000否则投资的金额= 0
任何帮助是极大的赞赏。谢谢。
这些约束类型是通过Big M方法的变体来强制实施的
假设x是与投资于基金1的金额相对应的决策变量。选择M的可能值的上限x。例如,如果您只有$ 1,000,000的投资额,则M = 1,000,000您无需在上设置最小的上限x。M = 2,000,000也可以正常工作(尽管通常来说,收敛速度更快,并且如果M取值不大的话,舍入误差也较小)。
引入一个新变量,将y其限制为0或1(即二进制决策变量)。在模型中添加以下两个约束:
x >= 3000*y
x <= M*y
Run Code Online (Sandbox Code Playgroud)
如果是,x>0则第二个添加的约束强制y远离0,因此它强制,y = 1因为y是二进制的。但是,如果y = 1第二个约束减少到x <= M(通过选择会自动成立)M,因此它不会在上添加任何真正的约束x。但是-因为y = 1在这种情况下,第一个约束变为x >= 3000。因此,这两个制约因素一起迫使x >= 3000尽快x > 0。重要的是,它无需使用非线性if函数即可。它确实使它成为MILP(混合整数线性编程)问题-但是Excel的求解器可以毫无问题地处理这些问题(只要二进制变量的数量不会太大)。
| 归档时间: |
|
| 查看次数: |
1085 次 |
| 最近记录: |