Вы правильно получаете доступ к значениям переменной через атрибут X
.Причиной, по которой вас смущает нулевое решение, является ошибка в методе constraint1
:
lhs1 = self.model.getVarByName("y_")
lhs1 = 2
rhs1 = self.model.getVarByName("q_")
rhs1 = 3
self.model.update()
self.model.addConstr(lhs1, GRB.LESS_EQUAL, rhs1)
Сначала вы присваиваете lhs1
и rhs1
ссылки на созданные переменные, но затем перезаписываетеих с номерами.Фактически вы добавляете ограничение 2 <= 3
, которое выполняется независимо от y_
и q_
.Следовательно, установка y_
и q_
на ноль является оптимальным решением.