在Gurobi中使用LinExpr()类型创建约束 - Python

0 投票
1 回答
1518 浏览
提问于 2025-04-29 19:38

我正在学习如何使用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)

?

此外,我的实际线性规划模型总是显示不可行模型。有没有有效的方法来调试使用gurobi的代码?

相关文章:

  • 暂无相关问题
暂无标签

1 个回答

2

是的,如果 a 是一个 LinExpr(),你可以使用 m.addConstr(a==0.5) 来添加一个约束。

如果你的线性规划(LP)被判定为不可行,你可以尝试计算一个不可简化的不一致子系统(IIS)。这个子系统是一些无法同时满足的约束条件。通常,你可以通过IIS来找出模型中哪些约束组合导致了不可行。这是一个很有用的调试工具。

在Python中计算IIS的方法是:

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

这会生成一个名为 mymodel.ilp 的文件,里面包含了IIS的信息。

撰写回答