PuLP — это библиотека на языке Python, предназначенная для формулирования и решения задач линейного и целочисленного программирования. Она предоставляет высокоуровневый интерфейс для определения переменных, целевых функций и ограничений, а также для взаимодействия с различными внешними решателями задач оптимизации. PuLP широко применяется в академических исследованиях и прикладных проектах для моделирования смешанно-целочисленных задач (MILP) и линейных программ (LP).
Проект возник как инструмент для удобного создания моделей оптимизации в среде Python и последующей их передачи решателям формата MPS/LP или непосредственной интеграции с внешними оптимизаторами. Библиотека ориентирована на простоту использования и наглядность записи моделей: выражения целевой функции и ограничений задаются в привычной для Python форме, а процесс выбора решателя оставлен за пользователем. Информация о ранней истории разработки и авторстве доступна в открытых репозиториях проекта; при недостатке документированных исторических данных это описание фокусируется на текущем назначении и функциональности.
- Формулирование моделей: декларативное создание переменных, целевых функций и линейных ограничений с использованием синтаксиса Python.
 - Поддержка типов переменных: непрерывные, целочисленные и бинарные переменные для построения LP и MILP моделей.
 - Интеграция с решателями: возможность экспорта моделей в форматы MPS/LP и запуска внешних решателей (коммерческих и свободных) для получения оптимальных решений.
 - Серийный и программный контроль: управление параметрами решателя, чтение статуса решения и извлечение значений переменных и значений целевой функции.
 - Экспорт и импорт моделей: создание файлов описания модели в стандартных форматах для дальнейшего анализа или использования в других системах оптимизации.
 - Удобство прототипирования: подходит для быстрого создания и тестирования моделей оптимизации в исследовательских и прикладных задачах.
 - Совместимость с Python-экосистемой: простая интеграция в скрипты и приложения на Python, возможность использования вместе с библиотеками для обработки данных и визуализации.