python - 我可以在 Gurobi 中使用带有最小/最大约束的指标约束吗?
问题描述
我有以下 Gurobi 模型:
m = Model()
x = {}
for k in range(K):
for i in range(V):
for j in range(V):
if i != j:
x[k,i,j] = m.addVar(vtype=GRB.BINARY, name="x(%s,%s,%s)"%(k,i,j))
a = {}
for k in range(K):
for i in range(V):
a[k,i] = m.addVar(ub=25, vtype= GRB.INTEGER, name= "a(%s,%s)"%(k,i))
我正在尝试使用具有最小/最大约束的指标约束来编写约束,如下所示:
m.addConstrs((x[k,i,j] == 1) >> (a[k,j] == max_((a[k,i] + 5), 15)) for k in range(K) for i in range(V) for j in range(1,V) if i!=j)
但我最终得到了这个错误:
File "model.pxi", line 3070, in gurobipy.Model.addConstrs
File "model.pxi", line 2951, in gurobipy.Model.addConstr
File "model.pxi", line 3592, in gurobipy.Model.addGenConstrIndicator
File "linexpr.pxi", line 461, in gurobipy.LinExpr.__sub__
TypeError: unsupported operand type(s) for *: 'int' and 'GenExpr'
我还尝试了不同的变体来编写此约束,例如:
for k in range(K):
for i in range(V):
for j in range(1,V):
if i!=j:
m.addConstr((x[k,i,j] == 1) >> ((a[k,j]) == max_((a[k,i] + 5), 15), "tww(%s)"%(i))
#or
m.addGenConstrIndicator(x[k,i,j], True, a[k,j], GRB.EQUAL, max_((a[k,i] + 5), 15))
但最终也会得到与以前或这个相同的错误:
m.addGenConstrIndicator(x[k,i,j], True, a[k,j], GRB.EQUAL, max_((a[k,i] + 5), 15))
File "model.pxi", line 3588, in gurobipy.Model.addGenConstrIndicator
gurobipy.GurobiError: Invalid rhs argument for general constraint of indicator type
我做错了什么还是不能这样做?
任何帮助将不胜感激