Сравнение программного обеспечения для оптимизации
![]() | Эта статья содержит контент, написанный как реклама . ( Май 2022 г. ) |
Учитывая систему, преобразующую набор входных данных в выходные значения, описываемую математической функцией f , оптимизация означает генерацию и выбор лучшего решения из некоторого набора доступных альтернатив. [1] систематически выбирая входные значения из разрешенного набора, вычисляя значение функции и записывая лучшее значение, найденное в ходе процесса. Многие реальные и теоретические проблемы могут быть смоделированы в этой общей структуре. Например, входными данными могут быть расчетные параметры двигателя, а выходными — потребляемая мощность. Другие ресурсы могут быть выбраны бизнесом, а на выходе будет получена прибыль. или описание конфигурации физической системы, выходным сигналом которой является ее энергия.
Задачу оптимизации можно представить следующим образом.
- Дано функция f : : A R из некоторого множества A к действительным числам
- Найдите: элемент x 0 в A такой, что f ( x 0 ) ≤ f ( x ) для всех x в A («минимизация»).
Обычно A — это некоторое подмножество евклидова пространства R. н , часто задаваемый набором ограничений члены A. , равенств или неравенств, которым должны удовлетворять Максимизацию можно свести к минимизации, умножив функцию на минус единицу.
Использование программного обеспечения для оптимизации требует, чтобы функция f была определена на подходящем языке программирования и связана с программным обеспечением для оптимизации. Программное обеспечение для оптимизации предоставит входные значения в A , программный модуль, реализующий f, предоставит вычисленное значение f ( x ). Таким образом достигается четкое разделение задач: разные модули программного обеспечения оптимизации можно легко протестировать на одной и той же функции f , или одно и то же программное обеспечение оптимизации можно использовать для разных функций f .
В следующих таблицах представлено сравнение известных библиотек программного обеспечения для оптимизации, как специализированных, так и библиотек общего назначения со значительным охватом оптимизации.
Имя | Язык программирования | Последняя стабильная версия | Академический/некоммерческий использование бесплатное | Может использоваться в проприетарные приложения | Лицензия | Примечания |
---|---|---|---|---|---|---|
АЛГЛИБ | С++, С#, Питон, FreePascal | 3.19.0 / июнь 2022 г. | Да | Да | Двойной (коммерческий, GPL) | Библиотека общего назначения, включает пакет оптимизации: линейное, квадратичное, нелинейное программирование. |
AMPL | C, C++, C#, Python, Java, Matlab, R | Октябрь 2018 г. | Да | Да | Двойной (коммерческий, академический) | Популярный язык алгебраического моделирования для линейной, смешанно-целочисленной и нелинейной оптимизации. Версии для студентов и AMPL для курсов доступны бесплатно. |
APMonitor | Фортран, С++, Питон, Матлаб, Джулия | 0.6.2 / март 2016 г. | Да | Да | Двойной (коммерческий, академический) | Язык дифференциального и алгебраического моделирования для смешанно-целочисленной и нелинейной оптимизации. Свободно доступные интерфейсы для Matlab, Python и Julia. |
Артелис Книтро | C, C++, C#, Python, Java, Julia, Matlab, R | 11.1 / ноябрь 2018 г. | Нет | Да | Коммерческий, Академический, Пробный | Библиотека общего назначения, специализирующаяся на нелинейной оптимизации. Обрабатывает смешанно-целочисленные задачи (MINLP) и математические программы с равновесными ограничениями ( MPEC ). Специализированные алгоритмы для решения нелинейных задач наименьших квадратов. |
Комплексный комплекс | C, С++, Java, С#, Питон, R | 20.1 / декабрь 2020 г. | Да | Да | Коммерческий, академический, судебный | IBM CPLEX Optimization Studio — это набор механизмов оптимизации (CPLEX для математического программирования и CP Optimizer для программирования с ограничениями), языка моделирования (OPL) и интегрированной среды разработки. |
ФИКО Экспресс | Мозель, BCL, C, C++, Java, R, Python, Matlab, .Net, VB6 | 13.08 / ноя 2021 г. | Да | Да | Коммерческий, академический, общественный, судебный | Комплекс оптимизирующих технологий и решений. Включает: технологии решателя, включая (LP (симплекс и барьер), MIP, MIQP, MIQCQP, MISOCP, MINLP QP, QCQP, SOCP, NLP (SLP и внутренняя точка); язык алгебраического моделирования и процедурного программирования; интегрированную среду разработки; поддерживает за комплекс услуг по исполнению; Поддержка упаковки оптимизационных моделей и сервисов в виде программных решений; |
ГЕККО | Питон | 0.2.8 / август 2020 г. | Да | Да | Двойной (коммерческий, академический) | GEKKO — это пакет Python для машинного обучения и оптимизации смешанно-целочисленных и дифференциальных алгебраических уравнений. Он сочетается с крупномасштабными решателями для линейного, квадратичного, нелинейного и смешанного целочисленного программирования (LP, QP, NLP, MILP, MINLP). Режимы работы включают регрессию параметров, сверку данных, оптимизацию в реальном времени, динамическое моделирование и нелинейное прогнозирующее управление. |
Комплект линейного программирования GNU | С | 4.52 / июль 2013 г. | Да | Нет | лицензия GPL | Бесплатная библиотека для линейного программирования (LP) и смешанного целочисленного программирования (MIP). |
Научная библиотека ГНУ | С | 1.16 / июль 2013 г. | Да | Нет | лицензия GPL | Бесплатная библиотека, предоставленная проектом GNU. |
Числовые библиотеки IMSL | C, Java, C#, Фортран, Питон | много компонентов | Нет | Да | Собственный | |
решатель LION | С++, Ява | 2.0.198 / октябрь 2011 г. | Да | Да | Собственный | Поддержка интерактивной оптимизации и оптимизации обучения, по принципам РСО. [2] |
Библиотека математических ядер (MKL) | С++, Фортран | 11.1 / октябрь 2013 г. | Нет | Да | Собственный | Числовая библиотека от Intel. MKL специализируется на линейной алгебре, но содержит некоторые функции, связанные с оптимизацией. |
Вольфрам Математика | С++, язык Вольфрам | 14.0.0 (9 января 2024 г [±] [3] | )Нет | Да | Собственный | Нелинейная оптимизация с ограничениями, методы внутренней точки, выпуклая оптимизация и целочисленное программирование, а также оригинальные символьные методы, интегрированные с общими вычислительными возможностями. |
МИДАКО | C++, C#, Python, Matlab, Octave, Фортран, R, Java, Excel, VBA, Julia | 6.0 / март 2018 г. | Да | Да | Двойной (коммерческий, академический) | Легкий программный инструмент для одно- и многоцелевой оптимизации. Поддержка MINLP и распараллеливания. |
Числовые библиотеки NAG | С, Фортран | 26 Марка / октябрь 2017 г. | Нет | Да | Собственный | |
NMath | С# | 5.3 / май 2013 г. | Нет | Да | Собственный | Числовая библиотека C#, построенная на основе MKL. |
Октерактовый движок | С++/Питон | 0.11.29 / ноябрь 2019 г. | Нет | Да | Коммерческий | Суперкомпьютерный детерминированный решатель глобальной оптимизации для общих задач MINLP. Octeract Engine использует MPI для распределенных вычислений. |
ОптаПланнер | Ява | 8.0.0.Финал / ноябрь 2020 г. | Да | Да | АСЛ (с открытым исходным кодом) | Легкий решатель оптимизации на Java с дополнительными модулями интеграции для JPA-Hibernate, Quarkus, Spring, Jackson, JAXB и т. д. Также работает на Kotlin и Scala. |
SciPy | Питон | 0.13.1 / ноябрь 2013 г. | Да | Да | БСД | Библиотека числовых и научных вычислений общего назначения для Python. |
См. также [ править ]
Ссылки [ править ]
- ^ « Природа математического программирования », Глоссарий математического программирования , INFORMS Computing Society.
- ^ Баттити, Роберто; Мауро Брунато; Франко Массия (2008). Реактивный поиск и интеллектуальная оптимизация . Спрингер Верлаг . ISBN 978-0-387-09623-0 .
- ^ «История продолжается: анонс версии 14 языков Wolfram Language и Mathematica» . Проверено 9 января 2024 г.