2008-09-08 4 views
27

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

+0

Вы пробовали Jmodelica? Это open source реализация языка Modelica помимо OpenModelica. Я думаю, что Modelica имеет обложки Python. Пакет Jmodelica поставляется с инструментом оптимизации Optimica, если я не ошибаюсь. – Foad 2017-11-24 09:36:48

ответ

26

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

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

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

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

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

1

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

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

0

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

+1

Два других человека добавили ссылки, которые не были уверены, будут ли их предложения иметь то, что хотел исходный плакат. Почему пустые голоса. Комментарий здесь будет приятным. – wcm 2008-10-21 12:33:15

13

Пакет Python с открытым исходным кодом, SciPy, имеет довольно большой набор оптимизационных подпрограмм, в том числе некоторые для многовариантных проблем с ограничениями (что я и считаю 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 
1

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

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

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

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