я использую Монетное или линейное программирование библиотека. Я хочу построить ClpPlusMinusOneMatrix. Его конструктор:
ClpPlusMinusOneMatrix (int numberRows,
int numberColumns,
bool columnOrdered,
const int *indices,
const CoinBigIndex *startPositive,
const CoinBigIndex *startNegative);
Не совсем понятно, что startPositive
а также startNegative
являются. Если это та же концепция, что описана для другого класса Вот, тогда как матрица дифференцирует +1 и -1 вейлы?
Например, если я хочу реализовать матрицу 1×4: [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);
}
Спасибо
Если вы просматриваете исходный код Вот, Вы можете сделать вывод, что startPositve
а также startNegative
являются. Во-первых, матрица должна быть построена таким образом, чтобы все +1 элементы должны предшествовать всем -1 значениям в строке, если строка Major, или столбцу, если столбец major. затем startPositive[i]
это просто индекс элемента первого +1 в строке i
, если строка строка или столбец i
если основной столбец.
Других решений пока нет …