Математическое программирование
Математи́ческое программи́рование, раздел математики, посвящённый теории и методам решения задач о нахождении экстремумов функций на множествах, определяемых линейными и нелинейными ограничениями. Эти ограничения могут задаваться равенствами и неравенствами. Математическое программирование охватывает широкий класс задач управления, математическими моделями которых являются конечномерные экстремальные задачи. Задачи математического программирования находят применение в различных областях человеческой деятельности, где необходим выбор одного из возможных образов действий, например при решении проблем управления и планирования производственных процессов, в задачах проектирования и перспективного планирования. Название «математическое программирование» связано с тем, что целью решения задач является выбор программы действий.
Задача математического программирования состоит в том, чтобы минимизировать скалярную функцию векторного аргумента , принимающего значения из множества где – скалярные функции; функцию называют целевой функцией, или функцией цели, множество – множеством допустимых решений, решение задачи математического программирования – оптимальной точкой.
В математическое программирование входят линейное программирование, где целевая функция и функции и линейны; выпуклое программирование, где целевая функция и множество допустимых решений выпуклы; квадратичное программирование, где целевая функция квадратична и множество допустимых решений определяется линейными равенствами и неравенствами; дискретное программирование, где решение ищется лишь в дискретных, например целочисленных, точках множества ; стохастическое программирование, где, в отличие от детерминированных задач, входная информация носит элементы неопределённости.
Задачи перечисленных разделов математического программирования обладают следующим свойством: всякая точка локального минимума является оптимальной точкой. По-иному обстоит дело в т. н. многоэкстремальных задачах, в которых указанное свойство не имеет места.
В основе выпуклого программирования, и в частности линейного и квадратичного, лежит теорема Куна – Таккера о необходимых и достаточных условиях существования оптимальной точки: для того чтобы точка была оптимальной, т. е.
необходимо и достаточно, чтобы существовала такая точка , чтобы пара точек , была седловой точкой функции Лагранжа
Последнее означает, что для любых и всех . Если ограничения нелинейны, то эта теорема справедлива при некоторых дополнительных предположениях о множестве допустимых решений. Если функции и дифференцируемы, то седловую точку определяют соотношения
Таким образом, задача выпуклого программирования сводится к решению системы уравнений и неравенств.
На основе теоремы Куна – Таккера разработаны различные итерационные методы минимизации, сводящиеся к поиску седловой точки функции Лагранжа.
В математическом программировании важную роль играют вычислительные методы решения экстремальных задач. Широким классом таких методов являются методы проектирования. Идея этих методов состоит в следующем. В точке выбирается направление спуска , т. е. одно из направлений, по которому функция убывает, и вычисляется , где означает проекцию точки на множество :
число выбирается при этом так, чтобы . Существуют различные варианты методов проектирования. Наиболее распространённым из них является метод проекции градиента, когда .
Характерной особенностью вычислительных методов решения задач математического программирования является использование ЭВМ, в первую очередь потому, что задачи математического программирования, связанные с ситуациями управления реальными системами, – задачи большого объёма.
Важное направление исследований в математическом программировании – проблемы устойчивости. Здесь существенное значение имеет изучение класса устойчивых задач, т. е. задач, для которых малые возмущения (погрешности) в исходной информации влекут за собой малые возмущения и в решении. В случае неустойчивых задач большая роль отводится процедуре аппроксимации неустойчивой задачи последовательностью устойчивых задач – т. н. процессу регуляризации.
Математическое программирование как наука сформировалось в 1950–1970-х гг. Это обусловлено главным образом развитием ЭВМ, что дало возможность проводить математическую обработку больших объёмов информации.