CVXOPT VS. OpenOpt

Réponses:

11

CVXOPT ne résout que les problèmes convexes (lisses et non lisses), donnant accès à plusieurs solveurs convexes tiers avec une complexité garantie dans le pire des cas. Vous pouvez poser des contraintes linéaires, quadratiques convexes, semi-définies linéaires et de nombreux autres types de contraintes convexes.

OpenOpt résout les programmes non linéaires généraux (lisses et non lisses), y compris les problèmes de contraintes entières. Contrairement à CVXOPT, il n'a pas de logiciel pour résoudre des programmes semi-définis. Les solveurs ont tous été écrits par Dmitrey Kroshko lui-même et n'ont pas une longue histoire, donc les tests étaient probablement limités. OpenOpt lui-même n'interface pas avec les solveurs tiers généraux.

Cependant, il existe le '' OpenOpt Framework '' (http://openopt.org/OOFramework) qui s'interface avec IPOPT (mentionné dans un autre commentaire; il ne peut pas résoudre les problèmes non lisses), CVXOPT et quelques autres solveurs disponibles en Python.

En dehors de cette interface, il n'y a aucune relation entre ces packages. Les méthodes sont complètement différentes; les seules choses courantes peuvent bien être le langage Python et l'accès à LAPACK.

Pour les problèmes convexes, je voudrais également recommander
CVX: Matlab Software for Disciplined Convex Programming http://cvxr.com/cvx ,
pour lequel les auteurs ont obtenu le très prestigieux prix Beale-Hays-Orchard pour l'excellence en programmation mathématique computationnelle de cette année. . Il est cependant écrit en Matlab.
Ils ont également une `` version '' Python appelée CVXPY http://www.stanford.edu/~ttinoco/cvxpy/ , mais CVXPY n'est en fait qu'une interface `` disciplinée '' très agréable et utile à CVXOPT, dans laquelle l'un peut s'assurer que lorsqu'un programme est syntaxiquement correct, il s'agit d'un problème d'optimisation convexe.

Arnold Neumaier
la source
4

OpenOpt n'est, pour la plupart, qu'une interface avec d'autres solveurs. CVXOPT est l'un des solveurs open source sous-jacents à OpenOpt, donc à moins d'avoir un solveur commercial que vous souhaitez utiliser, vous voudrez probablement installer CVXOPT dans tous les cas. AFAIK, CVXOPT est à la pointe de la technologie parmi les bibliothèques open source, au moins pour la programmation de cônes de second ordre et la programmation semi-définie.

Marc Shivers
la source
1
Je ne pense pas qu'il soit logique de dire que CVXOPT est le principal solveur open source sous-jacent à OpenOpt. Pourquoi est-il plus important que, disons, IPOPT, ou une douzaine d'autres solveurs sous-jacents?
David Ketcheson
le solveur SOCP principal est peut-être plus précis (?)
Marc Shivers