Целлюлоза Lp: не может достичь переменных - PullRequest
0 голосов
/ 07 января 2020

Я строю 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"

Это длиннее, и я должен разделить вещи, но, по крайней мере, это работает.

...