minimize(method=’SLSQP’)#

scipy.optimize.minimize(fun, x0, args=(), method=None, jac=None, hess=None, hessp=None, bounds=None, constraints=(), tol=None, callback=None, options=None)

Minimiert eine skalare Funktion von einer oder mehreren Variablen mittels Sequential Least Squares Programming (SLSQP).

Parameter:
ftolfloat

Präzisionsziel für den Wert von f im Stoppkriterium. Dieser Wert steuert die endgültige Genauigkeit für die Überprüfung verschiedener Optimalitätsbedingungen; der Gradient des Lagrange-Multiplikators und die absolute Summe der Einschränkungsverletzungen sollten niedriger sein als ftol. Ebenso werden die berechnete Schrittgröße und die Änderungen der Zielfunktion gegen diesen Wert geprüft. Standard ist 1e-6.

epsfloat

Schrittgröße, die für die numerische Approximation des Jacobians verwendet wird.

dispbool

Auf True setzen, um Konvergenzmeldungen auszugeben. Wenn False, wird verbosity ignoriert und auf 0 gesetzt.

maxiterint

Maximale Anzahl von Iterationen.

finite_diff_rel_stepNone oder array_like, optional

Wenn jac in ['2-point', '3-point', 'cs'] dann die relative Schrittgröße, die für die numerische Approximation von jac verwendet werden soll. Die absolute Schrittgröße wird berechnet als h = rel_step * sign(x) * max(1, abs(x)), möglicherweise angepasst, um in die Grenzen zu passen. Für method='3-point' wird das Vorzeichen von h ignoriert. Wenn None (Standard), dann wird die Schrittgröße automatisch ausgewählt.

workersint, map-ähnlicher aufrufbarer Typ, optional

Ein map-ähnlicher aufrufbarer Typ, wie z.B. multiprocessing.Pool.map, zur parallelen Auswertung von numerischen Differenzierungen. Diese Auswertung erfolgt als workers(fun, iterable).

Hinzugefügt in Version 1.16.0.

Rückgabe:
resOptimizeResult

Das Optimierungsergebnis, dargestellt als ein OptimizeResult-Objekt. In diesem wörterbuchähnlichen Objekt sind die folgenden Felder von besonderer Bedeutung: x das Lösungsarray, success ein Boolesches Flag, das anzeigt, ob der Optimizer erfolgreich beendet wurde, message, das den Grund für die Beendigung beschreibt, und multipliers, das die Karush-Kuhn-Tucker (KKT)-Multiplikatoren für die QP-Approximation enthält, die bei der Lösung des ursprünglichen nichtlinearen Problems verwendet wird. Siehe Notes unten. Siehe auch OptimizeResult für eine Beschreibung anderer Attribute.

Hinweise

Die KKT-Multiplikatoren werden im Attribut OptimizeResult.multipliers als NumPy-Array zurückgegeben. Wenn die Dimension der Gleichheitsnebenbedingungen mit meq und die der Ungleichheitsnebenbedingungen mit mineq bezeichnet wird, dann enthält der zurückgegebene Array-Slice m[:meq] die Multiplikatoren für die Gleichheitsnebenbedingungen, und die restlichen m[meq:meq + mineq] enthalten die Multiplikatoren für die Ungleichheitsnebenbedingungen. Die Multiplikatoren, die den Grenz-Ungleichheiten entsprechen, werden nicht zurückgegeben. Siehe [1] S. 321 oder [2] für eine Erklärung, wie diese Multiplikatoren zu interpretieren sind. Das interne QP-Problem wird mit den Methoden in [3] Kapitel 25 gelöst.

Beachten Sie, dass wenn neue-Stil NonlinearConstraint oder LinearConstraint verwendet wurden, minimize diese zuerst in alte-Stil Constraint-Wörterbücher umwandelt. Es ist möglich, dass eine einzelne neue-Stil-Einschränkung gleichzeitig sowohl Ungleichheits- als auch Gleichheitseinschränkungen enthält. Das bedeutet, dass, wenn es innerhalb einer einzelnen Einschränkung eine Mischung gibt, die zurückgegebene Liste der Multiplikatoren eine andere Länge als die ursprünglichen neuen-Stil-Einschränkungen haben wird.

Referenzen

[1]

Nocedal, J. und S J Wright, 2006, „Numerical Optimization“, Springer, New York.

[2]

Kraft, D., „A software package for sequential quadratic programming“, 1988, Tech. Rep. DFVLR-FB 88-28, DLR Deutsches Zentrum für Luft- und Raumfahrt, Deutschland.

[3]

Lawson, C. L. und R. J. Hanson, 1995, „Solving Least Squares Problems“, SIAM, Philadelphia, PA.