Чего вам не хватает, так это ограничения на Penalty
. Вы в значительной степени говорите, что это должно быть в вашем вопросе.
Вы хотите заставить Penalty
быть >=
до -X
.
Когда X
положительно, это будет не имеют никакого эффекта - нижняя граница Penalty
уже равна нулю, поэтому добавление еще одной нижней границы -X
, где X
- положительное число, ничего не делает.
Когда X
отрицательно, оно делает только то, что Вы хотите:
from pulp import *
X = LpVariable('X',-1000,1000,cat='Integer')
Penalty =LpVariable('Penalty', 0,1000,cat='Integer')
prob = LpProblem ("MinimisePenaltye", LpMinimize)
prob += Penalty # Objective
prob += Penalty >= -X
prob += X == -15
prob.solve()
# Dislay the optimums of each var
for v in prob.variables ():
print (v.name, "=", v.varValue)
Возвращает
Penalty = 15.0
X = -15.0