#python #typeerror #pulp
Вопрос:
Реализация транспортной проблемы в python
https://colab.research.google.com/drive/1ZMW3k-kk_0Zn6esTLPi5D9gyxWoAD4to?usp=sharing
from pulp import *
destination = ["D1" , "D2" , "D3"]
origin = ["O1", "O2","O3" ,"O4"]
supply = {
"O1" : 5,
"O2" : 8,
"O3" : 7,
"O4" : 14
}
demand = {
"D1" : 7,
"D2" : 9,
"D3" : 18
}
cost = {
"O1" :{"D1" : 2 , "D2" : 7 , "D3" : 4},
"O2" :{"D1" : 3 , "D2" : 3 , "D3" : 1},
"O3" :{"D1" : 5 , "D2" : 4 , "D3" : 7},
"O4" :{"D1" : 1 , "D2" : 6 , "D3" : 2}
}
prob = LpProblem("Transportation" , LpMinimize)
routes = [(i , j) for i in origin for j in destination]
route_variables = LpVariable.dicts("Route" , (origin , destination) , LpInteger)
# add the objective function in prob variable
prob = lpSum([route_variables[o][d]*cost[o][d] for (o,d) in routes])
# add the constraints in prob variable
# supply constraints
for o in origin:
prob = lpSum([route_variables[o][d] for d in destination]) <= supply[o]
# demand constraints
for d in destination:
prob = lpSum([route_variables[o][d] for o in origin]) >= demand[d]
prob.solve()
Всякий раз, когда я запускаю свой код, я получаю эту ошибку, и я не понимаю, почему.
Ответ №1:
Просто замените строку:
route_variables = LpVariable.dicts("Route" , (origin , destination) , LpInteger)
Для:
route_variables = LpVariable.dicts("Route" , (origin , destination) , cat=LpInteger)
Это связано с тем, что LpVariable.dicts выглядит как:
def dicts(self, name, indexs, lowBound = None, upBound = None, cat = LpContinuous, indexStart = []):
Ответ №2:
Для того, чтобы проблема была решена в первую очередь, проблема должна быть записана в файл lp. Используйте утверждение
prob.writeLP("NameofFile.lp")
перед вычислением с помощью prob.решите()