scipy.optimize.

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 der N+1 Eckpunkte im Simplex enthalten, wobei N die 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

minimieren

Schnittstelle 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