我可以在Gurobi使用带有最小/最大约束的指标约束吗?
回答我为Gurobi设计了以下模型:
米=模型()x={}为k在范围(K):为我在范围(V):为j在范围(V):如果我! =j:x(k,我,j]=米.addVar(vtype=伽马线暴.二进制,的名字=“x (% s, % s % s)”% (k,我,j))一个={}为k在范围(K):为我在范围(V):一个(k,我]=米.addVar(乌兰巴托=25,vtype=伽马线暴.整数,的名字=“(%,% s)”% (k,我))
我试图写一个约束使用指标约束与最小/最大约束,像这样:
米.addConstrs((x(k,我,j]==1)>>(一个(k,j]==max_((一个(k,我]+5),15))为k在范围(K)为我在范围(V)为j在范围(1,V)如果我! =j)
但是我最终得到这个错误:
文件“model.pxi”,行3070,在gurobipy.模型.addConstrs文件“model.pxi”,行2951,在gurobipy.模型.addConstr文件“model.pxi”,行3592,在gurobipy.模型.addGenConstrIndicator文件“linexpr.pxi”,行461,在gurobipy.LinExpr.__sub__TypeError:不支持的操作数类型(年代)为*:“int”和“GenExpr”
我还尝试了不同的变体来编写这个约束:
为k在范围(K):为我在范围(V):为j在范围(1,V):如果我! =j:米.addConstr((x(k,我,j]==1)>>((一个(k,j])==max_((一个(k,我]+5),15),“tww (% s)”% (我))#或米.addGenConstrIndicator(x(k,我,j],真正的,一个(k,j],伽马线暴.平等的,max_((一个(k,我]+5),15))
但最终也会得到和之前一样的错误
米.addGenConstrIndicator(x(k,我,j],真正的,一个(k,j],伽马线暴.平等的,max_((一个(k,我]+5),15))文件“model.pxi”,行3588,在gurobipy.模型.addGenConstrIndicator gurobipy.GurobiError:无效的rhs论点为指标类型的一般约束
是我做错了什么事,还是不能这样做?
任何帮助都将不胜感激
-
谢谢你的帮助,非常有帮助。
在我工作与你的建议,我结束得到错误:类型为gurobipy的对象。LinExpr'没有len()
在网上搜索之后,我发现这个错误是由max_()函数引起的。我只能传递一个变量列表作为这个函数的参数,而不是像我这样传递一个LinExpr。
感谢Robert Luce在谷歌组的回答https://groups.google.com/forum/ !主题/ gurobi / oO3d2ItJiqs)
再次感谢你的帮助,托拜厄斯·阿克特伯格
请登录留下评论。
评论
2的评论