Pulp : LpVariable.dicts ()에 경계 추가

Sep 02 2020

이 사전이 있다고 가정 해 봅시다.

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

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

각 차량에 서로 다른 lowBound 및 upBounds를 추가 할 수있는 방법이 있습니까?

노트

쉬운 코드 버전은 다음과 같습니다.

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

car1 upBound는 40이고 car 2 upBound는 1000입니다.

답변

1 test1500 Sep 02 2020 at 20:18

마지막으로, 그의 훌륭한 코드를 사용하여 해냈습니다. exec를 사용하지 않고 PuLP 변수와 제약 조건을 어떻게 생성합니까? 고마워요, 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()

다음 단계는 프런트 엔드 앱에서 배열 변수를 가져 오는 것입니다 (업 바운드, 마진, 노동 등 ..), 감사합니다, 형제, 내 github를 들여다보세요