Введение
Что такое JuMP
JuMP — это предметно-ориентированный язык моделирования для математической оптимизации, встроенный в Julia. В настоящее время он поддерживает ряд решателей с открытым исходным кодом и коммерческих решателей для различных классов задач, включая линейное, частично целочисленное, коническое второго порядка, полуопределенное и нелинейное программирование.
Если вы не уверены, нужен ли вам язык JuMP, см. раздел Should you use JuMP?. |
Ресурсы для начала работы
Приступить к работе с JuMP можно четырьмя способами.
-
Прочитайте Installation Guide.
-
Прочитайте вводные руководства Getting started with Julia и Getting started with JuMP.
-
Ознакомьтесь с руководствами по моделированию, в том числе по решению таких классических задач, как The diet problem, or the Maximum likelihood estimation problem с использованием нелинейного программирования.
Нужна помощь? На форуме сообщества можно найти ответы на часто задаваемые вопросы. |
Прежде чем задавать вопрос, прочитайте запись Как упростить получение помощи с советами по правильной постановке вопроса.
Структура документации
Общее представление о структуре этой документации поможет вам понять, где искать нужную информацию.
-
В руководствах содержатся практические примеры решения задач с помощью JuMP. Начните с них, если вы новичок в JuMP или вам нужно смоделировать задачу определенного класса.
-
Руководство содержит небольшие фрагменты кода, иллюстрирующие выполнение конкретных задач в JuMP. Обратитесь к нему, если хотите узнать, как выполнить определенную задачу, например удалить переменную](manual/variables.md#delete_a_variable) или изменить коэффициент целевой функции ([Modify an objective coefficient).
-
В справке по API содержится полный список функций, которые можно использовать в JuMP. Обратитесь к ней, если хотите узнать, как использовать определенную функцию.
-
В разделе Дополнительная информация приводятся материалы общего характера о JuMP. Прочитайте его, если хотите узнать, что такое язык JuMP и зачем мы его создали, а не как его использовать.
-
В разделе Документация для разработчиков приводится информация для тех, кто принимает участие в разработке JuMP или создании расширений JuMP. Если вы просто используете JuMP для формулирования и решения задач, этот раздел вам не нужен.
-
Раздел MathOptInterface представляет собой автономную копию документации по MathOptInterface. Здесь можно найти описание функций и констант, начинающихся с
MOI.
, а также общую информацию о принципах работы MathOptInterface.
Цитирование JuMP
Если язык JuMP оказался полезным в вашей работе, просим вас добавлять ссылку на следующую статью (препринт):
@article{Lubin2023,
author = {Miles Lubin and Oscar Dowson and Joaquim {Dias Garcia} and Joey Huchette and Beno{\^i}t Legat and Juan Pablo Vielma},
title = {{JuMP} 1.0: {R}ecent improvements to a modeling language for mathematical optimization},
journal = {Mathematical Programming Computation},
year = {2023},
doi = {10.1007/s12532-023-00239-3}
}
NumFOCUS
JuMP — это проект, спонсируемый NumFOCUS, некоммерческой благотворительной организацией со статусом 501 (c) (3), базирующейся в США. NumFOCUS оказывает JuMP финансовую, юридическую и административную поддержку для обеспечения жизнеспособности и устойчивости проекта. Дополнительные сведения см. на сайте numfocus.org.
Вы можете поддержать проект JuMP, внеся пожертвование.
Пожертвованиями в пользу JuMP распоряжается организация NumFOCUS. Пожертвования от лиц в США подлежат налоговому вычету в размере, предусмотренном законом. Как и в случае с любым пожертвованием, вам следует проконсультироваться со своим налоговым консультантом относительно вашей конкретной налоговой ситуации.
Самая крупная статья расходов JuMP — ежегодный семинар для разработчиков JuMP-dev. Пожертвования помогут нам оплатить поездки участников JuMP-dev и предоставить другие возможности для поддержки разработки JuMP.
Лицензия
JuMP распространяется по лицензии на программное обеспечение MPL-2.0. Дополнительные сведения см. в тексте лицензии и часто задаваемых вопросах Mozilla. Кроме того, JuMP часто используется вместе с пакетами решателей и расширениями, имеющими собственные лицензии. Информацию о действующих лицензиях см. в репозиториях пакетов.