Как решить задачу линейного программирования: разбор
Дано. Цех выпускает два изделия. На одно изделие A уходит 2 кг сырья и 4 станко-часа, на изделие B - 3 кг сырья и 2 станко-часа. За смену доступно 18 кг сырья и 20 станко-часов. Прибыль составляет 3 тыс. руб. с изделия A и 4 тыс. руб. с изделия B.
Найти: план выпуска, при котором прибыль максимальна.
Переменных всего две, поэтому задачу можно решить дважды и сверить ответы: графическим методом на плоскости и симплекс-методом по таблицам. Ответ: выпускать 3 изделия A и 4 изделия B, прибыль 25 тыс. руб., причём оба ресурса расходуются полностью. Калькулятор сверху пересчитывает область, её вершины и путь симплекса под любые свои нормы расхода, запасы и цены.
Решение по шагам
Шаг 1. Математическая модель. Обозначаем через число изделий A, через - число изделий B. Прибыль складывается из вкладов обоих изделий, её и максимизируем:
Каждый ресурс даёт по одному неравенству: расход не может превысить запас. Плюс переменные неотрицательны, отрицательный выпуск смысла не имеет.
Шаг 2. Область допустимых решений. Каждое неравенство задаёт полуплоскость, граница которой - прямая. Прямую удобнее всего строить по точкам пересечения с осями: подставляем поочерёдно и .
Какую из двух полуплоскостей брать, показывает пробная точка. Подставляем начало координат: и - оба неравенства верны, значит нужные полуплоскости лежат со стороны нуля. Их пересечение с первой четвертью и есть область допустимых решений: на графике сверху это залитый четырёхугольник.
Шаг 3. Вершины области. Три вершины видны сразу: начало координат , точка на оси и точка на оси . Обратите внимание, что на оси границей служит вторая прямая, а не первая: точка лежит на прямой сырья, но нарушает ограничение по станко-часам, ведь .
Четвёртая вершина - пересечение двух прямых. Решаем систему подстановкой: из второго уравнения , подставляем в первое.
Если прямых больше двух, такие системы удобно гонять единообразно - например, методом Гаусса, он не запутается в знаках при любом числе уравнений.
Шаг 4. Перебор вершин. Считаем значение целевой функции в каждой вершине и выбираем наибольшее.
| Вершина | |||
|---|---|---|---|
| 0 | 0 | 0 | |
| 5 | 0 | 15 | |
| 3 | 4 | 25 | |
| 0 | 6 | 24 |
Шаг 5. Проверка линией уровня. Уравнение задаёт семейство параллельных прямых. Смещать их надо в направлении вектора - это градиент целевой функции, направление её самого быстрого роста. Последняя точка области, которой касается уходящая линия уровня, и есть оптимум: здесь это вершина . Перебор вершин и линия уровня дали одно и то же, значит арифметика сошлась.
Ответ: , , тыс. руб. Расход сырья кг, расход станко-часов ч: оба ресурса выбраны под ноль.
Канонический вид и симплекс-таблица
Графика хватает только для двух переменных. Универсальный инструмент - симплекс-метод, и начинается он с перевода неравенств в равенства. К левой части каждого ограничения добавляют неотрицательную балансовую переменную, которая и есть неиспользованный остаток ресурса:
Переменные и дают готовый начальный базис: если ничего не выпускать, весь ресурс лежит в остатке. Заполняем таблицу. В столбце стоят коэффициенты целевой функции при базисных переменных, а нижняя строка - оценки .
| Базис | Свободный член | Отношение | |||||
|---|---|---|---|---|---|---|---|
| 0 | 2 | 3 | 1 | 0 | 18 | 18/3 = 6 | |
| 0 | 4 | 2 | 0 | 1 | 20 | 20/2 = 10 | |
| -3 | -4 | 0 | 0 | 0 |
Критерий оптимальности для задачи на максимум: план оптимален, когда все оценки неотрицательны. Здесь есть отрицательные, значит план улучшаем. Разрешающий столбец - с самой отрицательной оценкой, это . Разрешающую строку выбирают по минимальному отношению свободного члена к положительному элементу этого столбца: , уходит . Разрешающий элемент равен 3, делим на него всю строку и обнуляем остальные элементы столбца.
| Базис | Свободный член | Отношение | |||||
|---|---|---|---|---|---|---|---|
| 4 | 1 | 0 | 6 | 9 | |||
| 0 | 0 | 1 | 8 | 3 | |||
| 0 | 0 | 24 |
План стал лучше: , но оценка всё ещё отрицательна. Вводим , минимальное отношение равно 3, выводим , разрешающий элемент .
| Базис | Свободный член | |||||
|---|---|---|---|---|---|---|
| 4 | 0 | 1 | 4 | |||
| 3 | 1 | 0 | 3 | |||
| 0 | 0 | 25 |
Все оценки неотрицательны - критерий выполнен, дальше улучшать нечего. Из таблицы читаем базисный план: , , . Тот же ответ, что и на графике. Переключатель в калькуляторе сверху рисует путь метода по вершинам: симплекс стартовал из , шагнул в и закончил в , ни разу не заглянув внутрь области.
Числа и в оценках балансовых столбцов - не мусор, а двойственные оценки ресурсов: килограмм сырья сверх запаса добавил бы 1,25 тыс. руб. прибыли, лишний станко-час - 0,125 тыс. руб. Проверка сходится: . Откуда берётся это равенство и что оно гарантирует, разобрано в статье про теорему двойственности.
Почему оптимум всегда в вершине
Целевая функция линейна, а область допустимых решений - выпуклый многогранник. Линии уровня линейной функции параллельны, и при сдвиге в сторону градиента последняя точка контакта с выпуклым множеством не может оказаться внутри области: изнутри всегда есть куда сдвинуться дальше. Значит максимум достигается на границе, а на границе - в вершине.
Отсюда два следствия. Первое: перебор вершин конечен и гарантированно даёт ответ, поэтому для двух переменных график - полноценный метод, а не иллюстрация. Второе: симплексу не нужно обшаривать всю область, он ходит только по вершинам и только в сторону роста функции, поэтому сходится за считанные итерации даже при десятках переменных.
Отдельный случай - когда линия уровня параллельна одной из граничных прямых. Тогда оптимальна вся сторона многоугольника, и решений бесконечно много. Проверить легко: поставьте в калькуляторе прибыли 2 и 3 - вектор станет параллелен прямой сырья, и вершины и дадут одинаковое значение 18. В симплекс-таблице это видно по нулевой оценке у небазисной переменной.
Если задача поставлена иначе
Минимум вместо максимума. Задача равносильна , поэтому можно поменять знаки коэффициентов и работать по тому же алгоритму. Графически линию уровня двигают против градиента, в симплексе меняют критерий: план оптимален, когда все оценки неположительны.
Ограничения со знаком «больше или равно» и равенства. Балансовая переменная тогда вычитается, готового базиса из единичной матрицы не получается, и в модель вводят искусственные переменные - это метод больших штрафов или двухэтапный симплекс.
Больше двух переменных. Плоскости уже не хватает, остаётся симплекс-таблица: трудоёмкость растёт по числу строк, но вручную метод остаётся рабочим.
Особая структура задачи. Если ограничения описывают перевозки от поставщиков к потребителям, симплекс избыточен: у такой задачи есть свой экономный алгоритм, разобранный в решении транспортной задачи.
Дробный ответ. Здесь план вышел целым по построению условия, но в общем случае симплекс выдаёт дроби. Округлять их нельзя: округлённая точка либо выходит за границу области, либо перестаёт быть оптимальной. Нужны целочисленные методы - ветвей и границ или отсечения Гомори.
Частые ошибки
- Ставка на «самое выгодное» изделие. Прибыль от B выше, но если гнать только B, сырья хватит на 6 штук и прибыль составит 24 тыс. руб. - меньше оптимальных 25. Смесь выгоднее чистой стратегии.
- Точка пересечения с осью принимается за вершину. Точка лежит на первой прямой, но нарушает второе ограничение и в область не входит. Каждую кандидатную вершину надо подставлять во все неравенства.
- Неравенства подставляют в симплекс без канонизации. Балансовые переменные добавляют до заполнения таблицы, причём с коэффициентом и с нулевым коэффициентом в целевой функции.
- Отношение считают по всем элементам разрешающего столбца. В расчёт идут только строго положительные элементы; нули и отрицательные пропускают, иначе метод уведёт в недопустимый план.
- Расчёт останавливают на первой неотрицательной оценке. Проверять нужно всю строку целиком: одна отрицательная оценка среди прочих неотрицательных означает, что итерация ещё нужна.
- Забытое условие неотрицательности. Без область перестаёт быть многоугольником в первой четверти, и ответ уезжает в отрицательный выпуск.
FAQ
Когда графический метод работать не будет? Он применим строго при двух переменных, изредка при трёх с построением в пространстве. Как только переменных больше, область не нарисовать, и остаётся симплекс-метод. Число ограничений роли не играет.
Что означает пустая область допустимых решений? Ограничения противоречат друг другу, допустимых планов нет вообще. На чертеже полуплоскости не имеют общей части, в симплексе искусственные переменные остаются в базисе с ненулевым значением. Обычно виноват знак неравенства или опечатка в правой части.
Может ли задача не иметь максимума? Да, если область не ограничена в направлении роста целевой функции. Тогда линию уровня можно двигать бесконечно, а в симплекс-таблице появится разрешающий столбец без единого положительного элемента - это признак неограниченности.
Обязательно ли ответ будет целым? Нет. Симплекс работает с непрерывными переменными и спокойно выдаёт дробные объёмы выпуска. Целочисленность - отдельное требование, которое решается методом ветвей и границ, а не округлением дробного ответа.
Коротко
- Записать модель: переменные, целевую функцию, ограничения по ресурсам и условие неотрицательности.
- При двух переменных построить прямые по точкам пересечения с осями, выделить пробной точкой полуплоскости и получить область допустимых решений.
- Найти координаты вершин, посчитать в них и выбрать наибольшее значение; направление сдвига проверить градиентом.
- Для общего случая привести задачу к каноническому виду балансовыми переменными и вести симплекс-таблицы, пока все оценки не станут неотрицательными.
- Для условия смены: , , тыс. руб., оба ресурса израсходованы полностью, двойственные оценки равны и .
Похожие задачи
Как решить транспортную задачу: пошаговое решение
Как решить транспортную задачу по шагам: проверка баланса, опорный план методом минимального элемента, потенциалы и оценки клеток, цикл пересчёта и проверка оптимальности.
Орг./аналит. химияОкисление перманганатом калия: реакции в трёх средах
Как написать окисление перманганатом калия в кислой, нейтральной и щелочной средах: продукты восстановления марганца, метод электронного баланса, расстановка коэффициентов, расчёт титранта.
Химия (физич./структурная)Как найти активность иона: расчёт по Дебаю-Хюккелю
Как найти активность иона в растворе: ионная сила по всем ионам, коэффициент активности по предельному закону Дебая-Хюккеля, произведение f на c, разбор с числами и калькулятор.
ГенетикаКак найти частоту генотипов: закон Харди-Вайнберга
Разбор задачи по популяционной генетике: как найти частоту генотипов по закону Харди-Вайнберга, формула p2 плюс 2pq плюс q2, расчёт числа особей и калькулятор частот.
МатанализКак найти дифференциал второго порядка функции: формула
Разбираем, как найти дифференциал второго порядка функции: формула через вторую производную, пошаговый расчёт для y = x^3 ln x при dx = 0,1, потеря инвариантности формы и случай двух переменных.
СопроматКак найти допускаемую нагрузку: расчёт по прочности
Как найти допускаемую нагрузку из условия прочности: допускаемое напряжение через коэффициент запаса, площадь и момент сопротивления, расчёт для растяжения и изгиба, калькулятор.