CVXOPT только решает (гладкие и негладкие) выпуклые задачи, предоставляя доступ к нескольким сторонним выпуклым решателям с гарантированным уровнем сложности в худшем случае. Вы можете задать линейные, выпуклые квадратичные, линейные полуопределенные и многие другие выпуклые типы ограничений.
OpenOpt решает общие (гладкие и негладкие) нелинейные программы, включая задачи с целочисленными ограничениями. В отличие от CVXOPT, он не имеет программного обеспечения для решения полуопределенных программ. Все решатели были написаны самим Дмитрием Крошко и не имеют большой истории, поэтому тестирование, вероятно, было ограничено. OpenOpt сам по себе не является интерфейсом для сторонних разработчиков.
Однако существует 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, в котором может убедиться, что когда программа синтаксически корректна, это проблема выпуклой оптимизации.
Арнольд Ноймайер
источник