Введение
Линейные программы (LP) представляют собой фундаментальный класс задач оптимизации вида:
Самый важная особенность — это то, что все члены имеют вид coefficient * variable
и что нет нелинейных членов или умножений переменных.
Частично целочисленные линейные программы (MILP) представляют собой расширения линейных программ, в которых некоторые (или все) переменные решения принимают дискретные значения.
Выбор решателя
Почти все решатели поддерживают линейные программы; обращайте внимание на буквы LP в списке в разделе Supported solvers. Однако частично целочисленные линейные программы поддерживает меньшее количество решателей. В списке в разделе Supported solvers имена решателей, поддерживающих дискретные переменные, начинаются с «(MI)».
Структура руководств
Общее представление о структуре этой части документации поможет вам понять, где искать нужную информацию.
-
Следующие руководства представляют собой практические примеры, в которых задача излагается словами, затем формулируется математически, а затем решается в JuMP. Решение обычно визуализируется каким-либо образом. Начните с них, если вы новичок в JuMP.
-
The diet problem
-
The cannery problem
-
The facility location problem
-
Financial modeling problems
-
Network flow problems
-
N-Queens
-
Sudoku
-
-
В руководстве Советы приводится ряд полезных переформулировок и приемов, которые можно использовать при моделировании линейных программ. Обратитесь к нему, если вы зашли в тупик, пытаясь сформулировать задачу в виде линейной программы.
-
В руководстве Sensitivity analysis of a linear program объясняется, как создавать отчеты о чувствительности, подобные создаваемым Excel Solver.
-
В руководстве Обратные вызовы объясняется, как писать различные обратные вызовы, независимые от решателя. Обратитесь к нему, если вам нужно написать обратный вызов.
-
Остальные руководства менее подробны и оформлены в виде коротких примеров кода. В них меньше пояснений, но они могут содержать полезные фрагменты кода, особенно если вы пытаетесь решить похожую задачу.