Анализ чувствительности в линейном программировании
Что такое анализ чувствительности? 🧐
Представьте, что вы построили идеальный бизнес-план на основе математической модели. Но мир меняется: цены на сырье растут, спрос падает, появляются новые конкуренты. Анализ чувствительности — это ваш супер-навык, который позволяет понять, как такие изменения повлияют на ваше оптимальное решение. Он отвечает на вопрос: «Насколько "чувствительно" мое решение к изменениям в исходных данных?»
💡 Простыми словами: это проверка вашего плана на прочность. Мы смотрим, останется ли он лучшим, если условия немного (или даже сильно) поменяются.
Базовые концепции: с чего начать
В основе лежит симплекс-метод и его финальная таблица. Именно из нее мы будем черпать всю необходимую информацию. Главное, что нас интересует:
- Диапазоны устойчивости для коэффициентов целевой функции (
Cj). В каких пределах можно менять цены или издержки, чтобы текущее решение оставалось оптимальным? - Диапазоны устойчивости для правых частей ограничений (
bi). Насколько можно увеличить или уменьшить доступные ресурсы (бюджет, материалы, время), чтобы "теневая цена" ресурса оставалась неизменной?
🎯 Ключевой вывод: анализ чувствительности позволяет принимать обоснованные решения без решения задачи с нуля каждый раз!
Анализ коэффициентов целевой функции (Cj)
Допустим, мы максимизируем прибыль: Z = 3x1 + 5x2. Цена товара x2 может колебаться. Нас интересует, при какой новой цене производство товара x2 все еще будет выгодным.
Алгоритм для одного коэффициента Ck (для переменной xk):
- Найдите финальную симплекс-таблицу.
- Для каждой небазисной переменной вычислите допустимое изменение
ΔCk, при котором ее оценка (Zj - Cj) остается неотрицательной (для максимизации). - Диапазон для
Ckбудет:Текущее_Ck - ΔCk_down ≤ Ck_new ≤ Текущее_Ck + ΔCk_up
Пример: анализ коэффициентов целевой функции
Условие: Целевая функция: Z = 5x1 + 4x2 → max. В финальной симплекс-таблице оценки для небазисных переменных (Zj - Cj) равны 0 и 1.5 для x1 и x2 соответственно. Найдите диапазон для коэффициента C1 (перед x1).
Решение:
- Пусть новый коэффициент будет
C1_new = 5 + Δ. - Поскольку
x1является базисной переменной, изменениеC1повлияет на оценки всех небазисных переменных. - Оценка для одной из небазисных переменных в таблице записана как
1.5 - 0.5 * Δ ≥ 0. - Решаем неравенство:
1.5 - 0.5Δ ≥ 0→-0.5Δ ≥ -1.5→Δ ≤ 3. - Диапазон для
C1:5 - ∞ ≤ C1_new ≤ 5 + 3→C1_new ≤ 8.
Вывод: цена первого товара может быть не выше 8, чтобы текущий план выпуска оставался оптимальным.
Анализ правых частей ограничений (bi) 📊
Этот анализ показывает, как изменение количества доступного ресурса (например, часов работы или килограммов сырья) влияет на значение целевой функции.
Алгоритм для одного ограничения с правой частью bk:
- Найдите финальную симплекс-таблицу.
- В столбце для переменной «запас» (или в столбце правых частей) найдите значения для базисных переменных.
- Для каждого значения вычислите, при каком изменении
Δbkэто значение остается неотрицательным. - Диапазон для
bkбудет:Текущее_bk - Δbk_down ≤ bk_new ≤ Текущее_bk + Δbk_up
📘 Теневая цена (Shadow Price): Это скорость изменения целевой функции при увеличении правой части ограничения на единицу. В рамках диапазона устойчивости теневая цена постоянна.
Пример: анализ правых частей
Условие: В задаче с ограничением 2x1 + x2 ≤ 100 (трудовые часы), финальная симплекс-таблица показывает, что значения базисных переменных равны 20 и 30. Найдите диапазон для ресурса b1 = 100.
Решение:
- Пусть новый ресурс будет
100 + Δ. - Новые значения базисных переменных:
20 + 0.2Δ ≥ 0и30 - 0.3Δ ≥ 0. - Решаем систему неравенств:
- Из первого:
Δ ≥ -100(так как20 + 0.2Δ ≥ 0→Δ ≥ -100) - Из второго:
Δ ≤ 100(так как30 - 0.3Δ ≥ 0→Δ ≤ 100)
- Из первого:
- Диапазон для
b1:100 - 100 ≤ b1_new ≤ 100 + 100→0 ≤ b1_new ≤ 200.
Вывод: количество трудовых часов можно уменьшить до 0 или увеличить до 200, и при этом «теневая цена» этого ресурса не изменится.