Симплекс-метод: пошаговый алгоритм решения ЗЛП с примером
Как работает симплекс-метод: каноническая форма, базисные и свободные переменные, симплекс-таблица, разрешающий столбец и строка. Две итерации полного примера.
В прошлом уроке задача про столы и тумбы решилась на чертеже. А теперь усложним: третий продукт, четвёртый станок, двадцать сортов сырья. Рисовать полуплоскости в двадцатимерном пространстве не выйдет — нужен метод, который живёт в любой размерности. Такой метод есть: симплекс-метод, придуманный Джорджем Данцигом в 1947 году для военной логистики. Он не рисует ничего. Он ходит по вершинам многогранника допустимых планов с помощью одной таблицы и двух правил выбора.
Почему вершинный перебор работает без чертежей#
Из графического урока остался один факт: если область допустимых решений ограничена, оптимум линейной функции сидит в вершине. Вершины — их конечное число. Значит, теоретически можно перебрать их все. Симплекс-метод делает это умнее: из текущей вершины он переходит не куда угодно, а в соседнюю — ту, где целевая функция больше. Значение растёт с каждой итерацией, и процесс останавливается, когда лучше уже не бывает.
Соседние вершины отличаются ровно одной образующей прямой: одна граница отошла, другая прижалась. Алгебраический след — обмен ролями между переменными: одна покидает базис, одна занимает её место. Вот и вся механика. Название метод не обязано объяснять: «симплекс» достался ему от ранней геометрической интерпретации Данцига и прижился, хотя ничего простого, кроме таблицы, в методе нет.
Каноническая форма: базисные и свободные переменные#
Переводим задачу про цех в каноническую форму — добавляем балансовые переменные и , недогрузки станков:
Переменных четыре, уравнений два. Делим их на две группы. Свободные переменные — те, что приравниваем нулю: на старте это и , выпуск пуст. Базисные переменные — те, что выражаются из уравнений: , . Набор — базисное решение, и оно в точности соответствует вершине чертежа: нулевой выпуск, станки простаивают.
| Переменная | Роль на старте | Значение | Смысл |
|---|---|---|---|
| свободная | 0 | столы | |
| свободная | 0 | тумбы | |
| базисная | 8 | простой станка А, часы | |
| базисная | 6 | простой станка Б, часы |
Каждая вершина ОДР отвечает своему базису, и переход в соседнюю вершину — это обмен: одна переменная входит в базис, другая выходит. Симплекс-метод — формальная процедура такого обмена, в которой ничего не рисуют и ничего не угадывают.
Симплекс-таблица: что где записано#
Таблица устроена так: строки — базисные переменные с их ценами ; столбцы — все переменные задачи; в правом столбце — правые части, то есть значения базисных переменных. Внизу — строка оценок , где — произведение столбца на вектор цен , а — цена самой переменной. В клетке пересечения строки оценок со столбцом живёт текущее значение .
Начальная таблица задачи о цехе:
| Базис | $c_B$ | $x_1$ | $x_2$ | $x_3$ | $x_4$ | b | θ |
|---|---|---|---|---|---|---|---|
| 0 | 1 | 2 | 1 | 0 | 8 | 8/2 = 4 | |
| 0 | 1 | 1 | 0 | 1 | 6 | 6/1 = 6 | |
| Δ | — | −2 | −3 | 0 | 0 | F = 0 | — |
Оценки здесь — просто минусы цен свободных переменных: , , потому что базисные переменные ничего не стоят. Отрицательные оценки и есть сигнал: текущий план можно улучшить.
Алгоритм за пять шагов#
- Привести задачу к канонической форме и записать начальную таблицу: базис — балансовые переменные.
- Посмотреть на строку оценок: все ? План оптимален — стоп.
- Выбрать разрешающий столбец: , обычно наибольшую по модулю отрицательную оценку.
- Выбрать разрешающую строку: для положительных элементов столбца посчитать симплекс-отношения и взять строку с минимумом. Элемент на пересечении — разрешающий.
- Пересчитать таблицу методом Жордана–Гаусса: разрешающую строку поделить на разрешающий элемент, из остальных строк вычесть её с подходящими множителями. Вернуться к шагу 2.
Почему минимум работает именно так? Разрешающий элемент — ось вращения: вводимая переменная растёт от нуля, базисные в ответ меняются. Первая базисная переменная, упавшая до нуля, и есть граница роста; шагнуть дальше — план выйдет из ОДР, и это обнаружится в столбце отрицательными числами. Минимальное симплекс-отношение останавливает переменную ровно на границе: новая вершина достигнута, план остался допустимым.
Полный пример: две итерации до оптимума#
Идём по таблице. Разрешающий столбец — : оценка самая отрицательная. Симплекс-отношения: и ; минимум у строки . Разрешающий элемент — двойка на пересечении. Тумбы входят в план, простой станка А уходит из базиса.
Пересчёт. Первую строку делим на 2 — она становится строкой базисной : . Из строки вычитаем её: . Оценки пересчитываем по ценам : для столбца выходит , значит ; для столбца выходит . Значение — в точности вершина чертежа из графического урока.
| Базис | $c_B$ | $x_1$ | $x_2$ | $x_3$ | $x_4$ | b | θ |
|---|---|---|---|---|---|---|---|
| 3 | 1/2 | 1 | 1/2 | 0 | 4 | 4 : (1/2) = 8 | |
| 0 | 1/2 | 0 | −1/2 | 1 | 2 | 2 : (1/2) = 4 | |
| Δ | — | −1/2 | 0 | 3/2 | 0 | F = 12 | — |
Отрицательная оценка осталась одна — столбец . Отношения: и — уходит простой станка Б, столы входят в план. Разрешающий элемент . Делим строку на него: получается строка : . Из строки вычитаем половину новой: . Столбец читает ответ: , .
| Базис | $c_B$ | $x_1$ | $x_2$ | $x_3$ | $x_4$ | b | θ |
|---|---|---|---|---|---|---|---|
| 3 | 0 | 1 | 1 | −1 | 2 | — | |
| 2 | 1 | 0 | −1 | 2 | 4 | — | |
| Δ | — | 0 | 0 | 1 | 1 | F = 14 | — |
Строка оценок стала неотрицательной: , . Все — план оптимален. Ответ: , , — ровно то, что дал чертёж. Балансовые переменные обнулились: оба станка загружены до упора, свободного часа нет.
Три сигнала таблицы: оптимум, бесконечность, вырожденность#
- Все оценки неотрицательны — план оптимален. Если при этом нулевая оценка стоит у свободной переменной, оптимум не единственный: есть целая грань равноценных планов.
- В разрешающем столбце нет положительных элементов — целевая функция не ограничена: улучшать можно бесконечно, симплекс-отношения считать не из чего.
- Минимальное симплекс-отношение равно нулю — вырожденность: из базиса уйдёт переменная с нулевым значением, а за шаг не изменится.
Вырожденность — не ошибка, а состояние: у многогранника вершина, где сходится больше ограничений, чем нужно для базиса. Метод продолжает работать, просто один шаг оказывается бесплатным. Теоретически возможен цикл — возврат к старому базису; на практике его обрывают правилом выбора строки, например правилом Блэнда: брать строку с наименьшим номером уходящей переменной.
Геометрически алгоритм выглядит скромно: старт в вершине , шаг к , шаг к . Две итерации — потому что задачу из немногих переменных метод проходит за считанные ходы. В промышленных задачах с тысячами ограничений вершин триллионы, но симплекс всё равно приходит к ответу за десятки шагов: он не блуждает, а всегда лезет вверх по склону .
Откуда метод берётся и куда идёт#
Пересчёт таблицы — элементарные преобразования строк, те же, что в методе Гаусса: делим строку, вычитаем из других, обнуляем столбец. Разница только в маршруте: гаусс приводит систему к ступенчатому виду раз и навсегда, симплекс после каждого пересчёта заново решает, какой столбец ввести в базис. Термин закреплён в словарной статье про метод Гаусса, а потренировать сами преобразования строк можно в тренажёре СЛАУ.
Финальная таблица щедрее, чем кажется: оценки при балансовых переменных — это готовые теневые цены ресурсов. В нашем примере и означают: лишний час любого станка стоит тысячу. Откуда это берётся и как читать — двойственность в ЛП.
Строка оценок таблицы: . Какой столбец разрешающий по правилу «наибольшая по модулю отрицательная оценка»?
Столбец , разрешающий столбец . Какая строка уйдёт из базиса?
В разрешающем столбце все элементы отрицательны или нули. Что это значит?
Частые вопросы
Как выбрать разрешающий элемент в симплекс-таблице?
Сначала столбец: среди отрицательных оценок берут максимальную по модулю. Потом строку: для положительных элементов этого столбца считают и берут минимум. Элемент на пересечении — разрешающий: его выносят делением строки и обнулением столбца в остальных строках.
Что делать, если в разрешающем столбце нет положительных элементов?
Это признак неограниченности: соответствующую свободную переменную можно увеличивать бесконечно, не наткнувшись ни на одну границу, а целевая функция растёт без предела. Максимума не существует. В прикладной модели проверьте, не забыто ли ограничение по спросу, бюджету или фонду времени — обычно виновата постановка, а не метод.
Чем симплекс-метод отличается от метода Гаусса?
Гаусс решает систему линейных уравнений раз и навсегда. Симплекс решает задачу оптимизации: он использует те же преобразования строк (Жордан–Гаусс), но между шагами выбирает, какой столбец ввести в базис и какой вывести, чтобы целевая функция росла. Гаусс — двигатель, симплекс — руль и маршрут.
Что такое вырожденный базисный план?
План, у которого хотя бы одна базисная переменная равна нулю. На таблице он виден нулём в столбце b: минимальное симплекс-отношение равно нулю и F за итерацию не меняется. Метод продолжает работать; при зацикливании меняют правило выбора строки — например, на правило Блэнда.
Готовитесь к контрольной?
Чеклист тем по «Теория игр»: что вы уже умеете, что повторить и в каком порядке.
Открыть чеклист предмета →
Проверьте себя в бою
Босс-экзамен по «Теория игр»: квизы всех уроков плюс бесконечный поток сгенерированных задач. Каждая попытка — новый расклад.
Начать босс-экзамен →