Я строю LP с Python Pulp:
# Import the PuLP lib
from pulp import *
# Products list
products = ["car", "cycle"]
profit = {"car": 8, "cycle": 12}
uses = {
"Plastic": [2.0, 4.0],
"Wood": [1.0, 1.0],
"Steel": [1.0, 2.0]
}
# Problem variables
x = LpVariable.dicts("products ", products , 0)
# Maximise profit
prob += lpSum([profit[i] * x[i] for i in products ]), "Maximise" // This is working
prob += lpSum([uses[0][i] * x[i] for i in products]) <= 142 ,"MaxPlasticStock" // This is not working
prob.solve()
Это ошибка моего последнего для ограничения l oop MaxPlasticStock:
KeyError: 0
Я также не могу напечатать: (products [x]) или использовать любую переменную LP, подобную этой x [0], я нахожу это странным:
KeyError: 0.
Еще одна ошибка, я не могу назвать ни одно из своих решений переменные, пытающиеся вызвать «цикл»:
prob += x[1] * 5 <= 142 ,"MaxPlasticStock"
дает:
KeyError: 1
Если я изменю свою последнюю строку таким образом, lp будет работать нормально (но ограничение не работает, курс):
prob += lpSum([x[i] for i in products]) <= 142 ,"MaxPlasticStock"
Есть ли у вас какие-либо идеи о том, как использовать объект использования для моих ограничений?
Редактировать: Пожалуйста, не беспокойство, я изменяю lp следующим образом:
plasticAmount = {car : 2.0, cycle : 4.0 }
prob += lpSum([plasticAmount[i] * x[i] for i in products]) <= 142 ,"MaxPlasticStock"
Это длиннее, и я должен разделить вещи, но, по крайней мере, это работает.