возникли проблемы при создании пригодного для использования словаря для моего LP - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь построить 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 -

Кто-нибудь знает, как это можно сделать ? Спасибо за вашу помощь!

...