我有一个水桶和一个带有packsize的项目列表,其中packsize是一个单位集合
bckdf=pd.DataFrame.from_dict({0:{'Bucket_Type': 'Veg', 'Capacity':1000},
1:{'Bucket_Type': 'Non-Veg', 'Capacity':500}}).T
items=pd.DataFrame.from_dict({'item_no': {0: '123', 1: '456', 2: '789'},
'item_description': {0: 'Buffet Malabar Paratha 300 gm',
1: 'Mc Cain French Fries Value Pk 750 Gm',
2: 'Yummies Veg Sticks 320 gm Pouch'},
'volume': {0: 0.0714286, 1: 0.214286, 2: 0.0357143}})
我需要在桶中放入至少900个单元,同时确保每个项目的桶中放入的包装数量或多或少相等。每次,我选择一包,我用光了我作为成本制定的包装的体积
prob = LpProblem("LP_Problem", LpMaximize)
buckettype = bckdf[bckdf['Bucket_Type']=='Veg']['Bucket_Type']
capacity = bckdf.set_index(['Bucket_Type'])['Capacity'].to_dict()
itemlist=items['item_no']
combos = [(w,b) for w in buckettype for b in itemlist]
costs = makeDict((buckettype, itemlist),[items['volume']])
itemqtydict = LpVariable.dicts("Combo",(buckettype, itemlist), 0, None, LpInteger)
## Objective function
prob += lpSum([(itemqtydict[w][b]) for (w,b) in combos])
prob += lpSum([(itemqtydict[w][b])*costs[w][b] for (w,b) in combos])>=900
prob += lpSum([(itemqtydict[w][b])*costs[w][b] for (w,b) in combos])<=bckdf[bckdf['Bucket_Type']=='Veg']['Capacity'].values[0]
status=prob.solve(pulp.PULP_CBC_CMD(timeLimit=5,msg=1, gapRel=1))
如何在何处构建约束
more or less equal number of packs are put in the bucket
你基本上已经有了
在这里,您将限制桶中项目的成本等于或大于900
但是如果你只想增加物品的数量,那么你可以使用
相关问题 更多 >
编程相关推荐