Pulp: добавление границ в LpVariable.dicts()

Допустим, у меня есть этот словарь:

cars = ["car1","car2","car3","car4","car5"]

x = LpVariable.dicts("car",cars, cat='Integer', lowBound=0, upBound=800)

Есть ли способ добавить разные lowBound и upBound для каждой машины, пожалуйста?

Примечание

Упрощенная версия кода выглядит так:

car1 = LpVariable("car1", 0, 40)   
car2 = LpVariable("car2", 0, 1000) 

Обратите внимание, что upBound автомобиля 1 равен 40, а номер upBound автомобиля 2 — 1000.


person test1500    schedule 02.09.2020    source источник
comment
второй аргумент в LpVariable.dicts должен быть указан как понимание списка, чтобы у вас было что-то вроде этого: x = LpVariable.dicts(car, [car for car in cars], cat ='Integer)   -  person Billal Naseem    schedule 02.09.2020
comment
Привет, Биллал, мне нужно установить разные низкие границы.   -  person test1500    schedule 02.09.2020


Ответы (1)


Наконец, я сделал это, используя его отличный код: exec">Как сгенерировать переменные и ограничения PuLP без использования exec? Большое спасибо, DSM, братан!

prob = LpProblem("problem", LpMaximize)

# Setting LP variables
lpVars =["car1","car2","car3"]
upbounds=[40,80,30]
xs = [LpVariable("car{}".format(i+1), lowBound = 0,  upBound = upbounds[i], cat='Integer'  ) for i in range(len(lpVars))]

 # add objective
    margin = [3,2,3]
    total_prof = sum(x * value for x,value in zip(xs, margin))
    prob += total_prof

# add constraint
    labour = [2,1,4]
    total_labour = sum(x * w for x,w in zip(xs, labour))
    prob += total_labour <= 100

 # Solve the problem
    prob.solve()

Следующим шагом является получение переменных массивов из внешнего приложения (upbounds, margin, labour и т. д.), спасибо, братан, загляни в мой github.

person test1500    schedule 02.09.2020
comment
Похоже, правильный способ сделать это есть: stackoverflow. com/questions/7728313/ - person test1500; 06.10.2020