Python 中的 PuLP 未找到最大值
PuLP in Python Not Finding Maximum
我使用下面的代码已经有一段时间了,它总是能够找到 max/min 除了现在。
我得到一个角点:x=168,y=192,objective=3288
但是有一个角点才是真正的最大值:x=0,y=304,objective=3344
我做错了什么导致此代码无法找到真正最大化 objective 的 x,y?
from pulp import LpVariable, LpProblem, LpMaximize, LpStatus, value, LpMinimize
# declare your variables
x = LpVariable("y1", 0, None)
y = LpVariable("y2", 0, None)
# defines the problem
prob = LpProblem("problem", LpMaximize)
# defines the constraints
prob += 1/2*x+3/4*y == 228
prob += 1/2*x+1/4*y == 132
# defines the objective function to maximize
prob += 7*x+11*y
# solve the problem
status = prob.solve()
LpStatus[status]
# print the results
print('x={0},y={1}.'.format(round(value(x)),round(value(y))))
print("The objective is ${}.".format(round(value(prob.objective))))
考虑约束 prob += 1/2*x+1/4*y == 132
。
如果您设置 x=0
和 y=304
将违反此约束(76 ≠ 132)。
要测试解决方案,您只需添加约束:
prob+= x == 0
prob+= y == 304
status = prob.solve()
print(LpStatus[status])
输出不可行。
我使用下面的代码已经有一段时间了,它总是能够找到 max/min 除了现在。
我得到一个角点:x=168,y=192,objective=3288
但是有一个角点才是真正的最大值:x=0,y=304,objective=3344
我做错了什么导致此代码无法找到真正最大化 objective 的 x,y?
from pulp import LpVariable, LpProblem, LpMaximize, LpStatus, value, LpMinimize
# declare your variables
x = LpVariable("y1", 0, None)
y = LpVariable("y2", 0, None)
# defines the problem
prob = LpProblem("problem", LpMaximize)
# defines the constraints
prob += 1/2*x+3/4*y == 228
prob += 1/2*x+1/4*y == 132
# defines the objective function to maximize
prob += 7*x+11*y
# solve the problem
status = prob.solve()
LpStatus[status]
# print the results
print('x={0},y={1}.'.format(round(value(x)),round(value(y))))
print("The objective is ${}.".format(round(value(prob.objective))))
考虑约束 prob += 1/2*x+1/4*y == 132
。
如果您设置 x=0
和 y=304
将违反此约束(76 ≠ 132)。
要测试解决方案,您只需添加约束:
prob+= x == 0
prob+= y == 304
status = prob.solve()
print(LpStatus[status])
输出不可行。