Pulp: Thêm giới hạn vào LpVariable.dicts ()

Sep 02 2020

Giả sử tôi có từ điển này:

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

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

Có cách nào để thêm lowBound và upBounds khác nhau cho mỗi chiếc xe không, xin vui lòng?

Ghi chú

Phiên bản mã dễ dàng trông như thế này:

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

Xin lưu ý rằng xe 1 upBound là 40 và xe 2 upBound là 1000.

Trả lời

1 test1500 Sep 02 2020 at 20:18

Cuối cùng, tôi đã hoàn thành nó, bằng cách sử dụng đoạn mã tuyệt vời của anh ấy: Làm cách nào để tạo các biến và ràng buộc PuLP mà không sử dụng tệp thi hành? Cảm ơn rất nhiều, DSM, người anh em!

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

Bước tiếp theo là lấy các biến mảng từ ứng dụng giao diện người dùng (tăng, lợi nhuận, lao động, v.v.), cảm ơn bạn, anh bạn, hãy xem github của tôi