Linear programming 为什么Gurobi生成松弛变量?

Linear programming 为什么Gurobi生成松弛变量?,linear-programming,gurobi,Linear Programming,Gurobi,我有以下文件: max -x4-x5-x6-x7 s.t x0+x1+x4=1 x2+x3+x5=1 x0+x2+x6=1 x1+x3+x7=1 古罗比给了我以下基数B=[1,0,2,10],在我的模型中,我有8个变量和rank(A)=4,但在基数中,我有变量x10。我的问题是,为什么即使秩(A)=4,Gurobi也会生成松弛变量?如何得到一个只包含原始变量(从x0到x7的变量)的最优基?这个问题是退化的。有多个最优基给出相同的原始解。换句话说,一些变量是基本的。这在实

我有以下文件:

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

古罗比给了我以下基数
B=[1,0,2,10]
,在我的模型中,我有8个变量和
rank(A)=4
,但在基数中,我有变量x10。我的问题是,为什么即使秩(A)=4,Gurobi也会生成松弛变量?如何得到一个只包含原始变量(从x0到x7的变量)的最优基?这个问题是退化的。有多个最优基给出相同的原始解。换句话说,一些变量是基本的。这在实践中经常发生,你不必担心

让事情变得更复杂:还有多个最优原始解;所以我们说我们有原始简并和对偶简并

我的问题是,为什么即使秩(A)=4,Gurobi也会生成松弛变量

对于像古罗比这样的解算器(即不是一个表解算器),LP问题有n个结构变量和m个逻辑变量(也称为slacks)。松弛变量是隐式的,它们不是“生成的”(从某种意义上说,矩阵A是用单位矩阵进行物理扩充的)。同样,这也不是什么值得担心的事情

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

嗯,这是一个最佳的基础。那么,为什么古洛比会花时间做更多的旋转运动,试图让所有的休闲裤都成为非基本的呢?没人会这么做。他们平等地对待结构变量和逻辑变量

强制变量位于基中并不是那么容易的。自由变量最有可能处于(最佳)基础上(但无100%保证)。您还可以指定Gurobi的高级基础。在极端情况下:如果这个高级基础是最优的(并且是可行的),古洛比将不会做任何旋转


我相信这个问题有83个最佳(和可行)的基础。他们中只有一个人的裤子都是NB的。我认为要找到这个解决方案并不容易,即使您可以访问单纯形代码,并且可以对其进行更改(在找到最佳解决方案后),这样它就可以继续从基础上旋转宽松裤。我认为您需要(显式或隐式)列举最佳基数。

谢谢您的回答。我试图通过:
for(size\t j=4;j)来指定Gurobi的高级基础