Документация Engee

Введение

Линейные программы (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.

  • В руководстве Обратные вызовы объясняется, как писать различные обратные вызовы, независимые от решателя. Обратитесь к нему, если вам нужно написать обратный вызов.

  • Остальные руководства менее подробны и оформлены в виде коротких примеров кода. В них меньше пояснений, но они могут содержать полезные фрагменты кода, особенно если вы пытаетесь решить похожую задачу.