我正在使用 Python 2.7 并使用 PuLP 库来设置问题。一旦定义了变量、目标和约束,我就腌制我的 LpProblem 对象以发送到其他地方的 Solver。在取消我的问题时,我注意到所有变量都是重复的:
import pulp
import pickle
prob = pulp.LpProblem('test problem', pulp.LpMaximize)
x = pulp.LpVariable('x', 0, 10)
y = pulp.LpVariable('y', 3, 6)
prob += x + y
prob += x <= 5
print prob
print pickle.loads(pickle.dumps(prob))
第一个打印语句输出:
>>> print prob
test problem:
MAXIMIZE
1*x + 1*y + 0
SUBJECT TO
_C1: x <= 5
VARIABLES
x <= 10 Continuous
3 <= y <= 6 Continuous
而第二个打印:
>>> print pickle.loads(pickle.dumps(prob))
test problem:
MAXIMIZE
1*x + 1*y + 0
SUBJECT TO
_C1: x <= 5
VARIABLES
x <= 10 Continuous
x <= 10 Continuous
3 <= y <= 6 Continuous
3 <= y <= 6 Continuous
如您所见,目标和约束条件都很好,但所有变量都是重复的。是什么导致了这种行为,我该如何防止这种情况发生?