Значение переменных сортировки в интерфейсе Python Gurobi

Я решил MIP в Gurobi Python Interface. После решения модели оптимизации мне нужно отсортировать некоторые переменные решения в порядке убывания и выполнить некоторые модификации / вычисления в конце моей модели. Затем снова запустите мою модель и получите значение DV. Мне нужно повторить этот процесс несколько раз. Однако, когда я использую синтаксис 'sorted', я получаю сообщение об ошибке: a={} a= sorted(x[i,j,k],reverse=True) TypeError: объект 'Var' не повторяется, мне также хотелось бы чтобы узнать, есть ли у меня переменная решения, такая как: gurbi.Var x3,2,1 (значение 1,0), возможно ли иметь индексы (3,2,4) в матрице и соответствующее значение 1,0 в другой матрице? Я новичок в gurobi и мне было интересно, если вы можете мне помочь. С уважением

1 ответ

Решение

Функция Python sorted() принимает изменяемую последовательность (например, список) и сортирует ее по ключу или функции сравнения. Наиболее Pythonic вариант заключается в создании списка объектов Gurobi Var и сортировке их в соответствии с их значениями решения. Например, чтобы отсортировать переменные в порядке убывания их оптимальных значений, попробуйте:

vars = m.getVars()
vars.sort(key=lambda y:y.X, reverse=True)

где лямбда-функция извлекает значение решения (атрибут X) для объекта Var. Теперь, если вы хотите отсортировать список ключей, попробуйте:

keys = # your list of keys ...
keys.sort(key=lambda k:x[k].X, reverse=True)

где х ваш словарь переменных.

Другие вопросы по тегам