如何使用GUROBI在LP中找到所有可能的最佳解决方案



我已经用GUROBI求解了一个LP模型,我知道该模型有无限多个最优解。正如你在下面看到的,目标函数和 constr 1 具有相同的斜率,并且 constr 1 是绑定的。GUROBI仅显示一种最佳解决方案,但是如何找到所有可能的解决方案(或范围(?如何在更复杂的 LP 模型中找到最佳解决方案的数量?

Maximize
<gurobi.LinExpr: -1.0 x1 + 2.0 x2>
Subject To
non negative x1 : <gurobi.LinExpr: x1> >= 0.0
non negative x2 : <gurobi.LinExpr: x2> >= 0.0
constr 1 : <gurobi.LinExpr: -1.0 x1 + 2.0 x2> <= 4.0
constr 2 : <gurobi.LinExpr: x1 + x2> <= 5.0
constr 3 : <gurobi.LinExpr: x1 + -1.0 x2> <= 3.0

所有最优LP解决方案都是一个困难的概念。它们可能无限多。Gurobi 具有枚举所有最佳整数解(解决方案池(的工具,但这不适用于纯 LP。所以简短的回答是否定的。

可以枚举所有最优基,但它需要一些工作(基本上使用二进制变量对基进行编码:变量或约束是基本的或非基本的(。请参阅此链接。此方法可以通过添加其他约束来实现,也可以通过使用上述解决方案池更有效地实现。尽管在概念上很有趣,但需要注意的是,这种方法对于大型问题并不实用。

相关内容

最新更新