Solvers

SOLVERS (РЕШАТЕЛИ)

Решатели- это алгоритмы обработки моделей и чисел, которые вычисляют оптимальное решение. AMPL не включает в себя решатели. Вместо этого, AMPL предоставляет возможность подключать внешние решатели с поддержкой интерфейса AMPL. Таким образом, чтобы использовать AMPL в своей работе, пользователю необходимо подключить (минимум один) решатель с интерфейсом AMPL.
Для чего нужны решатели?Каждый решатель предназначен для решения задач оптимизации определенного типа, как указано в его документации. Таким образом, когда пользователь определяет тип решаемой задачи оптимизации – например, линейная или нелинейная, непрерывная или дискретная – это является определяющим условием для списка подходящих решателей. Несмотря на то, что решатели используют общие подходы к оптимизации,  каждый отдельный решатель имеет свое особенное сочетание алгоритмических идей и стратегий поиска решения. Таким образом, производительность решателя невозможно предсказать, исходя из размера проблемы или других исходных данных. Время решения и требования к памяти лучше всего оценивать с помощью тестов производительности, в соответствии со спецификой решаемых задач. Мы рекомендуем провести тестирование нескольких решателей, чтобы определить, какие из них предлагают наилучшее соотношение цены и производительности для ваших задач.
Варианты получения решателейДоступны несколько вариантов получения решателей для AMPL:
Решатели, которые мы продаемМы предлагаем подборку решателей наивысшего качества, подключаемых к AMPL с полным доступом к их алгоритмам и параметрам. В наш прайс-лист включены все варианты лицензий (одиночные, плавающие, серверные) продаваемых решателей. Бесплатные пробные версии AMPL включают в себя пробные версии всех продаваемых нами решателей. Линейка решателей приведена ниже со ссылками на более их подробное описание. Мы классифицируем решатели в зависимости от типа задач, на решения которых специализируется решатель (классические «линейные», «нелинейные» либо «альтернативные»).
Линейные решатели Решатели данного типа решают задачи линейной и выпуклой квадратичной оптимизации как для непрерывных, так и для целочисленных переменных: CPLEX, Gurobi, Xpress. Отдельные решатели предлагают расширения для дополнительных типов задач. Все они включают простые симплексные, двойные симплексные и внутренние методы для линейного программирования, вместе со сложными подходами ветвления и отсечения, и эвристическим поиском для чисто целочисленных и смешанных целочисленных задач. Поддерживают параллельность вычислений на нескольких процессорах и ядрах. Решатели этой категории наиболее широко используются для различных приложений в бизнесе, правительстве и исследовательских организациях.
Нелинейные решатели Решатели этой категории обеспечивают наиболее эффективный способ поиска локальных оптимальных решений, связанных с гладкими нелинейными функциями (включая отношения, полиномы, экспоненты и логарифмы, а также тригонометрические формы). Они предлагают множество проверенных алгоритмов:
  • CONOPT (ARKI Consulting & Development) – архитектура с несколькими методами, основанная на пониженном градиенте;
  • KNITRO (Ziena Optimization) – выбор методов внутренней точки и активного набора, с поддержкой целочисленных переменных и автоматическим многократным запуском;
  • LOQO (Принстонский университет) – метод внутренней точки, применяемый к последовательности квадратичных приближений;
  • MINOS (Стэнфордский университет) – подход с уменьшенным градиентом, основанный на линейном прямом симплексном методе;
  • SNOPT (Стэнфордский университет) – метод последовательной квадратичной аппроксимации.
Каждый из вышеперечисленных типов задач может быть решен одним или несколькими решателями. Нелинейные решатели широко используются в таких приложениях, как передача энергии и инженерное проектирование, а также в продвинутом экономическом и финансовом моделировании.
Решатели с открытым исходным кодом Самые популярные решатели с открытым исходным кодом доступны в версиях, которые работают с AMPL. Это альтернативный инструмент птимизации. Их производительность уступает уровню аналогичных коммерческих решателей. Однако, может быть достаточной для задач, которые не являются слишком большими или сложными. Программное обеспечение с открытым исходным кодом предоставляется по различным типам лицензий, которые существенно различаются по своим положениям, особенно в отношении распространения и коммерческого использования. На веб-сайтах каждого решателя с открытым исходным кодом размещаются сообщения или ссылки на конкретные условия лицензии, с которыми следует внимательно ознакомиться. Наша линейка решателей с открытым исходным кодом кратко представлена ниже со ссылками на более подробные описания и области для загрузки. Мы группируем решатели на «линейные» и «нелинейные» типы в соответствии с типом задачи, для которой они в основном используются.
Линейные решатели Решатели данного типа решают задачи линейной оптимизации, как с непрерывными, так и с целочисленными переменными. – CBC 2.10.3 – от COIN-OR по общественной лицензии Eclipse. Доступен в виде исходного кода и двоичных файлов для 32-битной Linux64-битной LinuxOS X32-битной Windows и 64-битной Window; – GLPK – от проекта GNU под Стандартной общественной лицензией GNU. Доступен как исходный код. Включает подмножество функций AMPL с открытым исходным кодом;lp_solve – от SourceForge под лицензией GNU Library General Public License. Доступен в виде исходного кода и двоичных файлов.
Нелинейные решатели Решатели этой категории решают задачи с гладкими нелинейными функциями, такими как степени, логарифмы и отношения. Они различаются алгоритмами, на которых они основаны, и, следовательно, их эффективностью для различных типов задач. Из-за сложности нелинейной оптимизации эти решатели эффективны с задачами меньших масштабов, чем их линейные аналоги.Ipopt 3.12.13 – от COIN-OR по общественной лицензии Eclipse. Доступен в виде исходного кода и двоичных файлов для 32-битной Linux64-битной LinuxOS X32-битной Windows и 64-битной Windows. Находит локально оптимальные решения непрерывных нелинейных задач, используя метод внутренней точки;Bonmin 1.8.7 – от COIN-OR по общественной лицензии Eclipse. Доступен в виде исходного кода и двоичных файлов для 32-битной Linux64-битной LinuxOS X32-битной Windows и 64-битной Windows. Находит глобально оптимальные решения выпуклых нелинейных задач с непрерывными и дискретными переменными и могут быть эвристически применены к невыпуклым задачам;Couenne 0.5.7 – от COIN-OR по общественной лицензии Eclipse. Доступен в виде исходного кода и двоичных файлов для 32-битной Linux64-битной LinuxOS X32-битной Windows и 64-битной Windows. Находит глобально оптимальные решения нелинейных задач с непрерывными и дискретными переменными независимо от выпуклости;BARON (The Optimization Firm) – Глобальная невыпуклая нелинейная оптимизация, непрерывных и целочисленных переменных;LGO (Pintér Consulting) – Глобальная и локальная оптимизация;LINDO Global (LINDO Systems) – Глобальная невыпуклая нелинейная оптимизация в непрерывных и целочисленных переменных.
Решатели программирования ограничений Эти решатели обычно обрабатывают задачи программирования с ограничениями из дискретных переменных. Они поддерживают широкий спектр типов ограничений, которые могут содержать нелинейные и логические выражения. Решатели программирования ограничений могут быть более эффективными, чем решатели MIP для некоторых видов задач комбинаторной оптимизации.Gecode – по лицензии MIT. Доступен в виде исходного кода и двоичных файлов для 32-битной Linux64-битной LinuxOS X32-битной Windows и 64-битной Windows;JaCoP – под Стандартной общественной лицензией GNU Affero. Доступен в виде исходного кода и двоичных файлов для 32-битной Linux64-битной LinuxOS X32-битной Windows и 64-битной Windows.
Решатели от NEOS Server Программа Kestrel позволяет использовать размещенные на http://www.neos-server.org решатели с локальной версией AMPL. Kestrel подключается и вызывается так же, как и другие решатели AMPL. Kestrel отправляет проблему решателю, работающему на одном из удаленных компьютеров NEOS Server. Результаты оптимизации с сервера NEOS возвращаются через Kestrel в AMPL, где пользователь может просматривать и управлять полученными результатами обычным способом. Таким образом, можно получить все преимущества использования среды AMPL без необходимости покупки и установки профессиональных и свободных решателей, которые требуются для решения задачи. Kestrel распространяется бесплатно и доступен для загрузки на странице запуск AMPL на NEOS. Kestrel также входит в состав всех демонстрационных пакетов AMPL.