Введение в линейное программирование: от диеты для мышей до теорем двойственности

MIT OpenCourseWare 3,7 тыс. 1 ч 13 мин 4 мин 17.12.2025
Главное

В лекции из курса MIT OpenCourseWare профессор Питер Шор вводит слушателей в мир линейного программирования — одного из ключевых инструментов современной оптимизации. На примере простых бытовых задач он демонстрирует, как перевести реальные ограничения в математические модели и почему понимание теории двойственности важнее для математика, чем умение вычислять алгоритмы вручную.

💰 Линейное программирование как «двигатель» оптимизации 0:00

Линейное программирование (LP) — это не просто абстрактная математическая дисциплина, а огромный бизнес и фундамент для систем оптимизации. В качестве примера коммерческого успеха Питер Шор приводит историю Роберта Биксби, который в 1987 году основал компанию и создал CPLEX — на тот момент лучший инструмент для решения задач линейного программирования. Спустя десять лет компания была продана за сумму около 50 миллионов долларов, а недавно IBM выкупила её уже за 180 миллионов долларов.

Суть линейного программирования заключается в максимизации или минимизации линейной функции при соблюдении набора линейных ограничений. Процесс работы с LP состоит из трёх этапов:

  1. Выбор переменных.
  2. Написание целевой функции.
  3. Определение ограничений.

🐭 Диетическая модель: минимизация затрат на корм 2:54

Профессор рассматривает классическую задачу о диете, адаптированную для кормления лабораторных мышей. У мышей есть минимальные потребности в питательных веществах: 8 единиц крахмала, 15 единиц белка и 7 единиц витаминов.

Для кормления доступны два вида зерна:

Математическая модель задачи выглядит следующим образом: необходимо минимизировать общую стоимость $60x_1 + 35x_2$ при условии, что сумма питательных веществ от обоих типов зерна будет больше или равна требуемым нормам. Важным дополнением являются ограничения неотрицательности: количество зерна не может быть отрицательным ($x_1 \ge 0, x_2 \ge 0$).

🍪 Выпечка и «допустимая область» решений 9:58

Второй пример касается максимизации прибыли от продажи печенья и меренг. Здесь ресурсы (яйца, сахар, мука) ограничены, а цель — получить как можно больше денег.

Параметры задачи:

На примере этой задачи Шор вводит понятие допустимого решения (feasible solution) — любой точки, удовлетворяющей всем ограничениям. В случае с двумя переменными область допустимых решений можно нарисовать на плоскости. Оптимальное решение всегда находится в одной из экстремальных точек (вершин) этого многоугольника. Интересно, что ограничение по муке в данном примере оказывается избыточным, так как оно не влияет на форму области, заданную другими ресурсами.

📋 Стандартная и каноническая формы 19:39

Для работы алгоритмов задачи линейного программирования должны быть приведены к строгому формату. Профессор выделяет две основные формы:

Любую задачу LP можно трансформировать. Например, чтобы превратить неравенство «меньше или равно» в равенство, добавляется слабая переменная (slack variable). Если же нужно сменить минимизацию на максимизацию, достаточно просто инвертировать знаки коэффициентов целевой функции.

🚶‍♂️ Симплекс-метод и его эффективность 28:44

Хотя Шор не углубляется в технические детали вычислений, он дает обзор симплекс-метода, предложенного Данцигом. Алгоритм начинает работу в одной из вершин допустимой области и «шагает» по рёбрам к соседним вершинам, пока значение целевой функции улучшается.

Профессор отмечает парадокс симплекс-метода:

Этот разрыв между теорией и практикой был объяснен лишь недавно Дэном Спилманом (бывшим профессором MIT) и Тенгом, которые разработали «сглаженный анализ» (smoothed analysis). По словам Шора, этот анализ доказывает, что метод работает быстро почти всегда.

⚖️ Теория двойственности: обратная сторона задачи 41:18

Центральная часть лекции посвящена двойственности (duality). У каждой задачи линейного программирования (прямой или примальной) есть «зеркальная» двойственная задача. Если в прямой задаче мы максимизируем прибыль, то в двойственной — минимизируем стоимость ресурсов, необходимых для её получения.

Шор приводит и доказывает две важнейшие теоремы:

  1. Теорема слабой двойственности: Любое допустимое решение примальной задачи дает нижнюю границу для двойственной, а любое решение двойственной — верхнюю границу для примальной.
  2. Теорема сильной двойственности: Если оптимальное решение существует, то максимумы прямой задачи и минимумы двойственной в точности равны ($z^ = w^$).

Профессор подчеркивает, что прикладному математику не обязательно знать, что происходит «под капотом» софта вроде CPLEX, но он обязан понимать двойственность. Это позволяет не только находить границы решения, но и глубже понимать интуитивную суть проблемы, будь то экономика, потоки в сетях или игры с нулевой суммой.

💬 Цитаты

«Линейное программирование — один из больших двигателей оптимизации.»

Питер Шор 0:29

«Если вы прикладной математик, вам действительно нужно знать, как использовать двойственность.»

Питер Шор 30:27
👥 Спикер
🔗 Упомянутые сайты и проекты
📖 Термины
Слабая переменная (Slack variable)
Дополнительная переменная, вводимая для превращения неравенства типа «меньше или равно» в строгое равенство.
Допустимая область (Feasible region)
Множество всех точек, которые удовлетворяют всем заданным ограничениям задачи.
Симплекс-метод
Алгоритм решения задач линейного программирования путем последовательного перехода от одной вершины многогранника к другой.
Двойственность (Duality)
Принцип в оптимизации, согласно которому каждой задаче максимизации соответствует сопряженная задача минимизации с тем же результатом.
📊 Цифры
🗓 Хронология
  1. 1986 Питер Шор начинает работать, на рынке уже существуют инструменты линейного программирования.
  2. 1987 Роберт Биксби основывает компанию и пишет CPLEX.
  3. 1997 Биксби продает компанию примерно через 10 лет после основания за $40-50 млн.
  4. 2000-е IBM покупает компанию-владельца CPLEX за $180 млн.
⚖️ Другая сторона
Математика и физика Линейное программирование Симплекс-метод Теория двойственности Питер Шор CPLEX