Simplex-Methode (Einzelmethode) in Python

Einführung

Ich suche nach einer vorhandenen Implementierung der Simplex-Methode (Einzelmethode), um aus irgendeinem Grund ein lineares Programmierproblem zu lösen. Für diejenigen, die schwach sind und keine OSS-Löser (COIN-OR CLP, GLPK usw.) lesen möchten, die mit C / C ++ zugeschlagen wurden Schreiben Sie eine Notiz, dass dies eine relativ glaubwürdige Python-Implementierung ist. Es ist keine einfache Methode von Nelder-Mead.

scipy.optimize.linprog https://docs.scipy.org/doc/scipy-0.18.1/reference/generated/scipy.optimize.linprog.html scipy ist eine bekannte Bibliothek für numerische Python-Berechnungen Kürzlich wurde die Implementierung der Unit-Methode durch Python hinzugefügt.

Numerische Berechnungspakete in der LL-Sprache bieten normalerweise Methoden zur Lösung von Optimierungsproblemen, aber ich denke, dass der Inhalt oft nur eine Bindung eines vorhandenen Lösers ist. Es ist schön, eine reine Python-Implementierung zu haben. Es ist eine Bibliothek mit vielen Benutzern, und es gibt Testcode. Wenn es also um eine reine Implementierung in der LL-Sprache geht, denke ich, dass es wahrscheinlich darum geht.

cylp https://github.com/coin-or/CyLP Dies ist keine Python-Implementierung der Simplex-Methode. Eine Bibliothek, mit der Sie in C ++ geschriebene Löser namens CLP und CBC mit Python anpassen können. Das detaillierte Design ist in [diesem Dokument] beschrieben (http://link.springer.com/article/10.1007/s12532-015-0094-2).

Wenn Sie nur die Oleore-Pivot-Regel implementieren möchten, können Sie damit sowohl die Berechnungsgeschwindigkeit als auch die Einfachheit erreichen. Pivot-Regeln können alles sein, aber selbst wenn Sie eine Rückruffunktion haben, die Sie für jede Iteration der Unit-Methode aufrufen möchten, können Sie dies mit cylp tun.

Wenn Sie sich Implementierung von Dantzig-Regeln ansehen, werden Sie sicherlich verstehen, PivotPythonBase Sie können die einfache Methode der Oleore-Pivot-Regel ausführen, indem Sie einige der Schnittstellen von implementieren.

Wenn Sie sich https://github.com/coin-or/CyLP/blob/master/cylp/py/pivots/ ansehen, finden Sie Implementierungen verschiedener Pivot-Regeln, damit Sie studieren können.

Zum Zeitpunkt meiner Bestätigung war der Übergang zur Python 3-Serie noch nicht abgeschlossen, aber ich komme zur Pull-Anfrage, also dieser Zweig Wenn Sie verwenden, können Sie möglicherweise cylp mit Python3 verwenden.

Recommended Posts

Simplex-Methode (Einzelmethode) in Python
Private Methode in Python
Das Unterdrücken von Methodenüberschreibungen in Python
Simulieren Sie die Monte-Carlo-Methode in Python
Hash-Methode (Open-Address-Methode) in Python
Quadtree in Python --2
Python in der Optimierung
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
Geokodierung in Python
SendKeys in Python
Metaanalyse in Python
Unittest in Python
Epoche in Python
Zwietracht in Python
Deutsch in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
Plink in Python
FizzBuzz in Python
SQLite in Python
Schritt AIC in Python
LINE-Bot [0] in Python
CSV in Python
Reverse Assembler mit Python
Reflexion in Python
Konstante in Python
nCr in Python.
Format in Python
Scons in Python 3
Puyopuyo in Python
Python in Virtualenv
PPAP in Python
Quad-Tree in Python
Reflexion in Python
Chemie mit Python
Johnson-Methode (Python)
Hashbar in Python
DirectLiNGAM in Python
LiNGAM in Python
In Python reduzieren
[Python] Semi-Lagrange-Methode
In Python flach drücken
Methode zum Erstellen einer Python-Umgebung in Xcode 6
Elektronenmikroskopsimulation in Python: Mehrschichtmethode (1)
Elektronenmikroskopsimulation in Python: Mehrschichtmethode (2)
Ausrichtungsalgorithmus durch Einfügemethode in Python
Sortierte Liste in Python
Täglicher AtCoder # 36 mit Python
AtCoder # 2 jeden Tag mit Python
Täglicher AtCoder # 32 in Python
Täglicher AtCoder # 18 in Python
Singleton-Muster in Python
Dateioperationen in Python
Tastenanschlag in Python