Целевое программирование


Целевое программирование — это ветвь многокритериальной оптимизации , которая, в свою очередь, является ветвью многокритериального анализа решений (MCDA). Его можно рассматривать как расширение или обобщение линейного программирования для обработки нескольких, обычно противоречивых объективных показателей. Каждой из этих мер присваивается цель или целевое значение, которое должно быть достигнуто. Отклонения измеряются от этих целей как выше, так и ниже цели. Нежелательные отклонения от этого набора целевых значений затем сводятся к минимуму в функции достижения. Это может быть вектор или взвешенная сумма в зависимости от используемого варианта программирования цели. Поскольку считается, что достижение цели удовлетворяет лиц, принимающих решения,предполагается удовлетворительная философия. Целевое программирование используется для выполнения трех типов анализа:

Целевое программирование было впервые использовано Чарнсом, Купером и Фергюсоном в 1955 году, [1] хотя фактическое название впервые появилось в тексте 1961 года Чарнса и Купера. [2] Основополагающие работы Ли, [3] Игницио, [4] Игницио и Кавалье, [5] и Ромеро [6] . Schniederjans приводит библиографию большого количества статей до 1995 г., касающихся целевого программирования, [7] , а Jones и Tamiz дают аннотированную библиографию за период 1990-2000 гг. [8] Недавний учебник Джонса и Тамиза. [9] дает исчерпывающий обзор современного состояния целевого программирования.

Первым инженерным применением целевого программирования, благодаря Игницио в 1962 году, был дизайн и размещение антенн, используемых на второй ступени Сатурн-5 . Он был использован для запуска космического корабля «Аполлон», который высадил первых людей на Луну.

Первоначальные программные формулировки цели упорядочивали нежелательные отклонения по ряду уровней приоритета, при этом минимизация отклонения на более высоком уровне приоритета была бесконечно более важной, чем любые отклонения на более низких уровнях приоритета. Это известно как лексикографическое или упреждающее программирование целей. Игницио [4] приводит алгоритм, показывающий, как лексикографическая целевая программа может быть решена в виде серии линейных программ. Лексикографическое программирование целей используется, когда существует четкий порядок приоритетов среди целей, которые должны быть достигнуты.

Если лицо, принимающее решение, больше заинтересовано в прямом сравнении целей , следует использовать взвешенное или неупреждающее программирование целей. В этом случае все нежелательные отклонения умножаются на веса, отражающие их относительную важность, и складываются в виде единой суммы, чтобы сформировать функцию достижения. Отклонения, измеренные в разных единицах, нельзя суммировать непосредственно из-за явления несоизмеримости .

Следовательно, каждое нежелательное отклонение умножается на константу нормализации, чтобы обеспечить прямое сравнение. Популярным выбором для констант нормализации является целевое целевое значение соответствующей цели (следовательно, превращая все отклонения в проценты) или диапазон соответствующей цели (между лучшими и наихудшими возможными значениями, следовательно, отображающий все отклонения в диапазоне ноль-единица) . [6] Для лиц, принимающих решения, более заинтересованных в достижении баланса между конкурирующими целями, используется целевое программирование Чебышева . Введенный Flavell в 1976 году [10] , этот вариант направлен на минимизацию максимального нежелательного отклонения, а не суммы отклонений. При этом используется метрика расстояния Чебышева .