微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么Gurobi生成松弛变量?

如何解决为什么Gurobi生成松弛变量?

我有以下LP:

max -x4-x5-x6-x7
s.t x0+x1+x4=1
    x2+x3+x5=1
    x0+x2+x6=1
    x1+x3+x7=1

Gurobi为我提供了以下基数B=[1,2,10],在我的模型中,我有8个变量和rank(A)=4,但在基数中,我有变量x10。我的问题是,为什么即使在rank(A)= 4的情况下,Gurobi也会生成松弛变量?以及如何获得仅包含原始变量(变量从x0到x7)的最佳基数?

解决方法

问题是退化的。有多个给出相同原始解的最优基。换句话说,一些变量是基本的。实际上,这种情况经常发生,您不必为此担心。

使事情变得更复杂:还存在多个最优的原始解;所以我们说我们既有原始的也有双重的。

我的问题是,为什么即使在rank(A)= 4的情况下,Gurobi也会生成松弛变量?

对于像Gurobi这样的求解器(即不是tableau求解器),LP问题具有n个结构变量和m个逻辑变量(也称为松弛)。松弛变量是隐式变量,它们不是“生成的”(在某种意义上,矩阵A在物理上用恒等矩阵进行了扩充)。同样,这不必担心。

以及如何获得仅包含原始变量(变量从x0到x7)的最佳基数?

嗯,这是一个最佳的基础。那么,为什么Gurobi会花费时间并做更多的工作来尝试使所有的休闲裤都不基本呢? AFAIK没有求解器可以做到这一点。他们将结构和逻辑变量视为平等。

强制变量成为基础并不是那么容易。一个自由变量很可能以(最佳)为基础(但没有100%保证)。您也可以指定Gurobi的高级基础。极端的是:如果这种先进的基础是最佳的(并且是可行的),那么古罗比将不会做任何事情。

我相信这个特定的问题有83个最佳(和可行的)基础。他们中只有一个拥有所有的NB。我认为找到这种解决方案并不容易,即使您可以访问Simplex代码并可以对其进行更改(因此,在找到最佳解决方案之后),它仍会继续消除松弛。我认为您需要(明确或隐式)枚举最佳基数。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。