fmin#
- scipy.optimize.fmin(func, x0, args=(), xtol=0.0001, ftol=0.0001, maxiter=None, maxfun=None, full_output=0, disp=1, retall=0, callback=None, initial_simplex=None)[Quelle]#
Minimiert eine Funktion mithilfe des Downhill-Simplex-Algorithmus.
Dieser Algorithmus verwendet nur Funktionswerte, keine Ableitungen oder zweiten Ableitungen.
- Parameter:
- funccallable func(x,*args)
Die zu minimierende Zielfunktion.
- x0ndarray
Anfangsschätzung.
- argstuple, optional
Zusätzliche Argumente, die an func übergeben werden, d.h.
f(x,*args).- xtolfloat, optional
Absolute Fehler in xopt zwischen Iterationen, die für die Konvergenz akzeptabel sind.
- ftolnumber, optional
Absoluter Fehler in func(xopt) zwischen Iterationen, der für die Konvergenz akzeptabel ist.
- maxiterint, optional
Maximale Anzahl durchzuführender Iterationen.
- maxfunnumber, optional
Maximale Anzahl der durchzuführenden Funktionsauswertungen.
- full_outputbool, optional
Auf True setzen, wenn fopt- und warnflag-Ausgaben gewünscht sind.
- dispbool, optional
Auf True setzen, um Konvergenz-Meldungen auszugeben.
- retallbool, optional
Auf True setzen, um eine Liste der Lösungen in jeder Iteration zurückzugeben.
- callbackcallable, optional
Wird nach jeder Iteration als callback(xk) aufgerufen, wobei xk der aktuelle Parametervektor ist.
- initial_simplexarray_like of shape (N + 1, N), optional
Anfangssimplex. Wenn angegeben, überschreibt dies x0.
initial_simplex[j,:]sollte die Koordinaten des j-ten Eckpunkts derN+1Eckpunkte im Simplex enthalten, wobeiNdie Dimension ist.
- Rückgabe:
- xoptndarray
Parameter, der die Funktion minimiert.
- foptfloat
Wert der Funktion am Minimum:
fopt = func(xopt).- iterint
Anzahl der durchgeführten Iterationen.
- funcallsint
Anzahl der gemachten Funktionsaufrufe.
- warnflagint
1 : Maximale Anzahl der durchgeführten Funktionsauswertungen. 2 : Maximale Anzahl der Iterationen erreicht.
- allvecslist
Lösung in jeder Iteration.
Siehe auch
minimierenSchnittstelle zu Minimierungsalgorithmen für multivariate Funktionen. Siehe insbesondere die Methode 'Nelder-Mead' im Abschnitt method.
Hinweise
Verwendet einen Nelder-Mead-Simplex-Algorithmus, um das Minimum einer Funktion einer oder mehrerer Variablen zu finden.
Dieser Algorithmus hat eine lange Geschichte erfolgreicher Anwendungen. Er ist jedoch normalerweise langsamer als ein Algorithmus, der Informationen über erste oder zweite Ableitungen verwendet. In der Praxis kann er bei hochdimensionalen Problemen schlechte Leistungen erbringen und ist nicht robust bei der Minimierung komplizierter Funktionen. Außerdem gibt es derzeit keine vollständige Theorie, die beschreibt, wann der Algorithmus erfolgreich zum Minimum konvergiert oder wie schnell er dies tut, wenn er es tut. Sowohl die Kriterien ftol als auch xtol müssen für die Konvergenz erfüllt sein.
Referenzen
[1]Nelder, J.A. und Mead, R. (1965), "A simplex method for function minimization", The Computer Journal, 7, S. 308-313
[2]Wright, M.H. (1996), "Direct Search Methods: Once Scorned, Now Respectable", in Numerical Analysis 1995, Proceedings of the 1995 Dundee Biennial Conference in Numerical Analysis, D.F. Griffiths und G.A. Watson (Hrsg.), Addison Wesley Longman, Harlow, UK, S. 191-208.
Beispiele
>>> def f(x): ... return x**2
>>> from scipy import optimize
>>> minimum = optimize.fmin(f, 1) Optimization terminated successfully. Current function value: 0.000000 Iterations: 17 Function evaluations: 34 >>> minimum[0] -8.8817841970012523e-16