CVXOPT VS. OpenOpt

Respuestas:

11

CVXOPT solo resuelve problemas convexos (suaves y no suaves), dando acceso a varios solucionadores convexos de terceros con la complejidad más avanzada garantizada. Puede plantear restricciones lineales, cuadráticas convexas, semidefinidas lineales y muchos otros tipos convexos.

OpenOpt resuelve programas no lineales generales (suaves y no suaves), incluidos problemas con restricciones de enteros. A diferencia de CVXOPT, no tiene software para resolver programas semidefinidos. Todos los solucionadores fueron escritos por el propio Dmitrey Kroshko y no tienen una larga historia, por lo que las pruebas probablemente fueron limitadas. OpenOpt sí mismo _no- interfaz para solucionadores generales de terceros.

Sin embargo, existe el '' OpenOpt Framework '' (http://openopt.org/OOFramework) que interactúa con IPOPT (mencionado en otro comentario; no puede resolver problemas no suaves), CVXOPT y algunos otros solucionadores disponibles en Python.

Aparte de esta interfaz, no hay relación entre estos paquetes. Los métodos son completamente diferentes; Las únicas cosas comunes pueden ser el lenguaje Python y el acceso a LAPACK.

Para problemas convexos, también me gustaría recomendar
CVX: software de Matlab para la programación convexa disciplinada http://cvxr.com/cvx ,
por el cual los autores obtuvieron el prestigioso Premio Beale-Hays-Orchard de este año a la Excelencia en Programación Matemática Computacional . Sin embargo, está escrito en Matlab.
También tienen una '' versión '' de Python llamada CVXPY http://www.stanford.edu/~ttinoco/cvxpy/ , pero CVXPY es efectivamente una interfaz 'disciplinada' muy agradable y útil para CVXOPT, en la cual puede asegurarse de que cuando un programa es sintácticamente correcto es un problema de optimización convexo.

Arnold Neumaier
fuente
4

OpenOpt es, en su mayor parte, solo una interfaz para otros solucionadores. CVXOPT es uno de los solucionadores de código abierto que subyace a OpenOpt, por lo que, a menos que tenga un solucionador comercial que desee utilizar, es probable que desee instalar CVXOPT en cualquier caso. AFAIK, CVXOPT es el estado del arte entre las bibliotecas de código abierto, al menos para la programación de cono de segundo orden y la programación semi-definida.

Marc tiembla
fuente
1
No creo que tenga sentido decir que CVXOPT es el principal solucionador de código abierto subyacente en OpenOpt. ¿Por qué es más importante que, por ejemplo, IPOPT, o una docena de otros solucionadores subyacentes?
David Ketcheson
quizás el solucionador SOCP principal sea más preciso (?)
Marc tiembla el