В первой статье серии мы выбирали между вариантами при риске и неопределённости. Теперь рассмотрим другую трудность: данные о ресурсах известны, но целей несколько. План может приносить больше прибыли и одновременно хуже выполнять обязательства перед клиентами. Как сравнить такие планы и не спрятать компромисс в одной цифре?
Разберём последовательность на одном учебном примере: сначала зададим допустимые решения, затем увидим конфликт целей, уберём заведомо слабые варианты и выберем метод для окончательного решения. Все числа вымышлены; это иллюстрация методов, а не производственный прогноз.
Начните с решений и жёстких ограничений
Предположим, мастерская за неделю выпускает два вида изделий — X и Y. Обозначим их количества через x и y. Для X нужны 2 часа работы и 1 единица материала; для Y — 1 час и 2 единицы материала. В распоряжении мастерской 40 часов и 50 единиц материала. Прибыль с единицы X равна 30 долларам, с единицы Y — 25 долларам.
Условия модели выглядят так:
- Время: 2x + y ≤ 40.
- Материал: x + 2y ≤ 50.
- Неотрицательность: x ≥ 0 и y ≥ 0.
- Прибыль в долларах: P = 30x + 25y.
Ограничения определяют допустимую область: планы за её пределами нельзя выполнить с имеющимися ресурсами. Прибыль — показатель, по которому мы сравниваем допустимые планы. Для простоты пока допускаем дробные x и y как непрерывную модель объёма работы; если изделия могут выпускаться только целыми штуками, потребуется целочисленная постановка.

Так строится задача линейного программирования: переменные, одна линейная цель и линейные ограничения. Графический метод, допустимый и оптимальный планы, а также смысл дефицитных ресурсов подробнее разобраны в наборе «Линейное программирование в ТПР».
Что даёт максимум одной цели
Если максимизировать только прибыль, оптимальный план в этой модели — x = 10, y = 20. Он использует все 40 часов и 50 единиц материала и приносит 800 долларов: 30 × 10 + 25 × 20 = 800. Проверка вершин допустимой области даёт для планов (0, 0), (20, 0), (10, 20) и (0, 25) прибыль 0, 600, 800 и 625 долларов соответственно. Значит, среди допустимых непрерывных планов максимальная прибыль здесь равна 800 долларам.
Но мастерская может стремиться ещё и к поставке большего числа изделий Y. Тогда оптимум по прибыли — лишь одна из возможных точек компромисса.
Когда желаемые уровни целей конфликтуют
Допустим, мастерская хотела бы зарабатывать не менее 780 долларов и выпускать не менее 22 изделий Y. Эти требования нельзя выполнить одновременно с заданными ресурсами. При y ≥ 22 ограничение на материал оставляет x ≤ 6, а максимальная прибыль при таком количестве Y — 30 × 6 + 25 × 22 = 730 долларов. При дальнейшем увеличении y доступное x сокращается, и прибыль падает.
Важно разделить два вида условий:
- Жёсткие ограничения — 40 часов и 50 единиц материала. Их нарушать нельзя.
- Желаемые уровни — прибыль 780 долларов и 22 изделия Y. Если они несовместимы, можно измерять и сравнивать отклонения от них.
Это идея целевого программирования. Для каждого желаемого уровня вводят переменные недовыполнения и перевыполнения; в критерий включают именно те отклонения, которые нежелательны. Например, для цели «не меньше 22 изделий Y» штрафуют недовыполнение, а выпуск сверх 22 не обязательно считать проблемой. Подробности о весах и иерархии целей есть в наборе «Целевое программирование в принятии решений».
Сравним два допустимых плана. План A (x = 10, y = 20) даёт 800 долларов и недовыполняет цель по Y на 2 изделия. План B (x = 6, y = 22) даёт 730 долларов и недовыполняет цель по прибыли на 50 долларов. Нельзя просто сложить «2 изделия» и «50 долларов»: единицы измерения различаются. Один из способов — разделить отклонения на соответствующие целевые уровни. Посмотрим, какое правило сравнения из этого получится.
Как целевая модель учитывает отклонения
Обозначим недополученную прибыль через dP = max(780 − P, 0), а недовыполнение выпуска — через dY = max(22 − y, 0). Если план превосходит желаемый уровень, соответствующее недовыполнение равно нулю. В этом учебном примере перевыполнение не штрафуется: мы стремимся достичь хотя бы заданных уровней, а не попасть в них точно.
Чтобы сопоставить доллары и изделия, минимизируем сумму S = dP / 780 + dY / 22. Здесь оба относительных недовыполнения имеют одинаковый вес. У A прибыль выше цели, поэтому dP = 0, а S = 2 / 22 ≈ 0,091. У B выпуск соответствует цели, поэтому dY = 0, а S = 50 / 780 ≈ 0,064. Среди A и B это правило выбирает B. Оно ещё не доказывает, что B лучше каждого другого допустимого плана: для этого нужно проверить всю допустимую область.
Весовой подход разрешает небольшой недобор по одной цели компенсировать улучшением по другой. При строгом приоритете прибыли логика иная: сначала ищем планы с нулевым недовыполнением 780 долларов, и лишь среди них улучшаем выпуск Y. Тогда B с прибылью 730 долларов отсекается независимо от его преимущества по выпуску. Как именно выбрать план среди оставшихся, покажем ниже на методе уступок. Значения целей, нормировку и приоритеты нужно фиксировать до знакомства с итоговым победителем.
Уберите доминируемые планы с помощью Парето
Прежде чем назначать веса, полезно проверить, какие варианты заведомо хуже. Пусть есть и план C (x = 8, y = 18): он допустим, приносит 690 долларов и даёт 18 изделий Y. План A приносит 800 долларов и даёт 20 изделий Y. Значит, A лучше C по обоим показателям, и C доминируем: при этих двух критериях нет причины сохранять его для дальнейшего выбора.
С A и B иначе. A прибыльнее, B обеспечивает больший выпуск Y. Ни один из них не доминирует другой. Такие решения называют недоминируемыми, а совокупность всех недоминируемых допустимых решений — множеством Парето. Наши A и B — примеры его точек. Множество Парето сокращает число вариантов, но само по себе не выбирает единственный «лучший» компромисс.

Вся граница компромиссных планов
На рисунке линия продолжается за точкой B. В нашей непрерывной модели можно описать всю эффективную границу, а не только два выбранных плана. При выпуске Y от 20 до 25 изделий ограничивающим ресурсом становится материал: x + 2y = 50, значит, x = 50 − 2y. Эти планы укладываются и в 40 часов: 2x + y = 100 − 3y ≤ 40 при y ≥ 20.
Подставим x в формулу прибыли: P = 30(50 − 2y) + 25y = 1500 − 35y. При y = 20 получаем A с прибылью 800 долларов; при y = 22 — B с 730 долларами; при y = 25 — план (x = 0, y = 25) с 625 долларами. Между ними есть другие допустимые эффективные планы. На этом участке дополнительное изделие Y требует отказаться от двух изделий X и уменьшает прибыль на 35 долларов: минус 60 долларов от X и плюс 25 долларов от Y.
Почему это именно граница Парето? При том же y план с меньшим x приносит меньшую прибыль и доминируется планом на границе. При y < 20 прибыль не может превысить 800 долларов, поэтому такие планы доминируются A. Выпуск более 25 изделий Y невозможен при запасе материала 50. Если изделия выпускаются только целыми штуками, непрерывный отрезок превращается в отдельные допустимые точки, которые нужно проверить в целочисленной модели.
Как строят границу, проверяют доминирование и связывают её с линейными ограничениями, показывает набор «Многокритериальные решения и множество Парето».
Как выбрать один план из эффективных
После отсева доминируемых вариантов нужен явный ответ на вопрос: какую уступку мы готовы сделать по одному критерию ради улучшения другого? Разные методы фиксируют этот ответ по-разному:
- Взвешенная сумма. Сначала приведите критерии к сопоставимым шкалам, затем задайте веса и вычислите общий балл. При иных весах победитель может поменяться; исходные доллары и штуки напрямую складывать нельзя.
- Метод уступок. Сначала оптимизируйте главный показатель, затем задайте допустимое ухудшение и внутри оставшихся вариантов улучшайте следующий. Например, если прибыль должна быть не ниже 780 долларов, B с 730 долларами исключается, а A остаётся.
- Идеальная точка. Сравнивайте планы с лучшими значениями каждого показателя по отдельности. Такая комбинация может быть недостижимой; при измерении расстояния до неё также важны шкалы и веса.
- Лексикографический порядок. Сначала сравнивайте самый важный критерий, и только при равенстве — следующий. Если первым безусловным приоритетом является число изделий Y, предпочтение может перейти к плану с большим y даже при меньшей прибыли.
Эти подходы, их ограничения и способы нормализации собраны в наборе «Методы многокритериального выбора». Правило «прибыль не ниже 780 долларов» исключает B, а правило «не менее 22 изделий Y» исключает A. Но выбор только между A и B ещё не заменяет поиск по всем допустимым планам.
Метод уступок: доведём выбор до результата
Максимальная прибыль мастерской — 800 долларов в плане A. Допустим, ради увеличения выпуска Y мы согласны уступить не более 20 долларов прибыли. Тогда прибыль должна оставаться не ниже 780 долларов, а среди подходящих планов нужно максимизировать y.
На эффективной границе P = 1500 − 35y. Условие 1500 − 35y ≥ 780 даёт y ≤ 720 / 35 ≈ 20,57. При наибольшем допустимом выпуске получаем y ≈ 20,57, x = 50 − 2y ≈ 8,86 и прибыль ровно 780 долларов. Материал израсходован полностью, а времени нужно около 38,29 часа, что укладывается в лимит 40 часов.
Если смотреть только на A и B, правило оставляет A. Но поиск по всей области в непрерывной модели находит промежуточный компромисс: примерно на 0,57 изделия Y больше, чем у A, при уступке 20 долларов прибыли. Для целых изделий такой дробный план недопустим: максимальный выпуск при условии прибыли не ниже 780 долларов составляет 20 изделий Y, и в целочисленной модели подходит A. Поэтому допущение о дробных объёмах влияет не только на запись формул, но и на итоговый план.

Практический порядок выбора
- Определите переменные и проверьте, какие решения реально выполнимы.
- Разделите ресурсы и запреты, которые нельзя нарушить, и желаемые показатели, по которым допустимы уступки.
- Выберите критерии, уточните направление улучшения каждого и приведите несопоставимые шкалы к понятной основе.
- Уберите доминируемые варианты; для оставшихся покажите, что именно выигрываем и теряем.
- Зафиксируйте метод, веса, приоритеты или пороги уступки до окончательного выбора.
- Проверьте, как ответ меняется при небольшом изменении весов, порогов и доступных ресурсов.
- После выполнения плана сравните фактические результаты с моделью и обновите оценки.
Главное
Линейное программирование показывает лучший допустимый план по одной выбранной цели. Целевое программирование помогает согласовать несовместимые желаемые уровни, не нарушая жёстких ограничений. Множество Парето убирает заведомо слабые решения, а метод многокритериального выбора объясняет, почему из оставшихся выбран конкретный компромисс. Хорошее решение можно не только посчитать, но и объяснить: какие предположения, ограничения и предпочтения привели к нему. После выбора полезно проверить, сохранится ли результат при изменении весов и исходных данных; этому посвящена следующая статья — «Как проверить устойчивость решения».
Часто задаваемые вопросы
Ограничение задаёт условие допустимости: план, нарушающий лимит ресурса, исключается. Цель описывает желаемый результат, а при конфликте нескольких целей можно измерять и сравнивать отклонения от них.
Обычно нет. Оно оставляет варианты, которые нельзя улучшить по одному критерию без ухудшения другого. Для окончательного выбора нужны предпочтения, веса, пороги уступки или порядок приоритетов.
Доллары и количество изделий измеряются в разных единицах. Чтобы объединить показатели, нужно явно выбрать способ нормализации и веса; затем проверить, насколько выбор зависит от этих допущений.
