Сравнение программ оптимизации - Comparison of optimization software
Учитывая систему, преобразующую набор входных данных в выходные значения, описываемые математическая функция ж, оптимизация относится к созданию и выбору лучшего решения из некоторого набора доступных альтернатив,[1] путем систематического выбора входных значений из разрешенного набора, вычисления значения функции и записи наилучшего значения, найденного в процессе. В этой общей структуре можно смоделировать множество реальных и теоретических проблем. Например, входными данными могут быть проектные параметры двигателя, выходными данными может быть потребляемая мощность, или входы могут быть бизнес-выбором, а выходными данными может быть полученная прибыль, или входные данные могут описывать конфигурацию физической системы и выход может быть его энергией.
An проблема оптимизации можно представить следующим образом
- Данный: а функция ж : А р от некоторых набор А к действительные числа
- Ищи: элемент Икс0 в А такой, что ж(Икс0) ≤ ж(Икс) для всех Икс в А («минимизация»).
Обычно А есть некоторые подмножество из Евклидово пространство рп, часто указывается набором ограничения, равенства или неравенства, которые члены А должны удовлетворить. Максимизация может быть сведена к минимуму, умножив функцию на минус один.
Использование программного обеспечения для оптимизации требует, чтобы функция ж определен на подходящем языке программирования и связан с программой оптимизации. Программное обеспечение для оптимизации предоставит входные значения в А, программный модуль, реализующий ж доставит вычисленное значение ж(Икс). Таким образом, достигается четкое разделение проблем: разные программные модули оптимизации могут быть легко протестированы на одной и той же функции. ж, или данное программное обеспечение оптимизации может использоваться для различных функций ж.
В следующих таблицах приводится сравнение известных библиотек программного обеспечения для оптимизации, специализированных или универсальных со значительным охватом оптимизации.
Имя | Язык | Последняя стабильная версия | Академический / некоммерческий использование бесплатно | Может использоваться в проприетарные приложения | Лицензия | Примечания |
---|---|---|---|---|---|---|
АЛГЛИБ | C ++, C #, FreePascal, VBA | 3.8.0 / август 2013 г. | да | да | Двойной (коммерческий, GPL) | Библиотека общего назначения, включает пакет оптимизации. |
AMPL | C, C ++, C #, Python, Java, Matlab, R | Октябрь 2018 г. | да | да | Двойной (коммерческий, академический) | Популярный язык алгебраического моделирования для линейной, смешанно-целочисленной и нелинейной оптимизации. Версии для студентов и AMPL для курсов доступны бесплатно. |
APMonitor | Фортран, C ++, Python, Matlab, Юлия | 0.6.2 / март 2016 г. | да | да | Двойной (коммерческий, академический) | Дифференциальный и алгебраический язык моделирования для смешанно-целочисленной и нелинейной оптимизации. Свободно доступные интерфейсы для Matlab, Python и Julia. |
Artelys Knitro | C, C ++, C #, Python, Java, Юлия, Matlab, R | 11.1 / ноябрь 2018 | Нет | да | Коммерческий, Академический, Пробный | Библиотека общего назначения, специализирующаяся на нелинейной оптимизации. Обрабатывает смешанные целочисленные задачи (MINLP) и математические программы с равновесными ограничениями (MPEC ). Специализированные алгоритмы решения нелинейных задач наименьших квадратов. |
FICO Xpress | Мозель, BCL, C, C ++, Java, R Python, Matlab, .Net, VB6 | 8.5 / август 2018 | да | да | Коммерческий, академический, общественный, пробный | Набор оптимизационных технологий и решений. Включает: технологии решателя, включая (LP (Simplex & Barrier), MIP, MIQP, MIQCQP, MISOCP, MINLP QP, QCQP, SOCP, NLP (SLP & Interior Point); язык алгебраического моделирования и процедурного программирования; интегрированную среду разработки; поддерживает для ряда исполнительных услуг; Поддержка упаковки моделей оптимизации и услуг в виде программных решений |
GEKKO | Python | 0.2.8 / август 2020 | да | да | Двойной (коммерческий, академический) | GEKKO - это пакет Python для машинного обучения и оптимизации смешанно-целочисленных и дифференциально-алгебраических уравнений. Он сочетается с крупномасштабными решателями для линейного, квадратичного, нелинейного и смешанного целочисленного программирования (LP, QP, NLP, MILP, MINLP). Режимы работы включают регрессию параметров, согласование данных, оптимизацию в реальном времени, динамическое моделирование и управление с нелинейным прогнозированием. |
Комплект для линейного программирования GNU | C | 4.52 / июль 2013 | да | Нет | GPL | Бесплатная библиотека для линейного программирования (LP) и смешанного целочисленного программирования (MIP). |
Научная библиотека GNU | C | 1.16 / июль 2013 | да | Нет | GPL | Бесплатная библиотека, предоставленная проектом GNU. |
Гуроби | C, C ++, C #, Java, .Net, Matlab, Python, R | 9.0 / ноя 2019 | да | да | Коммерческий, академический, пробный | Библиотека оптимизации. Обрабатывает смешанные целочисленные линейные задачи, выпуклые квадратичные ограничения и цели, многокритериальную оптимизацию и ограничения SOS. |
Цифровые библиотеки IMSL | C, Java, C #, Фортран, Python | многие компоненты | Нет | да | Проприетарный | |
LIONsolver | C ++, Java | 2.0.198 / октябрь 2011 г. | да | да | Проприетарный | Поддержка интерактивной и обучающей оптимизации, согласно принципам RSO.[2] |
Математическая библиотека ядра (MKL) | C ++, Фортран | 11.1 / октябрь 2013 г. | Нет | да | Проприетарный | Числовая библиотека от Intel. MKL специализируется на линейной алгебре, но содержит некоторые функции, связанные с оптимизацией. |
Wolfram_Mathematica | C ++, язык Wolfram Language | 12.2 (16 декабря 2020 г.[±][3] | )Нет | Нет | Проприетарный | Ограниченная нелинейная оптимизация, методы внутренней точки, выпуклая оптимизация и целочисленное программирование, а также оригинальные символьные методы, интегрированные с общими вычислительными возможностями. |
MIDACO | C ++, C #, Python, Matlab, Octave, Fortran, R, Java, Excel, VBA, Юлия | 6.0 / мар 2018 | да | да | Двойной (коммерческий, академический) | Легкий программный инструмент для одно- и многоцелевой оптимизации. Поддержка MINLP и распараллеливания. |
Цифровые библиотеки NAG | C, Фортран | Марк 26 / Октябрь 2017 | Нет | да | Проприетарный | |
NLopt | C, C ++, Fortran, Octave, Matlab, Python, Haskell, Guile | v2.6.2 / апрель 2020 г. | да | Нет | LGPL | NLopt - это бесплатная библиотека с открытым исходным кодом для нелинейной оптимизации, предоставляющая общий интерфейс для ряда различных бесплатных процедур оптимизации, доступных в Интернете, а также оригинальных реализаций различных других алгоритмов. Его функции включают: возможность вызова из C, C ++, Fortran, Matlab или GNU Octave, Python, GNU Guile, Julia, GNU R, Lua, OCaml и Rust. Общий интерфейс для множества различных алгоритмов - попробуйте другой алгоритм, просто изменив один параметр. Поддержка крупномасштабной оптимизации (некоторые алгоритмы масштабируются до миллионов параметров и тысяч ограничений). Как глобальные, так и локальные алгоритмы оптимизации. Алгоритмы, использующие только значения функций (без производных), а также алгоритмы, использующие градиенты, задаваемые пользователем. Алгоритмы безусловной оптимизации, оптимизации с ограничениями и общих нелинейных ограничений неравенства / равенства. Бесплатное программное обеспечение с открытым исходным кодом под GNU LGPL (и более свободные лицензии для некоторых частей NLopt). |
NMath | C # | 5.3 / Май 2013 | Нет | да | Проприетарный | Цифровая библиотека C #, построенная на основе MKL. |
Octeract Engine | C ++ / Python | 0.11.29 / ноябрь 2019 г. | Нет | да | Коммерческий | Суперкомпьютерный детерминированный решатель глобальной оптимизации для общих задач MINLP. Octeract Engine использует MPI для распределенных вычислений. |
OptaPlanner | Ява | 8.0.0.Финал / ноябрь 2020 | да | да | ASL (открытый исходный код) | Легкий решатель оптимизации на Java с дополнительными модулями интеграции для JPA-Hibernate, Quarkus, Spring, Jackson, JAXB и т. Д. Работает также на Kotlin и Scala. |
SciPy | Python | 0.13.1 / ноябрь 2013 г. | да | да | BSD | Библиотека цифровых и научных вычислений общего назначения для Python. |
Смотрите также
Рекомендации
- ^ "Природа математического программирования," Глоссарий математического программирования, INFORMS Computing Society.
- ^ Баттити, Роберто; Мауро Брунато; Франко Маскиа (2008). Реактивный поиск и интеллектуальная оптимизация. Springer Verlag. ISBN 978-0-387-09623-0.
- ^ «История быстрых изменений в системе Mathematica». Получено 2020-12-16.