CVXOPT VS. OpenOpt

Odpowiedzi:

11

CVXOPT rozwiązuje tylko wypukłe problemy (gładkie i nie gładkie), zapewniając dostęp do kilku wypukłych solverów innych firm z gwarantowaną najnowocześniejszą złożonością najgorszych przypadków. Możesz tworzyć liniowe, wypukłe kwadratowe, liniowe półfinały i wiele innych wypukłych typów wiązań.

OpenOpt rozwiązuje ogólne (gładkie i nie gładkie) programy nieliniowe, w tym problemy z ograniczeniami całkowitymi. W przeciwieństwie do CVXOPT, nie ma oprogramowania do rozwiązywania programów półfinałowych. Wszystkie solwery napisał sam Dmitrey Kroshko i nie mają długiej historii, więc testy były prawdopodobnie ograniczone. Sam OpenOpt nie łączy się z ogólnymi rozwiązaniami innych firm.

Istnieje jednak „OpenOpt Framework” (http://openopt.org/OOFramework), który łączy się z IPOPT (wspomnianym w innym komentarzu; nie może rozwiązać problemów niezwiązanych z wygładzeniem), CVXOPT i niektórymi innymi rozwiązaniami dostępnymi w Pythonie.

Poza tym interfejsem nie ma związku między tymi pakietami. Metody są zupełnie inne; jedynymi powszechnymi rzeczami mogą być język Python i dostęp do LAPACK.

W przypadku problemów wypukłych chciałbym również polecić
CVX: Matlab Software for Disciplined Convex Programming http://cvxr.com/cvx ,
za który autorzy otrzymali tegoroczną bardzo prestiżową nagrodę Beale-Hays-Orchard za doskonałość w programowaniu matematycznym . Jest to jednak napisane w Matlabie.
Mają także „wersję” Pythona o nazwie CVXPY http://www.stanford.edu/~ttinoco/cvxpy/ , ale CVXPY jest w rzeczywistości tylko bardzo ładnym i użytecznym „zdyscyplinowanym” interfejsem do CVXOPT, w którym jeden może upewnić się, że gdy program jest poprawny pod względem składniowym, jest to problem optymalizacji wypukłej.

Arnold Neumaier
źródło
4

OpenOpt jest w przeważającej części tylko interfejsem do innych solverów. CVXOPT jest jednym z solverów Open Source leżących u podstaw OpenOpt, więc jeśli nie masz komercyjnego solvera, którego chcesz użyć, prawdopodobnie będziesz chciał zainstalować CVXOPT w każdym przypadku. AFAIK, CVXOPT jest najnowocześniejszą biblioteką typu open source, przynajmniej do programowania stożków drugiego rzędu i programowania półokreślonego.

Marc Shivers
źródło
1
Nie sądzę, aby miało sens stwierdzenie, że CVXOPT jest głównym narzędziem open source leżącym u podstaw OpenOpt. Dlaczego jest bardziej główny niż, powiedzmy, IPOPT lub tuzin innych bazowych solverów?
David Ketcheson
być może główny solver SOCP jest bardziej dokładny (?)
Marc Shivers,