У меня есть следующая модель для 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))
, и я пытаюсь написать ограничение, используя индикатор Constraint с Min / Max Constraint, например:
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
что-то не так, что я делаю, или это просто невозможно сделать таким образом?
любая помощь будет оценена