硬币或线性规划:ClpPlusMinusOneMatrix 表示
Coin-or Linear Programming: ClpPlusMinusOneMatrix representation
我正在使用 Coin-or Linear Programming library. I want to construct a ClpPlusMinusOneMatrix。它的构造函数是:
ClpPlusMinusOneMatrix (int numberRows,
int numberColumns,
bool columnOrdered,
const int *indices,
const CoinBigIndex *startPositive,
const CoinBigIndex *startNegative);
不完全清楚 startPositive
和 startNegative
是什么。如果它与另一个 class 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);
}
谢谢
如果你浏览源代码here,你可以推断出startPositve
和startNegative
是什么。首先,必须构建矩阵,使得所有 +1 元素必须先于一行中的所有 -1 值(如果行优先)或列(如果列优先)。然后 startPositive[i]
只是行 i
中第一个 +1 的元素索引,如果是行主要的,或者列 i
如果是列主要的。
我正在使用 Coin-or Linear Programming library. I want to construct a ClpPlusMinusOneMatrix。它的构造函数是:
ClpPlusMinusOneMatrix (int numberRows,
int numberColumns,
bool columnOrdered,
const int *indices,
const CoinBigIndex *startPositive,
const CoinBigIndex *startNegative);
不完全清楚 startPositive
和 startNegative
是什么。如果它与另一个 class 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);
}
谢谢
如果你浏览源代码here,你可以推断出startPositve
和startNegative
是什么。首先,必须构建矩阵,使得所有 +1 元素必须先于一行中的所有 -1 值(如果行优先)或列(如果列优先)。然后 startPositive[i]
只是行 i
中第一个 +1 的元素索引,如果是行主要的,或者列 i
如果是列主要的。