2

我正在使用硬币或线性规划库。我想构造一个ClpPlusMinusOneMatrix。它的构造函数是:

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

目前还不清楚什么startPositivestartNegative是。如果它与此处描述的另一个类的概念相同,那么矩阵如何区分 +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);
}

谢谢

4

1 回答 1

0

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

于 2016-08-22T02:58:51.387 回答