Сравнение программного обеспечения для оптимизации

редактировать

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

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

Дано: функция f: A → {\ displaystyle \ to}\ to Rиз некоторого установить A в действительные числа
Искать: элемент x 0 в A такой, что f (x 0) ≤ f (x) для всех x в A ("минимизация").

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

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

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

ИмяЯзыкПоследняя стабильная версияАкадемическая / некоммерческая. использование бесплатноМожет использоваться в. проприетарных приложенияхЛицензияПримечания
ALGLIB C ++, C #, FreePascal, VBA3.8.0 / август 2013 г.ДаДаDual (коммерческая, GPL)Библиотека общего назначения, включает пакет оптимизации.
AMPL C, C ++, C #, Python, Java, Matlab, Rоктябрь 2018 г.ДаДаDual ( Коммерческий, академический)Популярный язык алгебраического моделирования для линейной, смешанно-целочисленной и нелинейной оптимизации. Версии для студентов и AMPL для курсов доступны бесплатно.
APMonitor Fortran, C ++, Python, Matlab, Julia0.6.2 / март 2016 г.ДаДаDual ( Коммерческий, академический)Язык дифференциального и алгебраического моделирования для смешанно-целочисленной и нелинейной оптимизации. Свободно доступные интерфейсы для Matlab, Python и Julia.
Artelys Knitro C, C ++, C #, Python, Java, Julia, Matlab, R11.1 / ноябрь 2018 г.НетДаКоммерческая, академическая, пробнаяБиблиотека общего назначения, специализирующаяся на нелинейной оптимизации. Обрабатывает смешанные целочисленные задачи (MINLP) и математические программы с ограничениями равновесия (MPEC ). Специализированные алгоритмы решения нелинейных задач наименьших квадратов.
FICO Xpress Mosel, 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); язык алгебраического моделирования и процедурного программирования; интегрированную среду разработки; поддерживает для ряда услуг по исполнению; Поддержка упаковки моделей оптимизации и услуг в виде программных решений
GEKKO Python0.2.8 / август 2020ДаДаDual (коммерческий, академический)GEKKO - это пакет Python для машинного обучения и оптимизации смешанных целочисленных и дифференциально-алгебраических уравнений. Он объединен с крупномасштабными решателями для линейных, квадратичное, нелинейное и смешанное целочисленное программирование (LP, QP, NLP, MILP, MINLP). Режимы работы включают регрессию параметров, согласование данных, оптимизацию в реальном времени, динамическое моделирование и управление нелинейным прогнозированием.
Комплект для линейного программирования GNU C4.52 / июль 2013 г.ДаНетGPLБесплатная библиотека для линейного программирования amming (LP) и смешанное целочисленное программирование (MIP).
Научная библиотека GNU C1.16 / июль 2013 г.ДаНетGPLБесплатная библиотека, предоставленная проектом GNU.
Gurobi C, C ++, C #, Java,.Net, Matlab, Python, R9.0 / ноя 2019ДаДаКоммерческая, академическая, пробнаяБиблиотека оптимизации. Обрабатывает смешанные целочисленные линейные задачи, выпуклые квадратичные ограничения и объективную, многоцелевую оптимизацию и ограничения SOS
Числовые библиотеки IMSL C, Java, C #, Fortran, Pythonмногие компонентыНетДаСобственный
LIONsolver C ++, Java2.0.198 / октябрь 2011 г.ДаДаСобственнаяПоддержка интерактивной и обучающей оптимизации,

в соответствии с принципами RSO.

Math Kernel Library (MKL)C ++, Fortran11.1 / октябрь 2013 г.НетДаСобственнаяЧисловая библиотека от Intel. MKL специализируется на линейной алгебре,., но содержит некоторые функции, связанные с оптимизацией.
MIDACO C ++, C #, Python, Matlab, Octave, Fortran, R, Java, Excel, VBA, Julia6.0 / март 2018 г.ДаДаДвойной (коммерческий, академический)Легкий программный инструмент для одно- и многоцелевой оптимизации. Поддержка MINLP и распараллеливания.
NAG Numerical Libraries C, FortranMark 26 / октябрь 2017 г.НетДаСобственный
C, 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).
NMath C #5.3 / май 2013 г.НетДаСобственнаячисловая библиотека C #, построенная на верх МКЛ.
Octeract Engine C ++ / Python0.11.29 / ноябрь 2019 г.НетДаКоммерческийСуперкомпьютерный детерминированный решатель глобальной оптимизации для общих задач MINLP. Octeract Engine использует MPI для распределенных вычислений.
OptaPlanner Java7.30.0.Final / ноябрь 2019 г.ДаДаASL (открытый исходный код)Облегченный решатель оптимизации на Java с дополнительными модулями интеграции для JPA-Hibernate, Quarkus, Spring, Jackson, JAXB и т. Д. Работает также на Kotlin и Scala.
SciPy Python0.13.1 / ноябрь 2013 г.ДаДаBSDЧисловые значения общего назначения и научная вычислительная библиотека для Python.
См. Также
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-15 08:04:38
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте