CVXOPT VS. OpenOpt

Respostas:

11

O CVXOPT resolve apenas problemas convexos (suaves e não suaves), dando acesso a vários solucionadores convexos de terceiros com garantia de pior complexidade do estado da arte. Você pode apresentar restrições lineares, quadráticas convexas, semidefinidas lineares e muitos outros tipos de restrições convexas.

O OpenOpt resolve programas não lineares gerais (suaves e não suaves), incluindo problemas com restrições de número inteiro. Ao contrário do CVXOPT, ele não possui software para resolver programas semidefinidos. Os solucionadores foram todos escritos pelo próprio Dmitrey Kroshko e não têm uma longa história, portanto os testes provavelmente foram limitados. O próprio OpenOpt não faz interface com solucionadores de terceiros em geral.

No entanto, existe o '' OpenOpt Framework '' (http://openopt.org/OOFramework) que faz interface com o IPOPT (mencionado em outro comentário; ele não pode resolver problemas não suaves), o CVXOPT e alguns outros solucionadores disponíveis no Python.

Além dessa interface, não há relação entre esses pacotes. Os métodos são completamente diferentes; as únicas coisas comuns podem muito bem ser a linguagem Python e o acesso ao LAPACK.

Para problemas convexos, eu também gostaria de recomendar o
CVX: Software Matlab para programação convexa disciplinada http://cvxr.com/cvx ,
pelo qual os autores obtiveram o prestigiado prêmio Beale-Hays-Orchard deste ano por excelência em programação matemática computacional . Está escrito em Matlab, no entanto.
Eles também têm uma '' versão '' Python chamada CVXPY http://www.stanford.edu/~ttinoco/cvxpy/ , mas o CVXPY é efetivamente apenas uma interface 'disciplinada' muito agradável e útil para o CVXOPT, na qual uma pode garantir que, quando um programa estiver sintaticamente correto, seja um problema de otimização convexa.

Arnold Neumaier
fonte
4

O OpenOpt é, na maioria das vezes, apenas uma interface para outros solucionadores. O CVXOPT é um dos solucionadores de código-fonte aberto subjacentes ao OpenOpt, portanto, a menos que você tenha um solucionador comercial que deseja usar, provavelmente desejará instalar o CVXOPT em qualquer caso. AFAIK, CVXOPT é o estado da arte entre as bibliotecas de código aberto, pelo menos para programação de cone de segunda ordem e programação semi-definida.

Marc Shivers
fonte
1
Não acho que faça sentido dizer que o CVXOPT é o principal solucionador de código aberto subjacente ao OpenOpt. Por que é mais importante do que, digamos, IPOPT ou uma dúzia de outros solucionadores subjacentes?
David Ketcheson
talvez principal solver SOCP é mais preciso (?)
Marc Shivers