Pulp: LpVariable.dicts () 'e sınır ekleme

Sep 02 2020

Diyelim ki bu sözlüğe sahibim:

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

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

Her arabaya farklı lowBound ve upBound eklemenin bir yolu var mı lütfen?

Not

Kolay kod sürümü şuna benzer:

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

Lütfen car1 upBound'un 40 ve car 2 upBound'un 1000 olduğuna dikkat edin.

Yanıtlar

1 test1500 Sep 02 2020 at 20:18

Son olarak, harika kodunu kullanarak yaptım: PuLP değişkenlerini ve kısıtlamalarını exec kullanmadan nasıl oluşturabilirim? Çok teşekkürler DSM, kardeşim!

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()

Bir sonraki adım, ön uç uygulamasından dizi değişkenlerini almaktır (yükselme, marj, emek, vb.), Teşekkürler kardeşim, github'ımı gözet