【发布时间】:2020-11-03 10:51:04
【问题描述】:
我正在处理 python 中的 LP 问题。
分配选择:
Type Qty_Available Cost For_Protein For_Carb
Protein_Can 50 10 TRUE FALSE
Soup 15 8 FALSE TRUE
EnergyDrink 10 15 TRUE TRUE
数据框
StudentID Age ProteinDef CarbDef
A01 16 TRUE TRUE
A02 17 FALSE TRUE
A03 16 FALSE FALSE
A04 18 TRUE TRUE
A05 16 FALSE TRUE
B01 18 FALSE FALSE
B02 18 TRUE TRUE
B03 20 FALSE TRUE
B04 19 FALSE FALSE
B05 19 TRUE FALSE
我的代码运行良好。我面临的问题是分配选择每个月都会根据可用性而变化,并在 Excel 中提供。但是,我的代码是硬编码的(如下所示)
Protein_Can = pulp.LpVariable.dicts("Protein_Can", df.StudentID, pulp.LpBinary)
Soup= pulp.LpVariable.dictsSoupdf.StudentID, pulp.LpBinary)
EnergyDrink= pulp.LpVariable.dicts("EnergyDrink", df.StudentID, pulp.LpBinary)
cost[id] = Protein_Can[id] * Protein_Can_Cost + Soup[id] * Soup_Cost + EnergyDrink[id] * EnergyDrink_Cost
for id in df.StudentID:
if df.loc[id]['ProteinDef'] == TRUE:
prob += Soup[id] <= 0
if df.loc[id]['CarbDef'] == TRUE:
prob += Protein_Can[id] <= 0
是否有可能确保根据 excel 输入自动定义变量的方法?不是硬编码方式?这样的代码可以动态化吗?
【问题讨论】:
标签: python linear-programming pyomo pulp