Учитывая систему, преобразующую набор входных данных в выходные значения, описываемые математической функцией f, оптимизация относится для генерации и выбора наилучшего решения из некоторого набора доступных альтернатив, путем систематического выбора входных значений из разрешенного набора, вычисления значения функции и записи st значение, найденное в процессе. В этой общей структуре можно смоделировать множество реальных и теоретических проблем. Например, входными данными могут быть проектные параметры двигателя, выходными данными может быть потребляемая мощность, или входы могут быть бизнес-выбором, а выходными данными может быть полученная прибыль, или входные данные могут описывать конфигурацию физической системы и выход может быть его энергией.
Задача оптимизации может быть представлена следующим образом
Как правило, A является некоторым подмножеством евклидова пространства R, часто задаваемым набором ограничения, равенства или неравенства, которым должны удовлетворять члены A. Максимизация может быть сведена к минимуму, умножив функцию на минус один.
Использование программного обеспечения оптимизации требует, чтобы функция f была определена на подходящем языке программирования и была связана с программой оптимизации. Программное обеспечение оптимизации предоставит входные значения в A, программный модуль, реализующий f, предоставит вычисленное значение f (x). Таким образом, достигается четкое разделение проблем: разные программные модули оптимизации могут быть легко протестированы на одной и той же функции f, или данное программное обеспечение оптимизации может использоваться для разных функций f.
В следующих таблицах приводится сравнение известных программных библиотек оптимизации, специализированных или общих библиотек со значительным охватом оптимизации.
Имя | Язык | Последняя стабильная версия | Академическая / некоммерческая. использование бесплатно | Может использоваться в. проприетарных приложениях | Лицензия | Примечания |
---|---|---|---|---|---|---|
ALGLIB | C ++, C #, FreePascal, VBA | 3.8.0 / август 2013 г. | Да | Да | Dual (коммерческая, GPL) | Библиотека общего назначения, включает пакет оптимизации. |
AMPL | C, C ++, C #, Python, Java, Matlab, R | октябрь 2018 г. | Да | Да | Dual ( Коммерческий, академический) | Популярный язык алгебраического моделирования для линейной, смешанно-целочисленной и нелинейной оптимизации. Версии для студентов и AMPL для курсов доступны бесплатно. |
APMonitor | Fortran, C ++, Python, Matlab, Julia | 0.6.2 / март 2016 г. | Да | Да | Dual ( Коммерческий, академический) | Язык дифференциального и алгебраического моделирования для смешанно-целочисленной и нелинейной оптимизации. Свободно доступные интерфейсы для Matlab, Python и Julia. |
Artelys Knitro | C, C ++, C #, Python, Java, Julia, Matlab, R | 11.1 / ноябрь 2018 г. | Нет | Да | Коммерческая, академическая, пробная | Библиотека общего назначения, специализирующаяся на нелинейной оптимизации. Обрабатывает смешанные целочисленные задачи (MINLP) и математические программы с ограничениями равновесия (MPEC ). Специализированные алгоритмы решения нелинейных задач наименьших квадратов. |
FICO Xpress | Mosel, 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 | Да | Да | Dual (коммерческий, академический) | GEKKO - это пакет Python для машинного обучения и оптимизации смешанных целочисленных и дифференциально-алгебраических уравнений. Он объединен с крупномасштабными решателями для линейных, квадратичное, нелинейное и смешанное целочисленное программирование (LP, QP, NLP, MILP, MINLP). Режимы работы включают регрессию параметров, согласование данных, оптимизацию в реальном времени, динамическое моделирование и управление нелинейным прогнозированием. |
Комплект для линейного программирования GNU | C | 4.52 / июль 2013 г. | Да | Нет | GPL | Бесплатная библиотека для линейного программирования amming (LP) и смешанное целочисленное программирование (MIP). |
Научная библиотека GNU | C | 1.16 / июль 2013 г. | Да | Нет | GPL | Бесплатная библиотека, предоставленная проектом GNU. |
Gurobi | C, C ++, C #, Java,.Net, Matlab, Python, R | 9.0 / ноя 2019 | Да | Да | Коммерческая, академическая, пробная | Библиотека оптимизации. Обрабатывает смешанные целочисленные линейные задачи, выпуклые квадратичные ограничения и объективную, многоцелевую оптимизацию и ограничения SOS |
Числовые библиотеки IMSL | C, Java, C #, Fortran, Python | многие компоненты | Нет | Да | Собственный | |
LIONsolver | C ++, Java | 2.0.198 / октябрь 2011 г. | Да | Да | Собственная | Поддержка интерактивной и обучающей оптимизации, в соответствии с принципами RSO. |
Math Kernel Library (MKL) | C ++, Fortran | 11.1 / октябрь 2013 г. | Нет | Да | Собственная | Числовая библиотека от Intel. MKL специализируется на линейной алгебре,., но содержит некоторые функции, связанные с оптимизацией. |
MIDACO | C ++, C #, Python, Matlab, Octave, Fortran, R, Java, Excel, VBA, Julia | 6.0 / март 2018 г. | Да | Да | Двойной (коммерческий, академический) | Легкий программный инструмент для одно- и многоцелевой оптимизации. Поддержка MINLP и распараллеливания. |
NAG Numerical Libraries | C, Fortran | Mark 26 / октябрь 2017 г. | Нет | Да | Собственный | |
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 #, построенная на верх МКЛ. |
Octeract Engine | C ++ / Python | 0.11.29 / ноябрь 2019 г. | Нет | Да | Коммерческий | Суперкомпьютерный детерминированный решатель глобальной оптимизации для общих задач MINLP. Octeract Engine использует MPI для распределенных вычислений. |
OptaPlanner | Java | 7.30.0.Final / ноябрь 2019 г. | Да | Да | ASL (открытый исходный код) | Облегченный решатель оптимизации на Java с дополнительными модулями интеграции для JPA-Hibernate, Quarkus, Spring, Jackson, JAXB и т. Д. Работает также на Kotlin и Scala. |
SciPy | Python | 0.13.1 / ноябрь 2013 г. | Да | Да | BSD | Числовые значения общего назначения и научная вычислительная библиотека для Python. |