python,gurobi:有效地添加约束

时间:2018-11-09 16:41:10

标签: python gurobi

我正在尝试用gurobipy优化具有800多个尺寸和3000多个不等式的模型。由于找不到用于添加整个矩阵作为约束的方法,因此添加了以下代码:

for index,inequality in enumerate(inequalities):
    expression = 0
    for index2,variable in enumerate(inequality):
        expression += variable*x[index2]
    m.addConstr(expression >= rhs[index])

,其中x是变量。程序的这一部分需要70秒钟以上的时间,而问题在几分之一秒内就得到了优化。有人可以向我指出如何更有效地添加约束的方向吗?

1 个答案:

答案 0 :(得分:0)

由于几乎所有矩阵都通过更改线而由零组成,因此我能够将时间缩短到一秒以下

for index2,variable in enumerate(inequality):

for index2,variable in [(index2,variable) for index2,variable in enumerate(inequality) if variable!=0]:

,因为只需要运行一小部分操作。我仍然会对将这些约束添加到模型中的更简洁的方式感兴趣