LinExpr()在gurobi中键入来创建约束--Python

时间:2014-10-26 22:03:13

标签: python python-2.7 solver gurobi

我正在学习如何使用gurobi。我希望有人能帮助我。

我有一个 LinExpr()类型的变量 让我们称之为: a

经过一些操作后,我最终得到了这个表达式:

  

gurobi.LinExpr:X1 + -0.18 X1010 + -0.72 X11 + -0.18 X1011 + -0.72 X12 + -0.18 X1012 + -0.72 X13 + -0.18 X1013 + X2 + -0.72 X1000 + -0.18 X1010 + -0.72 X1001 + -0.18 X1011 + -0.72 X1002 + -0.18 X1012 + -0.18 X1013

我可以通过以下方式创建约束:

m.addConstr(a==0.5)

此外,我的实际LP模型总是发出不可行的模型。 是否有有效的方法来调试使用gurobi的代码?

1 个答案:

答案 0 :(得分:2)

是的,如果aLinExpr()你可以m.addConstr(a==0.5)

如果您的LP被归类为不可行,您可以尝试计算不可减少的不一致子系统(IIS)。这是不可行的约束子集。您通常可以使用IIS来找出模型中哪些约束组合导致它不可行。它是一个有用的调试工具。

要在Python中计算IIS,请执行以下操作:

model.computeIIS()
model.write('mymodel.ilp')

这将写出一个名为mymodel.ilp的文件,其中包含IIS。