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

StackOverflow https://stackoverflow.com/questions/49926

Вопрос

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

Это было полезно?

Решение

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

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

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

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

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

Другие советы

Программное обеспечение для оптимизации Python:

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

справка (scipy.optimize)

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

   Constrained Optimizers (multivariate)

   fmin_l_bfgs_b -- Zhu, Byrd, and Nocedal's 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

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

Для численной оптимизации в Python вы можете ознакомиться с решателями OpenOpt:

http://openopt.org/NLP

http://openopt.org/Problems

Взгляните на http://www.aemdesign.com/downloadfsqp.htm.

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

Это открытый исходный код, но не под лицензией GPL.

Существует программа под названием SciLab ( Скалабор ) это клон MATLAB.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top