CVXOPT VS. OpenOpt


Jawaban:


11

CVXOPT hanya menyelesaikan masalah cembung (mulus dan tidak mulus), memberikan akses ke beberapa pemecah cembung pihak ketiga dengan kompleksitas kasus terburuk yang dijamin canggih. Anda dapat menimbulkan linear, cembung kuadrat, semidefinit linier, dan banyak jenis kendala cembung lainnya.

OpenOpt memecahkan program nonlinier umum (halus dan tidak mulus), termasuk masalah dengan kendala bilangan bulat. Tidak seperti CVXOPT, ia tidak memiliki perangkat lunak untuk menyelesaikan program semidefinite. Semua solver ditulis oleh Dmitrey Kroshko sendiri dan tidak memiliki sejarah panjang, jadi pengujian mungkin terbatas. OpenOpt sendiri melakukan _not- antarmuka ke pemecah pihak ketiga umum.

Namun, ada '' Kerangka Kerja OpenOpt '' (http://openopt.org/OOFramework) yang berinteraksi dengan IPOPT (disebutkan dalam komentar lain; ia tidak dapat menyelesaikan masalah nonsmooth), CVXOPT, dan beberapa pemecah lain yang tersedia dengan Python.

Terlepas dari antarmuka ini, tidak ada hubungan antara paket-paket ini. Metodenya sangat berbeda; satu-satunya hal yang umum adalah bahasa Python dan akses ke LAPACK.

Untuk masalah cembung, saya juga ingin merekomendasikan
CVX: Perangkat Lunak Matlab untuk Pemrograman Cembung Disiplin http://cvxr.com/cvx , di
mana penulis mendapatkan Hadiah Beale-Hays-Orchard tahun ini yang sangat bergengsi untuk Keunggulan dalam Pemrograman Matematika Komputasi . Itu ditulis dalam Matlab.
Mereka juga memiliki "versi" Python yang disebut CVXPY http://www.stanford.edu/~ttinoco/cvxpy/ , tetapi CVXPY secara efektif hanya antarmuka '' disiplin '' yang sangat bagus dan berguna untuk CVXOPT, di mana dapat memastikan bahwa ketika suatu program secara sintaksis benar itu adalah masalah optimisasi cembung.


4

OpenOpt, untuk sebagian besar, hanyalah sebuah antarmuka untuk pemecah lainnya. CVXOPT adalah salah satu pemecah open source yang mendasari OpenOpt, jadi kecuali Anda memiliki pemecah komersial yang ingin Anda gunakan, Anda mungkin ingin menginstal CVXOPT dalam hal apa pun. AFAIK, CVXOPT adalah state-of-the-art di antara perpustakaan open source, setidaknya untuk pemrograman kerucut orde kedua dan pemrograman semi-pasti.


1
Saya tidak berpikir masuk akal untuk mengatakan CVXOPT adalah pemecah open source utama yang mendasari OpenOpt. Mengapa itu lebih utama daripada, katakanlah, IPOPT, atau selusin pemecah lain yang mendasarinya?
David Ketcheson

mungkin pemecah SOCP utama lebih akurat (?)
Marc Shivers
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.