CVXOPT VS. OpenOpt

Antworten:

11

CVXOPT löst nur (glatte und nicht glatte) konvexe Probleme und ermöglicht den Zugriff auf mehrere konvexe Löser von Drittanbietern mit garantierter Worst-Case-Komplexität auf dem neuesten Stand der Technik. Sie können lineare, konvexe quadratische, lineare semidefinite und viele andere konvexe Arten von Einschränkungen darstellen.

OpenOpt löst allgemeine (glatte und nicht glatte) nichtlineare Programme, einschließlich Probleme mit ganzzahligen Einschränkungen. Im Gegensatz zu CVXOPT gibt es keine Software zum Lösen semidefiniter Programme. Die Löser wurden alle von Dmitrey Kroshko selbst geschrieben und haben keine lange Geschichte, daher waren die Tests wahrscheinlich begrenzt. OpenOpt selbst ist nicht mit allgemeinen Solvern von Drittanbietern verbunden.

Es gibt jedoch das OpenOpt Framework (http://openopt.org/OOFramework), das mit IPOPT (in einem anderen Kommentar erwähnt; es kann nicht glatte Probleme nicht lösen), CVXOPT und einige andere in Python verfügbare Löser verbunden ist.

Abgesehen von dieser Schnittstelle besteht keine Beziehung zwischen diesen Paketen. Die Methoden sind völlig unterschiedlich; Die einzigen gemeinsamen Dinge können die Python-Sprache und der Zugriff auf LAPACK sein.

Bei konvexen Problemen möchte ich auch
CVX: Matlab Software für disziplinierte konvexe Programmierung empfehlen http://cvxr.com/cvx ,
für die die Autoren den diesjährigen renommierten Beale-Hays-Orchard-Preis für herausragende Leistungen in der rechnergestützten mathematischen Programmierung erhalten haben . Es ist jedoch in Matlab geschrieben.
Sie haben auch eine Python-Version namens CVXPY http://www.stanford.edu/~ttinoco/cvxpy/ , aber CVXPY ist effektiv nur eine sehr schöne und nützliche "disziplinierte" Schnittstelle zu CVXOPT, in der eine kann sicherstellen, dass ein Programm, wenn es syntaktisch korrekt ist, ein konvexes Optimierungsproblem darstellt.

Arnold Neumaier
quelle
4

OpenOpt ist größtenteils nur eine Schnittstelle zu anderen Solvern. CVXOPT ist einer der Open Source-Löser, die OpenOpt zugrunde liegen. Wenn Sie also keinen kommerziellen Löser haben, den Sie verwenden möchten, sollten Sie CVXOPT wahrscheinlich auf jeden Fall installieren. AFAIK, CVXOPT ist unter Open-Source-Bibliotheken auf dem neuesten Stand der Technik, zumindest für die Kegelprogrammierung zweiter Ordnung und die semi-definierte Programmierung.

Marc Shivers
quelle
1
Ich halte es nicht für sinnvoll zu sagen, dass CVXOPT der wichtigste Open Source-Löser ist, der OpenOpt zugrunde liegt. Warum ist es wichtiger als beispielsweise IPOPT oder ein Dutzend anderer zugrunde liegender Löser?
David Ketcheson
Vielleicht ist der Haupt-SOCP-Löser genauer (?)
Marc Shivers