CVXOPT VS. OpenOpt


Risposte:


11

CVXOPT risolve solo problemi convessi (lisci e non lisci), dando accesso a numerosi solutori convessi di terze parti con una complessità del caso peggiore allo stato dell'arte garantita. È possibile porre vincoli lineari, quadratici convessi, semidefiniti lineari e molti altri tipi convessi.

OpenOpt risolve programmi non lineari generali (regolari e non fluidi), inclusi problemi con vincoli interi. A differenza di CVXOPT, non ha software per la risoluzione di programmi semidefiniti. I solutori sono stati tutti scritti dallo stesso Dmitrey Kroshko e non hanno una lunga storia, quindi i test erano probabilmente limitati. OpenOpt stesso non si interfaccia con i solutori di terze parti.

Tuttavia, esiste il '' OpenOpt Framework '' (http://openopt.org/OOFramework) che si interfaccia con IPOPT (menzionato in un altro commento; non può risolvere problemi non fluidi), CVXOPT e alcuni altri solutori disponibili in Python.

A parte questa interfaccia, non esiste alcuna relazione tra questi pacchetti. I metodi sono completamente diversi; le uniche cose comuni potrebbero essere il linguaggio Python e l'accesso a LAPACK.

Per problemi convessi, vorrei anche raccomandare
CVX: Matlab Software per la programmazione convessa disciplinata http://cvxr.com/cvx ,
per il quale gli autori hanno ottenuto il prestigioso premio Beale-Hays-Orchard di quest'anno per l'eccellenza nella programmazione matematica computazionale . È scritto in Matlab, però.
Hanno anche una '' versione '' di Python chiamata CVXPY http://www.stanford.edu/~ttinoco/cvxpy/ , ma CVXPY è effettivamente solo un'interfaccia 'disciplinata' molto carina e utile a CVXOPT, in cui una può assicurarsi che quando un programma è sintatticamente corretto sia un problema convesso di ottimizzazione.


4

OpenOpt è, per la maggior parte, solo un'interfaccia per altri solutori. CVXOPT è uno dei risolutori open source alla base di OpenOpt, quindi a meno che tu non abbia un solutore commerciale che desideri utilizzare, probabilmente vorrai installare CVXOPT in ogni caso. AFAIK, CVXOPT è all'avanguardia tra le librerie open source, almeno per la programmazione dei coni di secondo ordine e la programmazione semi-definita.


1
Non credo abbia senso affermare che CVXOPT è il principale risolutore open source alla base di OpenOpt. Perché è più importante di, diciamo, IPOPT o una dozzina di altri risolutori sottostanti?
David Ketcheson,

forse il principale solutore SOCP è più preciso (?)
Marc Shivers,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.