Как сравнивать решения по нескольким критериям
В первой статье серии мы выбирали между вариантами при риске и неопределённости. Теперь рассмотрим другую трудность: данные о ресурсах известны, но целей несколько. План может приносить больше прибыли и одновременно хуже выполнять обязательства перед клиентами. Как сравнить такие планы и не спрятать компромисс в одной цифре?
Разберём последовательность на одном учебном примере: сначала зададим допустимые решения, затем увидим конфликт целей, уберём заведомо слабые варианты и выберем метод для окончательного решения. Все числа вымышлены; это иллюстрация методов, а не производственный прогноз.
Начните с решений и жёстких ограничений
Предположим, мастерская за неделю выпускает два вида изделий — 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 долларов»: единицы измерения различаются. Один из способов — разделить отклонения на соответствующие целевые уровни: для A это 2 / 22 ≈ 0,091, для B — 50 / 780 ≈ 0,064. При равных весах таких относительных недовыполнений среди этих двух планов предпочтительнее B. Нормировка и веса выражают выбранные предпочтения, поэтому их нужно назвать и проверить на чувствительность.
Уберите доминируемые планы с помощью Парето
Прежде чем назначать веса, полезно проверить, какие варианты заведомо хуже. Пусть есть и план C (x = 8, y = 18): он допустим, приносит 690 долларов и даёт 18 изделий Y. План A приносит 800 долларов и даёт 20 изделий Y. Значит, A лучше C по обоим показателям, и C доминируем: при этих двух критериях нет причины сохранять его для дальнейшего выбора.
С A и B иначе. A прибыльнее, B обеспечивает больший выпуск Y. Ни один из них не доминирует другой. Такие решения называют недоминируемыми, а совокупность всех недоминируемых допустимых решений — множеством Парето. Наши A и B — примеры его точек; между ними и за пределами этого отрезка могут быть другие эффективные планы. Множество Парето сокращает число вариантов, но само по себе не выбирает единственный «лучший» компромисс.

Как строят границу, проверяют доминирование и связывают её с линейными ограничениями, показывает набор «Многокритериальные решения и множество Парето».
Как выбрать один план из эффективных
После отсева доминируемых вариантов нужен явный ответ на вопрос: какую уступку мы готовы сделать по одному критерию ради улучшения другого? Разные методы фиксируют этот ответ по-разному:
- Взвешенная сумма. Сначала приведите критерии к сопоставимым шкалам, затем задайте веса и вычислите общий балл. При иных весах победитель может поменяться; исходные доллары и штуки напрямую складывать нельзя.
- Метод уступок. Сначала оптимизируйте главный показатель, затем задайте допустимое ухудшение и внутри оставшихся вариантов улучшайте следующий. Например, если прибыль должна быть не ниже 780 долларов, B с 730 долларами исключается, а A остаётся.
- Идеальная точка. Сравнивайте планы с лучшими значениями каждого показателя по отдельности. Такая комбинация может быть недостижимой; при измерении расстояния до неё также важны шкалы и веса.
- Лексикографический порядок. Сначала сравнивайте самый важный критерий, и только при равенстве — следующий. Если первым безусловным приоритетом является число изделий Y, предпочтение может перейти к плану с большим y даже при меньшей прибыли.
Эти подходы, их ограничения и способы нормализации собраны в наборе «Методы многокритериального выбора». В нашем примере правило «прибыль не ниже 780 долларов» оставляет A из пары A и B; правило «не менее 22 изделий Y» оставляет B. Решение меняется потому, что меняется выраженное предпочтение, а не арифметика.

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