Я пытаюсь построить LP в PULP - я хотел бы взять данные из файла csv (сохраненного локально), вставить эти данные в словарь, а затем передать модель LP l oop через словарь, чтобы присвойте переменные LP.
Вот что у меня пока есть (я немного новичок в python, поэтому прошу прощения за состояние моего кода):
Columns = {}
with open('file','rU') as f:
reader = csv.reader(f)
for row in reader:
if columns:
for i, value in enumerate(row):
columns[i].append(value)
else:
# first row
columns = [[value] for value in row]
as_dict = {c[0] : c[1:] for c in columns}
header1 = as_dict[header1]
header2 = as_dict[header2]
header3 = as_dict[header3]
# ideally, the dictionaries should look something like what's below:
# players = ['sb', 'ak', 'ee', 'cm', 'tk']
# points = {'sb':284.7, 'ak':257.8, 'ee':254.5, 'cm':250.9, 'tk':179.0}
# costs = {'sb':35, 'ak':25, 'ee':24, 'cm':23, 'tk':15}
players_vars = pulp.LpVariable.dicts("header1", header1, 0, cat="Integer")
model = pulp.LpProblem("model", pulp.LpMaximize)
model += pulp.lpSum([header2[i] * players_vars[i] for i in header1])
model += pulp.lpSum([header3[i] * players_vars[i] for i in header1]) <= 80
model.solve()
pulp.LpStatus[model.status]
for variable in model.variables():
print "{} = {}".format(variable.name, variable.varValue)
print pulp.value(model.objective)`
вот ошибка, которую я получаю: модель + = pulp.lpSum ([header2 [i] * Players_vars [i] для i в header1]) TypeError: списочные индексы должны быть целыми числами, а не str -
Кто-нибудь знает, как это можно сделать ? Спасибо за вашу помощь!