2015-04-22 6 views
1

У меня есть линейная программа с порядком N^4 переменных и порядок ограничений N^4. Если я хочу решить это в AMPL, я определяю ограничения один за другим, не беспокоясь о точных матрицах коэффициентов. Проблемы с памятью не возникают. Однако, используя стандартный LP-решатель в Matlab, я должен явно определить матрицы.Большие линейные программы в Matlab

Когда у меня есть переменные с четырьмя индексами, это приведет к массовой разреженной матрице размерного порядка N^4 x N^4. Эта матрица даже не поместится в памяти для нетривиальных размеров проблем.

Есть ли способ обойти эту проблему, используя Matlab, помимо различных методов создания столбцов/резки? Поскольку AMPL справляется с этим, я полагаю, что они либо автоматизируют какую-то декомпозицию, либо каким-то образом решают ЛП, явно не работая с этой разреженной матрицей-монстром.

+1

Вы посмотрели на матрицы MATLAB ['sparse'] (http://mathworks.com/help/matlab/ref/sparse.html)? –

+0

О, это фантастика. Благодаря! –

+0

@ м.с. Подумайте о том, чтобы ответить на этот вопрос, я его выдвину – krisdestruction

ответ

0

Преобразование моего комментария в ответ:

MATLAB поддерживает разреженные матрицы, используя sparse команду, которая позволяет строить свою матрицу ограничений, не превышая пределы памяти.

1

Помимо sparse, упомянутых m.s. вы также можете использовать AMPL API для MATLAB. Это особенно полезно, если у вас уже есть модель AMPL и вы хотите работать с ней с MATLAB.

 Смежные вопросы

  • Нет связанных вопросов^_^