我正在学习如何使用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的代码?
答案 0 :(得分:2)
是的,如果a
是LinExpr()
你可以m.addConstr(a==0.5)
如果您的LP被归类为不可行,您可以尝试计算不可减少的不一致子系统(IIS)。这是不可行的约束子集。您通常可以使用IIS来找出模型中哪些约束组合导致它不可行。它是一个有用的调试工具。
要在Python中计算IIS,请执行以下操作:
model.computeIIS()
model.write('mymodel.ilp')
这将写出一个名为mymodel.ilp的文件,其中包含IIS。