[英]I keep getting an error in my pulp (lot sizing with linear programming) code, what is wrong?
我需要用線性規划分析很多尺寸問題,但我的紙漿代碼無法正常工作。
from pulp import *
prob = LpProblem("Lot_Sizing_Problem", LpMinimize)
period = []
for i in range(H):
period.append(i)
order = LpVariable.dicts('order', period, lowBound = 0, upBound = 1, cat='integer'),
orderamount = LpVariable.dicts('orderamount', period, lowBound = 0, cat='integer'),
inventory = LpVariable.dicts('orderamount', period, lowBound = 0, cat='integer'),
prob += lpSum([A*period[i]+h*(inventory[i]+orderamount[i]-D[i]) for i in period])
prob += (inventory[i+1] for i in period) == inventory[i]+orderamount[i]-D[i]
prob += (orderamount[i] for i in period) <= M*order[i]
prob += (orderamount[i] for i in period) == D[i] - inventory[i]
prob.solve()
我不斷收到此錯誤: TypeError: unsupported operand type(s) for +: 'dict' and 'dict'
這些是一些要輸入的示例值,結果應該是 102.0: 這些是這些值的含義:(時間范圍:H,持有成本:h,固定設置成本:A,生產能力:C,需求清單:D,和大M:M)
H=10
h=0.5
A=10
C=18
D=[12,10,13,14,13,15,17,20,19,14]
M=C
謝謝!
有不少錯誤。
from pulp import *
prob = LpProblem("Lot_Sizing_Problem", LpMinimize)
H=10
h=0.5
A=10
C=18
D=[12,10,13,14,13,15,17,20,19,14]
M=100
period = list(range(H))
order = LpVariable.dicts('order', period, lowBound = 0, upBound = 1, cat='integer')
orderamount = LpVariable.dicts('orderamount', period, lowBound = 0, cat='integer')
inventory = LpVariable.dicts('inventory', period, lowBound = 0, cat='integer')
prob += lpSum([A*period[i]+h*(inventory[i]+orderamount[i]-D[i]) for i in period])
for i in period:
if i<H-1:
prob += inventory[i+1] == inventory[i]+orderamount[i]-D[i]
prob += orderamount[i] <= M*order[i]
prob += orderamount[i] == D[i] - inventory[i]
prob.solve()
請注意,使用 dicts 進行整數索引並不是一種正常的方法。 所以,我可能會寫:
order = [LpVariable(...) for i in period]
等等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.