CVXOPT VS. OpenOpt


11

До речі, чи є якась інша високоякісна бібліотека опуклої оптимізації загального призначення для Python / C ++, що варто зазначити?

Відповіді:


11

CVXOPT вирішує лише (плавні та негладкі) опуклі проблеми, надаючи доступ до кількох сторонніх опуклих вирішувачів із гарантованою найгіршою складністю. Ви можете створювати лінійні, опуклі квадратичні, лінійні напівдефінітні та багато інших типів обмежень.

OpenOpt вирішує загальні (плавні та негладкі) нелінійні програми, включаючи проблеми з цілими обмеженнями. На відміну від CVXOPT, він не має програмного забезпечення для розв'язання напіввизначених програм. Всі вирішувачі були написані самим Дмитром Крошко і не мають тривалої історії, тому тестування, ймовірно, було обмеженим. OpenOpt сам робить _not- інтерфейс до загальних сторонніх вирішувачів.

Однак є "OpenOpt Framework" (http://openopt.org/OOFramework), який інтерфейсує до IPOPT (згадується в іншому коментарі; він не може вирішити негладкі проблеми), CVXOPT та деякі інші вирішувачі, доступні в Python.

Крім цього інтерфейсу, між цими пакунками немає ніякого відношення. Методи абсолютно різні; єдиними поширеними речами цілком можуть бути мова Python та доступ до LAPACK.

Для опуклих проблем я також рекомендую рекомендувати
CVX: програмне забезпечення Matlab для дисциплінованого опуклого програмування http://cvxr.com/cvx ,
за яке автори отримали цьогоріч дуже престижну премію Біл-Хейса-Орчарда за досконалість у обчислювальному математичному програмуванні . Це написано в Matlab.
Вони також мають "версію" Python під назвою CVXPY http://www.stanford.edu/~ttinoco/cvxpy/ , але CVXPY - це лише дуже приємний і корисний "дисциплінований" інтерфейс до CVXOPT, в якому один Ви можете переконатися, що коли програма синтаксично правильна, це проблема опуклої оптимізації.


4

Здебільшого OpenOpt - це лише інтерфейс для інших вирішувачів. CVXOPT - це один із вирішувачів з відкритим кодом, що лежить в основі OpenOpt, тому, якщо у вас немає комерційного рішення, яке ви хочете використовувати, ви, ймовірно, захочете встановити CVXOPT у будь-якому випадку. AFAIK, CVXOPT є найсучаснішим серед бібліотек з відкритим кодом, принаймні для конусного програмування другого порядку та напіввизначеного програмування.


1
Я не думаю, що має сенс говорити, що CVXOPT є головним відкритим вихідним кодом, що лежить в основі OpenOpt. Чому це більш основний , ніж, скажімо, IPOPT, або дюжина інших , що лежать в основі решателей?
Девід Кетчесон

можливо головний вирішувач SOCP є більш точним (?)
Марк Шиверс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.