Нелинейное программирование
Нелине́йное программи́рование, раздел математического программирования, посвящённый теории и методам нахождения экстремумов нелинейных функций многих переменных при наличии дополнительных условий на эти переменные. Общая постановка задачи нелинейного программирования состоит в следующем: максимизировать целевую функцию при условиях
где . В соответствии с общей терминологией математического программирования точка , удовлетворяющая всем ограничениям задачи, называется допустимой, или допустимым решением задачи нелинейного программирования. Допустимая точка, в которой принимает наибольшее значение по сравнению с другими допустимыми точками (близкими к данной), называется (локально) оптимальной, или (локально) оптимальным решением. В зависимости от свойств функций в нелинейном программировании выделяются разделы, среди которых – выпуклое программирование и квадратичное программирование ( – квадратичная форма или сумма квадратичной и линейной форм, а – линейные функции).
Основой всех численных методов нелинейного программирования являются условия оптимальности. Необходимые условия оптимальности первого порядка состоят в следующем. Если – локально оптимальная точка, то при выполнении некоторых дополнительных условий существуют такие числа (множители Лагранжа) и , что все частные производные функции Лагранжа
задачи нелинейного программирования обращаются в нуль при , т. е.
причём . Это утверждение обобщает хорошо известное в математическом анализе необходимое условие экстремума для дифференцируемой функции одной переменной: , если – локально оптимальная точка. Необходимые (достаточные) условия оптимальности второго порядка для задачи нелинейного программирования являются обобщениями аналогичных условий того, чтобы функция достигала в точке своего локального максимума: , они формулируются с помощью первых и вторых частных производных функций .
Одним из наиболее распространённых методов нелинейного программирования является метод штрафных функций. С его помощью задача нелинейного программирования с ограничениями сводится к задаче нелинейного программирования без ограничений путём формирования штрафной функции, образующейся из целевой функции вычитанием «штрафов» за нарушение ограничений. Чем выше штрафы, тем ближе задача максимизации штрафной функции к исходной задаче. Для оптимизации штрафной функции используются различные методы безусловной максимизации (изменение знака целевой функции сводит задачу максимизации к задаче минимизации).
Методы нелинейного программирования позволяют, как правило, получить точку, удовлетворяющую с определённой погрешностью тем или иным условиям оптимальности. Они приводят, вообще говоря, к локальному оптимуму (исключением являются задачи нелинейного программирования, в которых каждый локальный оптимум является оптимальной точкой, например задачи выпуклого программирования). Методы нелинейного программирования, которые гарантированно приводят к оптимальной точке в любой задаче нелинейного программирования, требуют просмотра весьма большого числа точек, а поэтому применимы лишь для задач нелинейного программирования с малым числом переменных. Поэтому для реализации даже самых эффективных методов нелинейного программирования необходимо применение высокопроизводительных ЭВМ.
Для решения задач нелинейного программирования создан ряд пакетов программ. Эти пакеты содержат как оптимизационные модули, реализующие различные методы нелинейного программирования, так и сервисные программы, облегчающие пользователю процесс общения с ЭВМ.