Une alternative libre à la fonction FMINCON de MATLAB?

Est-il une alternative open-source à MATLAB fmincon fonction pour l'optimisation linéaire contrainte? Je réécris un programme MATLAB pour utiliser Python/ num Py/SciPy et c'est la seule fonction que je n'ai pas trouvé d'équivalent. Une solution basée sur le NumPy serait idéale, mais n'importe quelle langue le fera.

28
demandé sur Peter Mortensen 2008-09-08 19:19:59

8 réponses

votre problème est-il convexe? Linéaire? Non-linéaire? Je suis d'accord que SciPy.optimize va probablement faire le travail, mais fmincon est une sorte de bazooka pour résoudre les problèmes d'optimisation, et vous serez mieux si vous pouvez le confiner à l'une des catégories ci-dessous (dans le niveau croissant de difficulté à résoudre efficacement)

Programme Linéaire (LP) Programme quadratique (QP) Convex Quadratically-Constrained Quadratical Program (QCQP)) Programme de cônes de deuxième ordre (SOCP)) Programme Semidefinite (SDP) Problème Convexe Non Linéaire Problème Non Convexe

il y a aussi des problèmes combinatoires tels que les programmes linéaires mixtes (MILP), mais vous n'avez mentionné aucune sorte de contraintes d'intégralité, il suffit de dire qu'ils tombent dans une classe différente de problèmes.

le paquet CVXOpt vous sera d'une grande utilité si votre problème est convexe.

si votre problème n'est pas convexe, vous devez choisir entre trouver une solution locale ou la solution globale. Beaucoup de résolveurs convexes "sorte de" travail dans un domaine non convexe. Pour trouver une bonne approximation de la solution globale, il faudrait un procédé de recuit simulé ou un algorithme génétique. Trouver la solution globale exigera une énumération de toutes les solutions locales ou une stratégie combinatoire telle que Branch et Bound.

26
répondu user27315 2008-10-13 05:51:51

logiciel d'optimisation Python:

17
répondu Alex 2013-03-08 00:19:31

le paquet open source Python,SciPy, a un assez grand ensemble de routines d'optimisation dont certaines pour les problèmes multivariables avec des contraintes (ce que fmincon fait je crois). Une fois que vous avez installé SciPy, tapez ce qui suit à l'invite de commande Python

aide (scipy.optimiser)

le document qui en résulte est exhaustif et comprend les éléments suivants qui, je crois, pourraient vous être utiles.

   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
13
répondu WalkingRandomly 2008-09-16 09:45:06

GNU Octave est un autre clone MATLAB qui pourrait avoir ce dont vous avez besoin.

4
répondu lindelof 2010-04-21 09:41:27

pour l'optimisation numérique en Python, vous pouvez jeter un oeil à OpenOpt solvers:

http://openopt.org/NLP

http://openopt.org/Problems

3
répondu 2009-04-19 08:10:36

regardez http://www.aemdesign.com/downloadfsqp.htm.

Vous y trouverez le code C qui fournit les mêmes fonctionnalités que fmincon. (Cependant, en utilisant un algorithme différent. Vous pouvez lire le manuel si vous êtes intéressé par les détails.)

c'est open source mais pas sous GPL.

1
répondu Peter Mortensen 2010-03-31 01:15:30

Il y a un programme appelé SciLab c'est un clone de MATLAB.

je ne l'ai pas utilisé, mais il est open source et peut avoir la fonction que vous recherchez.

1
répondu jjnguy 2010-04-21 09:41:59

je ne sais pas si il est là, mais il y a une distribution python appelé Enthought cela pourrait avoir ce que vous cherchez. Il a été conçu spécifiquement pour l'analyse des données a plus de 60 bibliothèques supplémentaires.

0
répondu wcm 2008-09-08 16:02:04