首先需要确认弹性约束条件是正确的。如果确保约束条件正确,但 Pulp Solver 仍然返回"Optimal",则建议将弹性条件中的较小值设置为非常接近零的值。
例如,在以下代码中,我们可以看到,弹性约束条件的最小值设置为了 0.00001。如果将其设置为 0,Pulp Solver 将返回“Optimal”。
import pulp
# Create problem
prob = pulp.LpProblem('elastic_constraint', pulp.LpMinimize)
# Define variables
x = pulp.LpVariable('x', lowBound=0, cat='Continuous')
y = pulp.LpVariable('y', lowBound=0, cat='Continuous')
# Define objective function
prob += x + y
# Define constraints
prob += x + 2*y >= 1
prob += x + y <= 10
prob += x - y <= 0
prob += -x + y <= 0
prob += x >= 0.00001*y
# Solve problem
prob.solve()
print(pulp.LpStatus[prob.status])
for var in prob.variables():
print(f'{var.name}: {var.value()}')
我们可以看到,在上述代码中,弹性约束条件的最小值设置为 0.00001。将其设置为 0 时,Pulp Solver 将返回“Optimal”。