硬币或线性编程:ClpPlusMinusOneMatrix表示

时间:2016-08-16 04:56:58

标签: c++ coin-or-cbc

我正在使用Coin-or Linear Programming库。我想构建一个ClpPlusMinusOneMatrix。它的构造函数是:

ClpPlusMinusOneMatrix (int numberRows, 
                       int numberColumns, 
                       bool columnOrdered, 
                       const int *indices, 
                       const CoinBigIndex *startPositive, 
                       const CoinBigIndex *startNegative);

startPositivestartNegative是什么并不完全清楚。如果它与另一个类here描述的概念相同,那么矩阵如何区分+1和-1值?

例如,如果我想实现1x4矩阵:[1 -1 1 -1]。 Clp如何知道最后两个元素的值?

#include <coin/ClpPlusMinusOneMatrix.hpp>

int main()
{
        int indices [4] {0, 1, 2, 3}; 
        CoinBigIndex startPositive [2] {0, 4}; 
        CoinBigIndex startNegative [2] {1, 4}; 
        ClpPlusMinusOneMatrix(1, 4, false, indices, startPositive, startNegative);
}

由于

1 个答案:

答案 0 :(得分:0)

如果您浏览源代码here,则可以推断出startPositvestartNegative是什么。首先,必须构造矩阵,使得所有+1元素必须在行中的所有-1值之前,如果是行主要,或列,如果是列主要。然后,startPositive[i]只是行i中第一个+1的元素索引,如果是行主要,或者列i,如果列为major。