2016-08-16 3 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は最後の2つの要素の価値をどのように知っていますか?

#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

リニアプログラミングは[tag:linear-algebra]とは関係ありません。 – EJP

答えて

0

あなたがソースコードhereを閲覧する場合は、あなたがstartPositvestartNegativeが何であるかを推測することができます。第1に、列がメジャーであれば、すべての+1要素が行のすべての-1値よりも前になければならないように行列を構成する必要があります。その後、startPositive[i]は、単純に行の最初の+1のインデックスですi、行のメジャー、または列の場合はiメジャーの場合。

関連する問題