我的纸浆(线性规划批量)代码中不断出现错误,怎么了?

2024-09-30 12:13:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要用线性规划分析一个批量问题,但我的纸浆代码不能正常工作

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:不支持+:“dict”和“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

谢谢


Tags: infororderinteger批量dictcatperiod
1条回答
网友
1楼 · 发布于 2024-09-30 12:13:59

有不少错误

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()

请注意,使用dict进行整数索引不是一种正常的方法。所以,我可能会写:

order = [LpVariable(...) for i in period]

等等

相关问题 更多 >

    热门问题