fmin_tnc#
- scipy.optimize.fmin_tnc(func, x0, fprime=None, args=(), approx_grad=0, bounds=None, epsilon=1e-08, scale=None, offset=None, messages=15, maxCGit=-1, maxfun=None, eta=-1, stepmx=0, accuracy=0, fmin=0, ftol=-1, xtol=-1, pgtol=-1, rescale=-1, disp=None, callback=None)[Quelle]#
Minimiert eine Funktion mit Variablen, die Beschränkungen unterliegen, unter Verwendung von Gradienteninformationen in einem abgeschnittenen Newton-Algorithmus. Diese Methode kapselt eine C-Implementierung des Algorithmus.
- Parameter:
- funccallable
func(x, *args) Zu minimierende Funktion. Muss eines der folgenden tun:
Gibt f und g zurück, wobei f der Wert der Funktion und g ihr Gradient (eine Liste von Floats) ist.
Gibt den Funktionswert zurück, aber die Gradientenfunktion wird separat als fprime bereitgestellt.
Gibt den Funktionswert zurück und setzt
approx_grad=True.
Wenn die Funktion None zurückgibt, wird die Minimierung abgebrochen.
- x0array_like
Anfängliche Schätzung des Minimums.
- fprimecallable
fprime(x, *args), optional Gradient von func. Wenn None, dann muss entweder func den Funktionswert und den Gradienten zurückgeben (
f,g = func(x, *args)) oder approx_grad muss True sein.- argstuple, optional
Argumente, die an die Funktion übergeben werden.
- approx_gradbool, optional
Wenn True, wird der Gradient numerisch angenähert.
- boundslist, optional
(min, max) Paare für jedes Element in x0, die die Grenzen für diesen Parameter definieren. Verwenden Sie None oder +/-inf für eines von min oder max, wenn in dieser Richtung keine Grenze vorhanden ist.
- epsilonfloat, optional
Wird verwendet, wenn approx_grad True ist. Die Schrittweite bei einer endlichen Differenznäherung für fprime.
- scalearray_like, optional
Skalierungsfaktoren, die auf jede Variable angewendet werden. Wenn None, sind die Faktoren up-low für intervallgebundene Variablen und 1+|x| für die anderen. Standardmäßig None.
- offsetarray_like, optional
Wert, der von jeder Variablen subtrahiert wird. Wenn None, sind die Offsets (up+low)/2 für intervallgebundene Variablen und x für die anderen.
- messagesint, optional
Bitmaske, die zur Auswahl der angezeigten Nachrichten während der Minimierung verwendet wird. Die Werte sind im MSGS-Wörterbuch definiert. Standardmäßig MGS_ALL.
- dispint, optional
Ganzzahlige Schnittstelle zu Nachrichten. 0 = keine Nachricht, 5 = alle Nachrichten
- maxCGitint, optional
Maximale Anzahl von Hesse-Vektor-Auswertungen pro Hauptiteration. Wenn maxCGit == 0, ist die gewählte Richtung -gradient. Wenn maxCGit < 0, wird maxCGit auf max(1,min(50,n/2)) gesetzt. Standardmäßig -1.
- maxfunint, optional
Maximale Anzahl von Funktionsauswertungen. Wenn None, wird maxfun auf max(100, 10*len(x0)) gesetzt. Standardmäßig None. Beachten Sie, dass diese Funktion das Limit überschreiten kann, da Gradienten durch numerische Differenzierung ausgewertet werden.
- etafloat, optional
Schweregrad der Liniensuche. Wenn < 0 oder > 1, wird auf 0,25 gesetzt. Standardmäßig -1.
- stepmxfloat, optional
Maximaler Schritt für die Liniensuche. Kann während des Aufrufs erhöht werden. Wenn zu klein, wird er auf 10,0 gesetzt. Standardmäßig 0.
- accuracyfloat, optional
Relative Genauigkeit für endliche Differenzberechnungen. Wenn <= Maschinenpräzision, wird auf sqrt(Maschinenpräzision) gesetzt. Standardmäßig 0.
- fminfloat, optional
Geschätzter minimaler Funktionswert. Standardmäßig 0.
- ftolfloat, optional
Genauigkeitsziel für den Wert von f im Stoppkriterium. Wenn ftol < 0,0, wird ftol auf 0,0 gesetzt. Standardmäßig -1.
- xtolfloat, optional
Genauigkeitsziel für den Wert von x im Stoppkriterium (nach Anwendung der x-Skalierungsfaktoren). Wenn xtol < 0,0, wird xtol auf sqrt(Maschinenpräzision) gesetzt. Standardmäßig -1.
- pgtolfloat, optional
Genauigkeitsziel für den Wert des projizierten Gradienten im Stoppkriterium (nach Anwendung der x-Skalierungsfaktoren). Wenn pgtol < 0,0, wird pgtol auf 1e-2 * sqrt(accuracy) gesetzt. Die Einstellung auf 0,0 wird nicht empfohlen. Standardmäßig -1.
- rescalefloat, optional
Skalierungsfaktor (in log10), der verwendet wird, um die Neuskalierung des f-Werts auszulösen. Wenn 0, wird bei jeder Iteration neu skaliert. Wenn ein großer Wert, wird nie neu skaliert. Wenn < 0, wird rescale auf 1,3 gesetzt.
- callbackcallable, optional
Wird nach jeder Iteration aufgerufen, als callback(xk), wobei xk der aktuelle Parametervektor ist.
- funccallable
- Rückgabe:
- xndarray
Die Lösung.
- nfevalint
Die Anzahl der Funktionsauswertungen.
- rcint
Rückgabecode, siehe unten.
Siehe auch
minimierenSchnittstelle zu Minimierungsalgorithmen für multivariate Funktionen. Siehe insbesondere die Methode ‚TNC‘ method.
Hinweise
Der zugrunde liegende Algorithmus ist der abgeschnittene Newton-Algorithmus, auch Newton-Conjugate-Gradient genannt. Diese Methode unterscheidet sich von scipy.optimize.fmin_ncg dadurch, dass
sie eine C-Implementierung des Algorithmus kapselt
sie erlaubt jedem Variablen eine obere und untere Grenze.
Der Algorithmus integriert die Randbeschränkungen, indem er die Abstiegsrichtung wie bei einem unbeschränkten abgeschnittenen Newton-Algorithmus bestimmt, aber nie einen Schritt macht, der zu groß ist, um den Raum zulässiger x-Werte zu verlassen. Der Algorithmus verfolgt eine Menge von aktuell aktiven Beschränkungen und ignoriert diese bei der Berechnung der minimal zulässigen Schrittgröße. (Die zugehörigen x-Werte werden fest gehalten.) Wenn die maximal zulässige Schrittgröße Null ist, wird eine neue Beschränkung hinzugefügt. Am Ende jeder Iteration kann eine der Beschränkungen als nicht mehr aktiv betrachtet und entfernt werden. Eine Beschränkung gilt als nicht mehr aktiv, wenn sie aktuell aktiv ist, aber der Gradient für diese Variable von der Beschränkung nach innen zeigt. Die spezifische entfernte Beschränkung ist diejenige, die mit der Variable des größten Index verbunden ist, deren Beschränkung nicht mehr aktiv ist.
Rückgabecodes sind wie folgt definiert:
-1: Unzulässig (untere Grenze > obere Grenze)0: Lokales Minimum erreicht (\(|pg| \approx 0\))1: Konvergiert (\(|f_n-f_(n-1)| \approx 0\))2: Konvergiert (\(|x_n-x_(n-1)| \approx 0\))3: Maximale Anzahl von Funktionsauswertungen erreicht4: Liniensuche fehlgeschlagen5: Alle unteren Grenzen sind gleich den oberen Grenzen6: Kann keinen Fortschritt erzielen7: Benutzer hat das Ende der Minimierung angefordert
Referenzen
Wright S., Nocedal J. (2006), ‚Numerical Optimization‘
Nash S.G. (1984), „Newton-Type Minimization Via the Lanczos Method“, SIAM Journal of Numerical Analysis 21, S. 770-778