Question

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

Était-ce utile?

La solution

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

Programme linéaire (LP) Programme quadratique quadratique en quadratique (QP) Programme CONE (programme SOCP (SOCP) Problème convexe non convexe du programme quadratique quadratique (SDP) Problème non convexe non convexe Problème convexe non convexe du programme CONVE

Il existe également des problèmes combinatoires tels que les programmes linéaires à nombres entiers mixtes (MILP), mais vous n'avez mentionné aucune sorte de contraintes d'intégralité, il suffit de dire qu'ils appartiennent à une classe de problèmes différente.

Le package 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 une solution globale.De nombreux solveurs convexes fonctionnent « en quelque sorte » dans un domaine non convexe.Trouver une bonne approximation de la solution globale nécessiterait une forme de recuit simulé ou d'algorithme génétique.Trouver la solution globale nécessitera une énumération de toutes les solutions locales ou une stratégie combinatoire telle que Branch and Bound.

Autres conseils

Logiciel d'optimisation Python :

Le package Python open source,SciPy, dispose d'un ensemble assez large de routines d'optimisation, dont certaines pour les problèmes multivariables avec contraintes (c'est ce que fait fmincon, je crois).Une fois SciPy installé, tapez ce qui suit à l'invite de commande Python

aide (scipy.optimize)

Le document qui en résulte est complet et comprend les éléments suivants qui, je pense, 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

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

Pour l'optimisation numérique en Python, vous pouvez consulter les solveurs OpenOpt :

http://openopt.org/NLP

http://openopt.org/Problems

Jettes un coup d'oeil à http://www.aemdesign.com/downloadfsql.htm.

Vous y trouverez du code C qui offre 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.

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

Je ne l'ai pas utilisé du tout, mais il est open source et pourrait avoir la fonction que vous recherchez.

Je ne sais pas si c'est là, mais il existe une distribution Python appelée Pensée cela pourrait avoir ce que vous recherchez.Il a été conçu spécifiquement pour l'analyse des données et dispose de plus de 60 bibliothèques supplémentaires.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top