Формулировка LpVariable и ограничений в питоне PuLP - PullRequest
0 голосов
/ 24 октября 2019

У меня вопрос по использованию PuLP. Проблема заключается в следующем: у нас есть одна производственная линия на предприятии, где мы можем производить продукцию A, B или C с производительностью от 0 до 10 тонн / час. Функция стоимости будет выглядеть примерно так: min (electric_cost * (параметр_0 * production_volume + параметр_1))

параметр_1 будет целым числом в зависимости от типа произведенного продукта. (например, продукт A равен 16, продукт B равен 25, продукт C равен 5)

ограничения будут следующими: объем производства A равен 250, объем производства B составляет 500, объем производства C составляет 400, либо производят A или Bили C (поскольку у нас только одна производственная линия)

Я застрял в том, как определить переменные и ограничения. Что у меня сейчас есть:

Я чувствую, что подход к использованию словаря в функции стоимости не является правильным? В результатах переменная Grade не указана?

from pulp import *

prob = LpProblem ("Extruder scheduling problem",LpMinimize)

hours = list(np.linspace(0,len(df_planning)-1,len(df_planning)))
hours = ["h" + str(int(s)) for s in hours]

grades = list(TotalGradeList["grade"].values) 
C_elec = dict(zip(hours, list(maskDAM["Euro"].values)))

intgradedict={0:16,1:25,3:5} 

ProdVol = LpVariable.dicts("ProdVol",hours,Q_min,Q_max) 
Grade = LpVariable.dicts("Grade",hours,1,len(grades))  

prob += lpSum([(C_elec[i]*(coef0+ coef1*ProdVol[i] + intgradedict.get(Grade[i]))) for i in hours]), "electricity cost of production"  
prob.writeLP("model.lp")
prob.solve()

print("Status:", LpStatus[prob.status])
...