Реализация импликации, где LHS не является двоичным? - PullRequest
1 голос
/ 11 июля 2019

Попытка реализовать и индикаторное ограничение в Python + Gurobi, где индикатор (LHS) является суммой двоичной переменной решения.

Привет, я хотел бы реализовать следующее в Python + Gurobi:

Y_i_d and U_d are binary decision variables:
Y_i_d = model.addVars(passengers, drivers, vtype=grb.GRB.BINARY, name = "Y")
U0_d = model.addVars( drivers, vtype=grb.GRB.BINARY, name = "U0")
U1_d = model.addVars( drivers, vtype=grb.GRB.BINARY, name = "U1")
U2_d = model.addVars( drivers, vtype=grb.GRB.BINARY, name = "U2")
U3_d = model.addVars( drivers, vtype=grb.GRB.BINARY, name = "U3")

, и я хотел бы получить следующее значение:

model.addConstr((U0_d[d]+U1_d[d]+U2_d[d]+U3_d[d])==1)
model.addConstr( (grb.quicksum(Y_i_d[ i, d] for i in passengers) == 0) >>     (U0_d[d] == 1))
model.addConstr( (grb.quicksum(Y_i_d[ i, d] for i in passengers) == 1) >>     (U1_d[d] == 1))
model.addConstr( (grb.quicksum(Y_i_d[ i, d] for i in passengers) == 2) >>     (U2_d[d] == 1))
model.addConstr( (grb.quicksum(Y_i_d[ i, d] for i in passengers) == 3) >>     (U3_d[d] == 1))

Однако это не работает, поскольку ограничение индикатора объявляет переменную индикатора как двоичный тип.Есть ли обходной путь для этого?Я должен использовать переменные U_d позже, чтобы определить дизъюнктивные ограничения.

Заранее спасибо!

...