Монетное или линейное программирование: представление ClpPlusMinusOneMatrix

я использую Монетное или линейное программирование библиотека. Я хочу построить 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);
}

Спасибо

2

Решение

Если вы просматриваете исходный код Вот, Вы можете сделать вывод, что startPositve а также startNegative являются. Во-первых, матрица должна быть построена таким образом, чтобы все +1 элементы должны предшествовать всем -1 значениям в строке, если строка Major, или столбцу, если столбец major. затем startPositive[i] это просто индекс элемента первого +1 в строке i, если строка строка или столбец i если основной столбец.

0

Другие решения

Других решений пока нет …