如何在 gurobipy 中实现 "or" 逻辑
How to implement an "or" logic in gurobipy
我是 gurobipy 的初学者,所以我想了解如何用它来陈述我的问题,我在模型中有一个变量必须为零或大于参数。
#If total is not zero then this constraint has to hold
model.addConstrs(
(total[sup] >= mins[sup] for sup in suppliers), "CheckMin"
)
我尝试为每个供应商创建一个二进制变量,如果该供应商的总数大于 0,则该变量必须为 True,如下所示:
model.addConstrs(
(bool(gp.quicksum(total[sup] for sup in suppliers)) == binary_buy[sup]
for sup in suppliers), "BinaryConst"
)
这导致了不可行的解决方案,显然第二个约束条件迫使每个 binary_buy[sup]
为真,而我想要的是仅当 total[sup]
大于 0 时才为真。如果有人可以帮助正确说明这一点,那就太好了,我也接受 python 中其他求解器的建议,谢谢!
我可以通过简单地乘以总计约束中的二进制文件来解决它:
model.addConstrs(
(gp.quicksum(prices[sup, item]*buys[sup, item] for item in items)
== total[sup]*binary_buy[sup] for sup in suppliers), "TotalFornecedor"
)
我希望这能帮助遇到这个问题的人!谢谢
我是 gurobipy 的初学者,所以我想了解如何用它来陈述我的问题,我在模型中有一个变量必须为零或大于参数。
#If total is not zero then this constraint has to hold
model.addConstrs(
(total[sup] >= mins[sup] for sup in suppliers), "CheckMin"
)
我尝试为每个供应商创建一个二进制变量,如果该供应商的总数大于 0,则该变量必须为 True,如下所示:
model.addConstrs(
(bool(gp.quicksum(total[sup] for sup in suppliers)) == binary_buy[sup]
for sup in suppliers), "BinaryConst"
)
这导致了不可行的解决方案,显然第二个约束条件迫使每个 binary_buy[sup]
为真,而我想要的是仅当 total[sup]
大于 0 时才为真。如果有人可以帮助正确说明这一点,那就太好了,我也接受 python 中其他求解器的建议,谢谢!
我可以通过简单地乘以总计约束中的二进制文件来解决它:
model.addConstrs(
(gp.quicksum(prices[sup, item]*buys[sup, item] for item in items)
== total[sup]*binary_buy[sup] for sup in suppliers), "TotalFornecedor"
)
我希望这能帮助遇到这个问题的人!谢谢