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