【发布时间】:2020-11-11 01:59:52
【问题描述】:
基本上我试图让每个目的地只有一个起点 所有目的地必须只有一个来源 并非所有来源都必须使用 我希望有人可以帮助我,我知道这不是正确的方式,而是我得到的
from pulp import*
import pandas as pd
origin = ["a","b","c","d","e","f","g","h"]
destination = ["1","2","3","4","5","6","7","8","9","10"]
offer = {"a":3,"b":3,"c":3,"d":3,"e":3,"f":4,"g":3,"h":3}
demand = {"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1}
cost_to_send = {
"a":{"1":1,"2":1,"3":1},
"b":{"2":1,"3":1,"9":1},
"c":{"5":1,"6":1,"7":1},
"d":{"7":1,"9":1,"10":1},
"e":{"3":1,"6":1,"8":1},
"f":{"1":1,"4":1,"7":1,"9":1},
"g":{"4":1,"5":1,"9":1},
"h":{"1":1,"4":1,"8":1}
}
prob = LpProblem("Exercise", LpMinimize)
Routes = [(i,j) for i in origin for j in destination]
quantity = LpVariable.dicts("quantity de envio",(origin,destination),0)
prob += lpSum(quantity[i][j]*cost_to_send[i][j] for (i,j) in Routes)
for j in destination:
prob += lpSum(quantity[i][j] for i in origin) == demand[j]
for i in origin:
prob += lpSum(quantity[i][j] for j in destination) == 1
prob.solve()
print("Status: ", LpStatus[prob.status])
for v in prob.variables():
if v.varValue > 0:
print(v.name, "=", v.varValue)
print("Answer ", value(prob.objective))
【问题讨论】:
标签: python pandas linear-programming pulp