簡體   English   中英

為什么我在線性規划問題中得到不同的結果(使用紙漿)

[英]Why do I get different result in linear programming problem (using pulp)

為了解決線性問題,我使用紙漿庫在 python 中編寫了一些代碼。 但是,如果我將 y 變量的名稱更改為 s 或 r 並重新運行程序,則會得到不同的結果。 不同的結果是指正在打印的變量 x1,x2...x10 和 y1...y10。 但是,最小值保持不變,為 36650。

代碼如下:

from pulp import LpMaximize, LpProblem, LpStatus, lpSum, LpVariable, LpMinimize

model = LpProblem(name="resource", sense=LpMinimize)

x = {i: LpVariable(name=f"x{i}", lowBound=0) for i in range(1, 11)}
y = {i: LpVariable(name=f"y{i}", lowBound=0) for i in range(1, 11)}

model += (x[1] + 50 - y[1] >= 100 , "x1")
model += (x[2] + y[1] - y[2] >= 200 , "x2")
model += (x[3] + y[2] - y[3] >= 150 , "x3")
model += (x[4] + y[3] - y[4] >= 400 , "x4")
model += (x[5] + y[4] - y[5] >= 300 , "x5")
model += (x[6] + y[5] - y[6] >= 400 , "x6")
model += (x[7] + y[6] - y[7] >= 150 , "x7")
model += (x[8] + y[7] - y[8] >= 150 , "x8")
model += (x[9] + y[8] - y[9] >= 200 , "x9")
model += (x[10] + y[9] - y[10] >= 250 , "x10")
model += (0 <= x[1] <= 400 , "ti")
model += (0 <= x[2] <= 500 , "tii")
model += (0 <= x[3] <= 300 , "tiii")
model += (0 <= x[4] <= 400 , "tiv")
model += (0 <= x[5] <= 400 , "tv")
model += (0 <= x[6] <= 300 , "tvi")
model += (0 <= x[7] <= 300 , "tvii")
model += (0 <= x[8] <= 500 , "tviii")
model += (0 <= x[9] <= 500 , "tix")
model += (0 <= x[10] <= 300 , "tx")

model += 13*x[1] + 15*x[2] + 17*x[3] + 19*x[4] + 17*x[5] + 18*x[6] + 14*x[7] + 12*x[8] + 14*x[9] + 15*x[10] + 2*y[1] + 2*y[2] + 2*y[3] + 2*y[4] + 2*y[5] + 2*y[6] + 2*y[7] + 2*y[8] + 2*y[9] + 2*y[10]

status = model.solve()

print(f"The minimal total cost is: {model.objective.value()}")

for var in x.values():
    print(f"{var.name}: {var.value()}")
for var in y.values():
    print(f"{var.name}: {var.value()}")

完整的結果可以在下面看到結果比較

考慮以下示例

>>> x = pulp.LpVariable('x',0, 3, pulp.LpInteger)
>>> y = pulp.LpVariable('y',0, 3, pulp.LpInteger)
>>> prob = pulp.LpProblem('example', pulp.LpMaximize)
>>> prob += x+y  
>>> prob += x+y <= 3

最佳值為3 ,但有幾個 (x,y) 對導致該最佳值,即(3,0), (2,1), (1,2), (0,3)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM