Python Результаты сортировки целлюлозы - PullRequest
0 голосов
/ 14 января 2020

Я использую PULP по причинам линейной оптимизации. Все работает нормально, я получаю результаты и печатаю каждый из них:

for i in range (0, len(opt_P)):
    print (opt_P[i].name + " = " + str(opt_P[i].varValue))

вывод выглядит так:

0 = 20.0
1 = 20.0
10 = 1200.0
11 = 1200.0
2 = 20.0
3 = 20.0
4 = 20.0
5 = 20.0
6 = 1200.0
7 = 1200.0
8 = 45.895992
9 = 1200.0

Я хочу отсортировать результаты с помощью функции opt_P.sort() , но я получаю сообщение об ошибке:

'<' не поддерживается между экземплярами 'LpVariable' и 'LpVariable' </p>

Также я пробовал этот opt_P.sort(key=lambda s: s[1]) и этот также: opt_P.sort(key=lambda s: s["name"]) но появляется ошибка:

Объект 'LpVariable' не может быть подписан

Не могли бы вы поддержать меня в решении этой проблемы?

1 Ответ

2 голосов
/ 14 января 2020

Вы можете указать функцию клавиши, которая будет использоваться.

Пример:

>>> vars_list
[x_2, x_3, x_0, x_1, x_9, x_8, x_6, x_4, x_7, x_5]
>>> vars_list.sort(key=lambda x:x.name)
>>> vars_list
[x_0, x_1, x_2, x_3, x_4, x_5, x_6, x_7, x_8, x_9]

или если вы хотите отсортировать их как целые числа

>>> vars_list.sort(key=lambda x:int(x.name))
...