Сравнение программ оптимизации - Википедия - Comparison of optimization software

Учитывая систему, преобразующую набор входных данных в выходные значения, описываемые математическая функция ж, оптимизация относится к созданию и выбору лучшего решения из некоторого набора доступных альтернатив,[1] путем систематического выбора входных значений из разрешенного набора, вычисления значения функции и записи наилучшего значения, найденного в процессе. В этой общей структуре можно смоделировать множество реальных и теоретических проблем. Например, входными данными могут быть проектные параметры двигателя, выходными данными может быть потребляемая мощность, или входы могут быть бизнес-выбором, а выходными данными может быть полученная прибыль, или входные данные могут описывать конфигурацию физической системы и выход может быть его энергией.

An проблема оптимизации можно представить следующим образом

Данный: а функция ж : А р от некоторых набор А к действительные числа
Ищи: элемент Икс0 в А такой, что ж(Икс0) ≤ ж(Икс) для всех Икс в А («минимизация»).

Обычно А есть некоторые подмножество из Евклидово пространство рп, часто указывается набором ограничения, равенства или неравенства, которые члены А должны удовлетворить. Максимизация может быть сведена к минимуму, умножив функцию на минус один.

Использование программного обеспечения для оптимизации требует, чтобы функция ж определен на подходящем языке программирования и связан с программой оптимизации. Программное обеспечение для оптимизации предоставит входные значения в А, программный модуль, реализующий ж доставит вычисленное значение ж(Икс). Таким образом, достигается четкое разделение проблем: разные программные модули оптимизации могут быть легко протестированы на одной и той же функции. ж, или данное программное обеспечение оптимизации может использоваться для различных функций ж.

В следующих таблицах приводится сравнение известных библиотек программного обеспечения для оптимизации, специализированных или универсальных со значительным охватом оптимизации.

ИмяЯзыкПоследняя стабильная версияАкадемический / некоммерческий
использование бесплатно
Может использоваться в
проприетарные приложения
ЛицензияПримечания
АЛГЛИБC ++, C #, FreePascal, VBA3.8.0 / август 2013 г.дадаДвойной (коммерческий, GPL)Библиотека общего назначения, включает пакет оптимизации.
AMPLC, C ++, C #, Python, Java, Matlab, RОктябрь 2018 г.дадаДвойной (коммерческий, академический)Популярный язык алгебраического моделирования для линейной, смешанно-целочисленной и нелинейной оптимизации. Версии для студентов и AMPL для курсов доступны бесплатно.
APMonitorФортран, C ++, Python, Matlab, Юлия0.6.2 / март 2016 г.дадаДвойной (коммерческий, академический)Дифференциальный и алгебраический язык моделирования для смешанно-целочисленной и нелинейной оптимизации. Свободно доступные интерфейсы для Matlab, Python и Julia.
Artelys KnitroC, C ++, C #, Python, Java, Юлия, Matlab, R11.1 / ноябрь 2018НетдаКоммерческий, Академический, ПробныйБиблиотека общего назначения, специализирующаяся на нелинейной оптимизации. Обрабатывает смешанные целочисленные задачи (MINLP) и математические программы с равновесными ограничениями (MPEC ). Специализированные алгоритмы решения нелинейных задач наименьших квадратов.
FICO XpressМозель, BCL, C, C ++, Java, R Python, Matlab, .Net, VB68.5 / август 2018дадаКоммерческий, академический, общественный, пробныйНабор оптимизационных технологий и решений. Включает: технологии решателя, включая (LP (Simplex & Barrier), MIP, MIQP, MIQCQP, MISOCP, MINLP QP, QCQP, SOCP, NLP (SLP & Interior Point); язык алгебраического моделирования и процедурного программирования; интегрированную среду разработки; поддерживает для ряда исполнительных услуг; Поддержка упаковки моделей оптимизации и услуг в виде программных решений
GEKKOPython0.2.8 / август 2020дадаДвойной (коммерческий, академический)GEKKO - это пакет Python для машинного обучения и оптимизации смешанно-целочисленных и дифференциально-алгебраических уравнений. Он сочетается с крупномасштабными решателями для линейного, квадратичного, нелинейного и смешанного целочисленного программирования (LP, QP, NLP, MILP, MINLP). Режимы работы включают регрессию параметров, согласование данных, оптимизацию в реальном времени, динамическое моделирование и управление с нелинейным прогнозированием.
Комплект для линейного программирования GNUC4.52 / июль 2013даНетGPLБесплатная библиотека для линейного программирования (LP) и смешанного целочисленного программирования (MIP).
Научная библиотека GNUC1.16 / июль 2013даНетGPLБесплатная библиотека, предоставленная проектом GNU.
ГуробиC, C ++, C #, Java, .Net, Matlab, Python, R9.0 / ноя 2019дадаКоммерческий, академический, пробныйБиблиотека оптимизации. Обрабатывает смешанные целочисленные линейные задачи, выпуклые квадратичные ограничения и цели, многокритериальную оптимизацию и ограничения SOS.
Цифровые библиотеки IMSLC, Java, C #, Фортран, Pythonмногие компонентыНетдаПроприетарный
LIONsolverC ++, Java2.0.198 / октябрь 2011 г.дадаПроприетарныйПоддержка интерактивной и обучающей оптимизации,

согласно принципам RSO.[2]

Математическая библиотека ядра (MKL)C ++, Фортран11.1 / октябрь 2013 г.НетдаПроприетарныйЧисловая библиотека от Intel. MKL специализируется на линейной алгебре,
но содержит некоторые функции, связанные с оптимизацией.
Wolfram_MathematicaC ++, язык Wolfram Language12.2 (16 декабря 2020 г.; 6 дней назад (2020-12-16)) [±][3]НетНетПроприетарныйОграниченная нелинейная оптимизация, методы внутренней точки, выпуклая оптимизация и целочисленное программирование, а также оригинальные символьные методы, интегрированные с общими вычислительными возможностями.
MIDACOC ++, C #, Python, Matlab, Octave, Fortran, R, Java, Excel, VBA, Юлия6.0 / мар 2018дадаДвойной (коммерческий, академический)Легкий программный инструмент для одно- и многоцелевой оптимизации. Поддержка MINLP и распараллеливания.
Цифровые библиотеки NAGC, ФортранМарк 26 / Октябрь 2017НетдаПроприетарный
NLoptC, C ++, Fortran, Octave, Matlab, Python, Haskell, Guilev2.6.2 / апрель 2020 г.даНетLGPLNLopt - это бесплатная библиотека с открытым исходным кодом для нелинейной оптимизации, предоставляющая общий интерфейс для ряда различных бесплатных процедур оптимизации, доступных в Интернете, а также оригинальных реализаций различных других алгоритмов. Его функции включают: возможность вызова из C, C ++, Fortran, Matlab или GNU Octave, Python, GNU Guile, Julia, GNU R, Lua, OCaml и Rust. Общий интерфейс для множества различных алгоритмов - попробуйте другой алгоритм, просто изменив один параметр. Поддержка крупномасштабной оптимизации (некоторые алгоритмы масштабируются до миллионов параметров и тысяч ограничений). Как глобальные, так и локальные алгоритмы оптимизации. Алгоритмы, использующие только значения функций (без производных), а также алгоритмы, использующие градиенты, задаваемые пользователем. Алгоритмы безусловной оптимизации, оптимизации с ограничениями и общих нелинейных ограничений неравенства / равенства. Бесплатное программное обеспечение с открытым исходным кодом под GNU LGPL (и более свободные лицензии для некоторых частей NLopt).
NMathC #5.3 / Май 2013НетдаПроприетарныйЦифровая библиотека C #, построенная на основе MKL.
Octeract EngineC ++ / Python0.11.29 / ноябрь 2019 г.НетдаКоммерческийСуперкомпьютерный детерминированный решатель глобальной оптимизации для общих задач MINLP. Octeract Engine использует MPI для распределенных вычислений.
OptaPlannerЯва8.0.0.Финал / ноябрь 2020дадаASL (открытый исходный код)Легкий решатель оптимизации на Java с дополнительными модулями интеграции для JPA-Hibernate, Quarkus, Spring, Jackson, JAXB и т. Д. Работает также на Kotlin и Scala.
SciPyPython0.13.1 / ноябрь 2013 г.дадаBSDБиблиотека цифровых и научных вычислений общего назначения для Python.

Смотрите также

Рекомендации

  1. ^ "Природа математического программирования," Глоссарий математического программирования, INFORMS Computing Society.
  2. ^ Баттити, Роберто; Мауро Брунато; Франко Маскиа (2008). Реактивный поиск и интеллектуальная оптимизация. Springer Verlag. ISBN  978-0-387-09623-0.
  3. ^ «История быстрых изменений в системе Mathematica». Получено 2020-12-16.

внешняя ссылка