Python 如何实施;或;古罗比的逻辑
我是gurobipy的初学者,所以我试图理解如何陈述我的问题,我在模型中有一个变量,它必须是零或大于一个参数Python 如何实施;或;古罗比的逻辑,python,optimization,solver,gurobi,Python,Optimization,Solver,Gurobi,我是gurobipy的初学者,所以我试图理解如何陈述我的问题,我在模型中有一个变量,它必须是零或大于一个参数 #If total is not zero then this constraint has to hold model.addConstrs( (total[sup] >= mins[sup] for sup in suppliers), "CheckMin" ) 我尝试为每个供应商创建一个二进制var,如果该供应商的合计大于0,则该var必须为真,如下所示: mode
#If total is not zero then this constraint has to hold
model.addConstrs(
(total[sup] >= mins[sup] for sup in suppliers), "CheckMin"
)
我尝试为每个供应商创建一个二进制var,如果该供应商的合计大于0,则该var必须为真,如下所示:
model.addConstrs(
(bool(gp.quicksum(total[sup] for sup in suppliers)) == binary_buy[sup]
for sup in suppliers), "BinaryConst"
)
这导致了不可行的解决方案,显然,第二个约束迫使每个
binary\u buy[sup]
都为真,而我希望只有当total[sup]
大于0时它才为真。如果有人能帮我恰当地说明这一点,那将是非常好的,我也接受python中其他解算器的建议,谢谢 我可以通过简单地将totals约束中的二进制文件相乘来解决这个问题:
model.addConstrs(
(gp.quicksum(prices[sup, item]*buys[sup, item] for item in items)
== total[sup]*binary_buy[sup] for sup in suppliers), "TotalFornecedor"
)
我希望这能帮助解决这个问题的人!谢谢