3
我正在使用Python 2.7並使用PuLP庫來設置問題。一旦定義了變量,目標和約束條件,我就會將我的LpProblem對象發送給其他地方的Solver。在未酸洗我的問題,我注意到,所有的變量是重複的:泡菜不和PuLP玩好
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語句輸出:
>>> 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
由於你可以看到,目標和限制都很好,但所有的變量都是重複的。造成這種行爲的原因是什麼,以及如何防止這種情況發生?
當按照這種方法時,我發現我不能再添加約束的問題?當添加更多的約束,然後保存LP問題時,我再次得到「重複名稱」錯誤。所以,我嘗試用新添加的約束重複上述過程,但由於某些原因,這不起作用。 – denvar
我發佈的評論的解決方法是:加載醃製LP問題,但不添加約束。然後,你得到一組新的約束,最後你合併約束(在OrderedDict上使用更新),然後將它們添加到一個大的去。 – denvar