我在Gurobi Python界面中解决了MIP问题。在求解优化模型之后,我需要按降序对一些决策变量进行排序,并在模型结束时进行一些修改/计算。然后,再次运行我的模型并获得D.V.值。我需要多次重复这个过程。但是,当我使用'排序'语法,我得到错误说: 一个= {} a = sorted(x [i,j,k],reverse = True) TypeError:' Var'对象不可迭代 我也想知道我是否有一个决策变量,如:gurbi.Var x3,2,1(值1.0),是否可以在矩阵中有索引(3,2,4),在其他矩阵中有相应的值1.0 ? 我是gurobi的新手,想知道你是否可以帮助我。 此致
答案 0 :(得分:1)
Python sorted() function采用可变序列(如列表)并根据键或比较函数对其进行排序。最Pythonic选项是创建Gurobi Var objects列表并根据其解决方案值对其进行排序。例如,要按最佳值的降序对变量进行排序,请尝试:
vars = m.getVars()
vars.sort(key=lambda y:y.X, reverse=True)
其中lambda函数检索Var对象的解决方案值(X属性)。现在,如果要对键列表进行排序,请尝试:
keys = # your list of keys ...
keys.sort(key=lambda k:x[k].X, reverse=True)
其中x是你的变量字典。