Optimierung und Wurzelsuche (scipy.optimize)#
SciPy optimize bietet Funktionen zur Minimierung (oder Maximierung) von Zielfunktionen, möglicherweise unter Nebenbedingungen. Es enthält Löser für nichtlineare Probleme (mit Unterstützung für lokale und globale Optimierungsalgorithmen), lineare Programmierung, eingeschränkte und nichtlineare Kleinste-Quadrate-Anpassungen, Wurzelsuche und Kurvenanpassung.
Häufig verwendete Funktionen und Objekte, die über verschiedene Löser hinweg gemeinsam genutzt werden, sind
|
Zeigt Dokumentation für zusätzliche Optionen von Optimierungs-Lösern an. |
Repräsentiert das Optimierungsergebnis. |
|
Allgemeine Warnung für |
Optimierung#
Optimierung von skalaren Funktionen#
|
Lokale Minimierung einer skalaren Funktion einer Variablen. |
Die Funktion minimize_scalar unterstützt die folgenden Methoden
Lokale (multivariate) Optimierung#
|
Minimierung einer skalaren Funktion einer oder mehrerer Variablen. |
Die Funktion minimize unterstützt die folgenden Methoden
- minimize(method=’Nelder-Mead’)
- minimize(method=’Powell’)
- minimize(method=’CG’)
- minimize(method=’BFGS’)
- minimize(method=’Newton-CG’)
- minimize(method=’L-BFGS-B’)
- minimize(method=’TNC’)
- minimize(method=’COBYLA’)
- minimize(method=’COBYQA’)
- minimize(method=’SLSQP’)
- minimize(method=’trust-constr’)
- minimize(method=’dogleg’)
- minimize(method=’trust-ncg’)
- minimize(method=’trust-krylov’)
- minimize(method=’trust-exact’)
Nebenbedingungen werden der Funktion minimize als einzelnes Objekt oder als Liste von Objekten aus den folgenden Klassen übergeben
|
Nichtlineare Bedingung für die Variablen. |
|
Lineare Bedingung für die Variablen. |
Einfache Grenzbedingungen werden separat behandelt und es gibt eine spezielle Klasse dafür
|
Grenzbedingung für die Variablen. |
Quasi-Newton-Strategien, die die HessianUpdateStrategy-Schnittstelle implementieren, können verwendet werden, um die Hesse-Matrix in der Funktion minimize zu approximieren (nur für die Methode ‚trust-constr‘ verfügbar). Verfügbare Quasi-Newton-Methoden, die diese Schnittstelle implementieren, sind
Globale Optimierung#
|
Findet das globale Minimum einer Funktion mithilfe des Basin-Hopping-Algorithmus. |
|
Minimiert eine Funktion über einen gegebenen Bereich durch Brute-Force. |
|
Findet das globale Minimum einer multivariaten Funktion. |
|
Findet das globale Minimum einer Funktion mithilfe der SHG-Optimierung. |
|
Findet das globale Minimum einer Funktion mithilfe von Dual Annealing. |
|
Findet das globale Minimum einer Funktion mithilfe des DIRECT-Algorithmus. |
Kleinste-Quadrate und Kurvenanpassung#
Nichtlineare Kleinste-Quadrate#
|
Löst ein nichtlineares Kleinste-Quadrate-Problem mit Grenzen für die Variablen. |
Lineare Kleinste-Quadrate#
|
Löst |
|
Löst ein lineares Kleinste-Quadrate-Problem mit Grenzen für die Variablen. |
|
Nichtparametrische isotonische Regression. |
Kurvenanpassung#
|
Verwendet nichtlineare Kleinste-Quadrate, um eine Funktion f an Daten anzupassen. |
Wurzelsuche#
Skalare Funktionen#
|
Findet eine Wurzel einer skalaren Funktion. |
|
Findet eine Wurzel einer Funktion in einem Intervall mithilfe von Brents Methode. |
|
Findet eine Wurzel einer Funktion in einem Intervall mithilfe von Brents Methode mit hyperbolischer Extrapolation. |
|
Findet eine Wurzel einer Funktion in einem Intervall mithilfe von Ridders Methode. |
|
Findet die Wurzel einer Funktion in einem Intervall mithilfe der Bisektionsmethode. |
|
Findet eine Wurzel einer reellen oder komplexen Funktion mithilfe der Newton-Raphson (oder Sekanten- oder Hallley'schen) Methode. |
|
Findet eine Wurzel mithilfe der TOMS-Algorithmus 748 Methode. |
|
Repräsentiert das Ergebnis der Wurzelsuche. |
Die Funktion root_scalar unterstützt die folgenden Methoden
Die folgende Tabelle listet Situationen und geeignete Methoden auf, zusammen mit den *asymptotischen* Konvergenzraten pro Iteration (und pro Funktionsauswertung) für die erfolgreiche Konvergenz zu einer einfachen Wurzel(*). Die Bisektionsmethode ist die langsamste von allen und fügt bei jeder Funktionsauswertung ein Bit an Genauigkeit hinzu, garantiert aber die Konvergenz. Die anderen bracketing-Methoden erhöhen alle (schließlich) die Anzahl der genauen Bits um etwa 50 % bei jeder Funktionsauswertung. Die ableitungsbasierten Methoden, die alle auf newton basieren, können sehr schnell konvergieren, wenn der Startwert nahe an der Wurzel liegt. Sie können auch auf Funktionen angewendet werden, die auf (einer Teilmenge) der komplexen Ebene definiert sind.
Definitionsbereich von f |
Geklammert? |
Ableitungen? |
Löser |
Konvergenz |
||
|---|---|---|---|---|---|---|
fprime |
fprime2 |
Garantiert? |
Rate(n)(*) |
|||
R |
Ja |
N/A |
N/A |
|
|
|
R oder C |
Nein |
Nein |
Nein |
secant |
Nein |
1.62 (1.62) |
R oder C |
Nein |
Ja |
Nein |
newton |
Nein |
2.00 (1.41) |
R oder C |
Nein |
Ja |
Ja |
halley |
Nein |
3.00 (1.44) |
Siehe auch
scipy.optimize.cython_optimize – Typisierte Cython-Versionen von Wurzelsuchfunktionen
Fixpunktfindung#
|
Findet einen Fixpunkt der Funktion. |
Mehrdimensional#
|
Finde eine Wurzel einer Vektorfunktion. |
Die Funktion root unterstützt die folgenden Methoden
Elementweise Minimierung und Wurzelsuche#
Lineare Programmierung / MILP#
|
Gemischt-ganzzahlige lineare Programmierung |
|
Lineare Programmierung: Minimiert eine lineare Zielfunktion unter linearen Gleichheits- und Ungleichheitsbedingungen. |
Die Funktion linprog unterstützt die folgenden Methoden
Die Methoden Simplex, Interior-Point und Revised Simplex unterstützen Callback-Funktionen, wie z.B.
Eine Beispiel-Callback-Funktion, die die linprog-Callback-Schnittstelle demonstriert. |
Zuordnungsprobleme#
Löst das lineare Summenzuordnungsproblem. |
|
|
Approximiert die Lösung für das quadratische Zuordnungsproblem und das Graph-Matching-Problem. |
Die Funktion quadratic_assignment unterstützt die folgenden Methoden
Dienstprogramme#
Finite-Differenzen-Approximation#
|
Finite-Differenzen-Approximation der Ableitungen einer skalaren oder vektorwertigen Funktion. |
|
Überprüft die Korrektheit einer Gradientenfunktion, indem sie mit einer (Vorwärts-)Finite-Differenzen-Approximation des Gradienten verglichen wird. |
Zeilensuche#
|
Klammert das Minimum einer Funktion ein. |
|
Findet ein Alpha, das die starken Wolfe-Bedingungen erfüllt. |
Hesse-Matrix-Approximation#
|
Linearer Operator für die L-BFGS-approximierte inverse Hesse-Matrix. |
Schnittstelle zur Implementierung von Hesse-Matrix-Update-Strategien. |
Benchmark-Probleme#
|
Die Rosenbrock-Funktion. |
|
Die Ableitung (d.h. der Gradient) der Rosenbrock-Funktion. |
|
Die Hesse-Matrix der Rosenbrock-Funktion. |
|
Produkt der Hesse-Matrix der Rosenbrock-Funktion mit einem Vektor. |
Legacy-Funktionen#
Die unten aufgeführten Funktionen werden für die Verwendung in neuen Skripten nicht empfohlen; alle diese Methoden sind über neuere, konsistentere Schnittstellen zugänglich, die von den oben genannten Schnittstellen bereitgestellt werden.
Optimierung#
Allzweck-multivariate Methoden
|
Minimiert eine Funktion mithilfe des Downhill-Simplex-Algorithmus. |
|
Minimiert eine Funktion mithilfe der modifizierten Powell-Methode. |
|
Minimiert eine Funktion mithilfe eines nichtlinearen konjugierten Gradientenalgorithmus. |
|
Minimiert eine Funktion mithilfe des BFGS-Algorithmus. |
|
Unbeschränkte Minimierung einer Funktion mithilfe der Newton-CG-Methode. |
Beschränkte multivariate Methoden
|
Minimiert eine Funktion func mithilfe des L-BFGS-B-Algorithmus. |
|
Minimiert eine Funktion mit Variablen, die Grenzen unterliegen, unter Verwendung von Gradienteninformationen in einem abgeschnittenen Newton-Algorithmus. |
|
Minimiert eine Funktion mithilfe der COBYLA-Methode (Constrained Optimization By Linear Approximation). |
|
Minimiert eine Funktion mithilfe von Sequential Least Squares Programming |
Univariate (skalare) Minimierungsmethoden
|
Beschränkte Minimierung für skalare Funktionen. |
|
Gibt bei einer Funktion einer Variablen und einer möglichen Klammer einen lokalen Minimierer der Funktion zurück, der bis zu einer Bruchteilgenauigkeit von tol isoliert ist. |
|
Gibt den Minimierer einer Funktion einer Variablen mithilfe der Golden-Section-Methode zurück. |
Kleinste Quadrate#
|
Minimiert die Summe der Quadrate eines Gleichungssystems. |
Wurzelsuche#
Allgemeine nichtlineare Löser
|
Findet die Wurzeln einer Funktion. |
|
Findet eine Wurzel einer Funktion mithilfe von Broydens erster Jacobi-Approximation. |
|
Findet eine Wurzel einer Funktion mithilfe von Broydens zweiter Jacobi-Approximation. |
Ausnahme, die ausgelöst wird, wenn ein nichtlinearer Löser nicht innerhalb der angegebenen maxiter konvergiert. |
Großskalige nichtlineare Löser
|
Findet eine Wurzel einer Funktion mithilfe einer Krylov-Approximation für die inverse Jacobi-Matrix. |
|
Findet eine Wurzel einer Funktion mithilfe von (erweitertem) Anderson-Mixing. |
|
Findet eine Wurzel einer Funktion mithilfe von Broydens erster Jacobi-Approximation. |
|
Ein einfacher Wrapper, der die Jacobi-Matrix mithilfe der solve-Methode invertiert. |
|
Findet eine Wurzel einer Funktion mithilfe einer Krylov-Approximation für die inverse Jacobi-Matrix. |
Einfache Iterationslöser
|
Findet eine Wurzel einer Funktion mithilfe einer abgestimmten diagonalen Jacobi-Approximation. |
|
Findet eine Wurzel einer Funktion mithilfe einer skalaren Jacobi-Approximation. |
|
Findet eine Wurzel einer Funktion mithilfe der diagonalen Broyden-Jacobi-Approximation. |