Подтвердить что ты не робот

Альтернатива с открытым исходным кодом для функции fmincon MATLAB?

Есть ли альтернатива open-source для MATLAB fmincon функция для ограниченной линейной оптимизации? Я переписываю программу MATLAB для использования Python/NumPy/SciPy, и это единственная функция, для которой я не нашел эквивалент. Решение на основе NumPy было бы идеальным, но любой язык будет делать.

4b9b3361

Ответ 1

Является ли ваша проблема выпуклой? Линейный? Нелинейная? Я согласен с тем, что SciPy.optimize, вероятно, выполнит эту работу, но fmincon - это своего рода базака для решения проблем оптимизации, и вам будет лучше, если вы сможете ограничить ее одной из нижеуказанных категорий (в возрастающем уровне сложности решить эффективно)

Линейная программа (LP) Квадратичная программа (QP) Выпуклая квадратично-ограниченная квадратичная программа (QCQP) Программа конуса второго порядка (SOCP) Semidefinite Program (SDP) Нелинейная выпуклая проблема Невыпуклая проблема

Существуют также комбинаторные проблемы, такие как смешанные целые линейные программы (MILP), но вы не упоминали каких-либо ограничений целостности, достаточно сказать, что они попадают в другой класс проблем.

Пакет CVXOpt будет очень полезен вам, если ваша проблема выпукла.

Если ваша проблема не выпуклая, вам нужно выбрать между локальным решением или глобальным решением. Многие выпуклые решатели "работают" в невыпуклой области. Поиск хорошего приближения к глобальному решению потребует некоторой формы Имитированного отжига или генетического алгоритма. Поиск глобального решения потребует перечисления всех локальных решений или комбинаторной стратегии, такой как Branch and Bound.

Ответ 3

Пакет Python с открытым исходным кодом, SciPy, имеет довольно большой набор оптимизационных подпрограмм, включая некоторые для многовариантных задач с ограничениями (которые что я считаю). После установки SciPy введите в командной строке Python следующее:

помощь (scipy.optimize)

Полученный документ обширен и включает в себя следующее, которое, я считаю, может вам пригодиться.

   Constrained Optimizers (multivariate)

   fmin_l_bfgs_b -- Zhu, Byrd, and Nocedal L-BFGS-B constrained optimizer
                      (if you use this please quote their papers -- see help)

   fmin_tnc      -- Truncated Newton Code originally written by Stephen Nash and
                      adapted to C by Jean-Sebastien Roy.

   fmin_cobyla   -- Constrained Optimization BY Linear Approximation

Ответ 4

GNU Octave - это еще один клон MATLAB, который может иметь то, что вам нужно.

Ответ 6

Существует программа под названием SciLab, которая является клоном MATLAB.

Я не использовал его вообще, но он имеет открытый исходный код и может иметь функцию, которую вы ищете.

Ответ 7

Посмотрите http://www.aemdesign.com/downloadfsqp.htm.

Здесь вы найдете код C, который обеспечивает ту же функциональность, что и fmincon. (Однако, используя другой алгоритм, вы можете прочитать руководство, если вы заинтересованы в деталях.)

Он с открытым исходным кодом, но не под GPL.

Ответ 8

Я не знаю, есть ли там там, но есть дистрибутив python под названием Enthought, который может иметь то, что вы ищете для. Он был разработан специально для анализа данных, имеет более 60 дополнительных библиотек.