linprog(method=’simplex’)#
- scipy.optimize.linprog(c, A_ub=None, b_ub=None, A_eq=None, b_eq=None, bounds=(0, None), method='highs', callback=None, options=None, x0=None, integrality=None)
Lineare Programmierung: Minimieren einer linearen Zielfunktion unter linearen Gleichheits- und Ungleichheitsbedingungen unter Verwendung des Tableau-basierten Simplex-Algorithmus.
Veraltet seit Version 1.9.0: method=’simplex’ wird in SciPy 1.11.0 entfernt. Er wird durch method=’highs’ ersetzt, da letztere schneller und robuster ist.
Lineare Programmierung löst Probleme der folgenden Form
\[\begin{split}\min_x \ & c^T x \\ \mbox{so dass} \ & A_{ub} x \leq b_{ub},\\ & A_{eq} x = b_{eq},\\ & l \leq x \leq u ,\end{split}\]wobei \(x\) ein Vektor von Entscheidungsvariablen ist; \(c\), \(b_{ub}\), \(b_{eq}\), \(l\) und \(u\) Vektoren sind; und \(A_{ub}\) und \(A_{eq}\) Matrizen sind.
Alternativ, das heißt
minimieren
c @ x
so dass
A_ub @ x <= b_ub A_eq @ x == b_eq lb <= x <= ub
Beachten Sie, dass standardmäßig
lb = 0undub = Nonegilt, es sei denn, dies wird mitboundsangegeben.- Parameter:
- c1-D-Array
Die Koeffizienten der linearen Zielfunktion, die minimiert werden soll.
- A_ub2-D-Array, optional
Die Matrix der Ungleichheitsbedingungen. Jede Zeile von
A_ubgibt die Koeffizienten einer linearen Ungleichheitsbedingung fürxan.- b_ub1-D-Array, optional
Der Vektor der Ungleichheitsbedingungen. Jedes Element stellt eine Obergrenze für den entsprechenden Wert von
A_ub @ xdar.- A_eq2-D-Array, optional
Die Matrix der Gleichheitsbedingungen. Jede Zeile von
A_eqgibt die Koeffizienten einer linearen Gleichheitsbedingung fürxan.- b_eq1-D-Array, optional
Der Vektor der Gleichheitsbedingungen. Jedes Element von
A_eq @ xmuss gleich dem entsprechenden Element vonb_eqsein.- boundsSequenz, optional
Eine Sequenz von
(min, max)-Paaren für jedes Element inx, die die minimale und maximale Wert dieser Entscheidungsvariablen definieren. Verwenden SieNone, um anzuzeigen, dass keine Grenze existiert. Standardmäßig sind die Grenzen(0, None)(alle Entscheidungsvariablen sind nicht-negativ). Wenn ein einzelnes Tupel(min, max)bereitgestellt wird, dienenminundmaxals Grenzen für alle Entscheidungsvariablen.- methodstr
Dies ist die methode-spezifische Dokumentation für ‘simplex’. ‘highs’, ‘highs-ds’, ‘highs-ipm’, ‘interior-point’ (Standard) und ‘revised simplex’ sind ebenfalls verfügbar.
- callbackcallable, optional
Callback-Funktion, die einmal pro Iteration ausgeführt werden soll.
- Rückgabe:
- resOptimizeResult
Ein
scipy.optimize.OptimizeResultmit den Feldern- x1-D-Array
Die Werte der Entscheidungsvariablen, die die Zielfunktion minimieren und gleichzeitig die Bedingungen erfüllen.
- funfloat
Der optimale Wert der Zielfunktion
c @ x.- slack1-D-Array
Die (nominal positiven) Werte der Schlupfvariablen,
b_ub - A_ub @ x.- con1-D-Array
Die (nominal nullen) Residuen der Gleichheitsbedingungen,
b_eq - A_eq @ x.- successbool
True, wenn der Algorithmus erfolgreich eine optimale Lösung findet.- statusint
Eine Ganzzahl, die den Exit-Status des Algorithmus darstellt.
0: Optimierung erfolgreich abgeschlossen.1: Iterationslimit erreicht.2: Problem scheint unzulässig zu sein.3: Problem scheint unbeschränkt zu sein.4: Numerische Schwierigkeiten aufgetreten.- messagestr
Eine Zeichenkette, die den Beendigungsstatus des Algorithmus beschreibt.
- nitint
Die Gesamtzahl der Iterationen in allen Phasen.
Siehe auch
Die Dokumentation für die restlichen Parameter finden Sie unter
scipy.optimize.linprog- Optionen:
- ——-
- maxiterint (Standard: 5000)
Die maximale Anzahl von Iterationen, die in jeder Phase durchgeführt werden sollen.
- dispbool (Standard: False)
Auf
Truesetzen, wenn Indikatoren des Optimierungsstatus bei jeder Iteration auf der Konsole ausgegeben werden sollen.- presolvebool (Standard: True)
Presolve versucht, triviale Unzulässigkeiten zu identifizieren, triviale Unbeschränktheit zu erkennen und das Problem zu vereinfachen, bevor es an den Hauptlöser übergeben wird. Es wird generell empfohlen, die Standardeinstellung
Truebeizubehalten. Setzen Sie aufFalse, wenn Presolve deaktiviert werden soll.- tolfloat (Standard: 1e-12)
Die Toleranz, die bestimmt, wann eine Lösung "nahe genug" an Null in Phase 1 ist, um als grundlegende zulässige Lösung betrachtet zu werden, oder nahe genug an positiv, um als optimale Lösung zu dienen.
- autoscalebool (Standard: False)
Auf
Truesetzen, um eine automatische Äquilibrierung durchzuführen. Erwägen Sie die Verwendung dieser Option, wenn die numerischen Werte in den Bedingungen um mehrere Größenordnungen voneinander abweichen.- rrbool (Standard: True)
Auf
Falsesetzen, um die automatische Entfernung redundanter Gleichungen zu deaktivieren.- blandbool
Wenn True, verwenden Sie Blands Anti-Cycling-Regel [3], um Pivots auszuwählen und Cycling zu verhindern. Wenn False, wählen Sie Pivots, die voraussichtlich schneller zu einer konvergierten Lösung führen. Letztere Methode ist in seltenen Fällen anfällig für Cycling (Nicht-Konvergenz).
- unknown_optionsdict
Optionale Argumente, die von diesem speziellen Löser nicht verwendet werden. Wenn unknown_options nicht leer ist, wird eine Warnung ausgegeben, die alle ungenutzten Optionen auflistet.
Referenzen
[1]Dantzig, George B., Linear programming and extensions. Rand Corporation Research Study Princeton Univ. Press, Princeton, NJ, 1963
[2]Hillier, S.H. und Lieberman, G.J. (1995), „Introduction to Mathematical Programming“, McGraw-Hill, Kapitel 4.
[3]Bland, Robert G. New finite pivoting rules for the simplex method. Mathematics of Operations Research (2), 1977: S. 103-107.