Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何实施;或;古罗比的逻辑_Python_Optimization_Solver_Gurobi - Fatal编程技术网

Python 如何实施;或;古罗比的逻辑

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

我是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必须为真,如下所示:

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" 
    )
我希望这能帮助解决这个问题的人!谢谢