Open-source-alternative zu MATLAB ist die Funktion fmincon?
-
09-06-2019 - |
Frage
Ist es eine open-source-alternative zu MATLAB ist fmincon
Funktion für die eingeschränkte lineare Optimierung?Ich bin umschreiben ein MATLAB-Programm, um die Verwendung von Python / NumPy / SciPy und dies ist die einzige Funktion, die ich gefunden habe, ein äquivalent zur.Ein NumPy-basierte Lösung wäre ideal, aber jede Sprache tut.
Lösung
Ist Ihr problem konvex?Linear?Non-linear?Ich Stimme zu, dass SciPy.optimieren, wird wahrscheinlich die Arbeit erledigen, aber fmincon ist eine Art bazooka für die Lösung von Optimierungsproblemen, und Sie werden besser, wenn Sie können, beschränken Sie es auf eine der Kategorien unten (in steigendem Schwierigkeitsgrad zu lösen effizient)
Lineares Programm (LP) Quadratisches Programm (QP) Konvex-Quadratisch-Constrained Quadratic Program (QCQP) Second Order Cone Program (SOCP) Semidefinite Program (SDP) Nicht-Lineare, Konvexe Problem Nicht-Konvexes Problem
Es gibt auch combinatoric Probleme wie Mixed-Integer Linear Programs (MILP), aber Sie hat nicht erwähnt, jede Art von Vollständigkeit Einschränkungen, es genügt zu sagen, dass Sie fallen in eine andere Klasse von Problemen.
Die CVXOpt Paket wird von großem nutzen für Sie, wenn Ihre problem, ist konvex.
Wenn Ihr problem nicht konvex, Sie müssen wählen Sie zwischen der Suche nach einem lokalen Lösung oder globalen Lösung.Viele konvexe Löser 'Art' work in a non-convex domain.Finden eine gute Näherung an die Globale Lösung würde erfordern irgendeine form Simulated Annealing oder Genetische Algorithmus.Finden Sie die Globale Lösung erfordert eine Aufzählung aller lokalen Lösungen oder einer kombinatorischen Strategie wie Branch-and-Bound.
Andere Tipps
Python-Optimierungs-software:
OpenOpt http://openopt.org (dies ist numpy-basierte, wie Sie möchten, mit automatische Unterscheidung von FuncDesigner)
Pyomo https://software.sandia.gov/trac/coopr/wiki/Package/pyomo
Die open-source-Python-Paket,SciPy, hat eine ziemlich große Reihe von Optimierungs-Routinen, einschließlich einiger für multivariable Probleme mit Einschränkungen (was fmincon tut, glaube ich).Sobald Sie SciPy installiert haben geben Sie Folgendes an der Python-Eingabeaufforderung
Hilfe(scipy.optimieren)
Das resultierende Dokument ist sehr umfangreich und umfasst die folgenden, die ich glauben, Sie könnten von Interesse für Sie sein.
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 Octave ist ein weiteres MATLAB-Klon, der vielleicht haben, was Sie brauchen.
Für die numerische Optimierung in Python können Sie einen Blick auf OpenOpt Löser:
Haben Sie einen Blick auf http://www.aemdesign.com/downloadfsqp.htm.
Dort finden Sie C-code, bietet die gleiche Funktionalität wie fmincon
.(Aber mit einem anderen Algorithmus.Sie können das Handbuch Lesen, wenn Sie interessiert sind in die details.)
Es ist open source, aber nicht unter der GPL.
Es gibt ein Programm namens SciLab das ist eine MATLAB-Klon.
Ich habe nicht verwendet, aber es ist open source und kann haben die Funktion, die Sie suchen.
Ich weiß nicht, ob es ist vorhanden, aber es gibt eine python-distribution, genannt Enthought das haben könnte, was Sie suchen.Es wurde speziell für die Analyse der Daten hat über 60 zusätzliche Bibliotheken.