2009-12-30 6 views
19

Я ищу библиотеку C++, и я имею дело с выпуклыми объектами и функциями ограничения.Что такое хорошая выпуклая библиотека оптимизации?

+4

Где вы надолго видела? –

+0

Большинство решателей LP имеют свой собственный способ определения наборов задач. Программные интерфейсы для него - это в основном сахарное покрытие. –

+0

Я использую cvxopt, и для установки я только что загрузил предварительно скомпилированные библиотеки из http://www.lfd.uci.edu/~gohlke/pythonlibs/#cvxopt, затем установил pip (загрузил колесо), а затем сделал конечно импорт numpy перед использованием. – Phylliida

ответ

12

Я предполагаю, что ваша проблема нелинейна. Где я работаю, мы используем SNOPT, Ipopt и еще один фирменный решатель (не для продажи). Мы также пробовали и слышали хорошие вещи о Knitro.

Пока ваша проблема выпукла, все эти решатели работают хорошо.

Все они имеют свой собственный API, но все они запрашивают одну и ту же информацию: значения, первую и вторую производные.

1

Из того, что я знаю, решатель CPLEX является лучшим выпуклым решателем оптимизации. Его современное состояние в LP-решателях. Оптимизирует ли выпуклая оптимизация. Искав его, я вижу, что его программное обеспечение IBM сейчас. Вы можете найти его здесь: http://www-01.ibm.com/software/integration/optimization/cplex/

+0

Вы можете найти другие решения с открытым исходным кодом и их тесты производительности здесь: http://plato.asu.edu/ftp/lpfree.html Кроме того, не забудьте проверить http://code.msdn.microsoft.com/solverfoundation –

+0

Линейный подразумевает выпуклость, а не наоборот. –

+0

cplex решает линейные или квадратично ограниченные выпуклые задачи. Это очень быстро, но он не справляется с общими выпуклыми проблемами. –

4

Предполагая, что ваши проблемы нелинейны, вы можете использовать бесплатный и открытый источник OPT++, доступный от Sandia Lab. Я использовал его в одном проекте на C++, и он был прост в использовании и хорошо работал.

1

Вы можете использовать GSL (GNU Scientific Library) с the packageNLopt, который является нелинейной оптимизации пакет с безусловной, связанными с ограниченным и общих нелинейных неравенств.

+0

Два комментария: Во-первых, Что вы имеете в виду, что вы можете использовать GSL и NLOpt вместе (GSL с NLOpt)? Кажется, это отдельные проекты. У них такой же дух, но они независимы. Во-вторых, автор NLOpt не рекомендует использовать NLOpt для выпуклых проблем, с веб-страницы: «NLopt включает только общие методы, которые не предполагают выпуклость, если у вас есть явно выпуклая проблема, вам может быть лучше с другим программным пакетом , например, пакет CVX из Стэнфорда ». http://ab-initio.mit.edu/wiki/index.php/NLopt_Introduction#Global_versus_local_optimization – alfC

Смежные вопросы