2016-08-16 73 views
2

我正在使用Coin-or Linear Programming庫。我想構建一個ClpPlusMinusOneMatrix。它的構造是:硬幣或線性編程: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); 
} 

感謝

+0

你確定這個例子給你'[[1 -1] [1 -1]]嗎? – Holt

+0

我不知道這個答案給出了什麼,這部分是問題。我在問我將如何構造1x4矩陣[1,-1,1 -1]。 –

+0

線性規劃與[標籤:線性代數]無關。 – EJP

回答

0

如果你瀏覽源代碼here,你可以推斷出什麼startPositvestartNegative是。首先,必須構造矩陣,使得所有+1元素必須在一行中的所有-1值之前,如果是行主要或列,如果是列主要。那麼startPositive[i]簡單地說就是行i中的第一個+1的元素索引,如果是行主,或者列是主要的列i