
- •7. Нелинейное программирование
- •7.1. Постановка задачи нелинейного программирования и ее геометрическая интерпретация
- •Упражнения
- •7.2. Множители Лагранжа Рассмотрим задачу условной минимизации вида
- •Алгоритм решения задачи
- •7.3. Задачи выпуклого программирования
- •Упражнения
- •7.5. Задача квадратичного программирования
- •Алгоритм решения.
7. Нелинейное программирование
Задачи нелинейного программирования по сравнению с задачами линейного программирования обладают большим многообразием. На рис. 7.1 представлены возможные варианты расположения точки экстремума для случая двух переменных. Так, в случае линейных ограничений и нелинейной функции цели экстремума могут достигнуть в крайней точке (вершине) допустимой области значений (рис. 7.1, а), в одной из точек, лежащих на ограничивающих прямых (рис. 7.1, б), и, наконец, в точке, расположенной внутри области (рис. 7.1, в). Пунктирные концентрические окружности изображают линии постоянных значений функции цели, сплошные линии − границу области допустимых значений. В случае на рис. 7.1, б экстремум определяется как точка касания прямой, ограничивающей допустимую область значений, и линии равных значений функции цели.
а
|
б |
в |
Рис. 7.1. Различные случаи оптимума в задачах нелинейного программирования
Решение задач нелинейного программирования может давать два или более экстремума, тогда как решение линейного программирования дает один экстремум. На рис. 7.2 показан случай, соответствующий линейным ограничениям и нелинейной (квадратичной) функции цели, где она достигает максимального значения в двух точках А (локальный максимум) и В (глобальный максимум). На этом рисунке пунктиром обозначены постоянные значения функции цели f = const = αi, сплошной линией ограничена область допустимых значений. При нелинейных ограничениях может иметь место случай многосвязной области допустимых значений, и в каждой изолированной подобласти функция цели может достигать своего одного или нескольких локальных экстремумов. На рис. 7.3 представлен случай двусвязной области, в которой функция цели достигает локальных экстремумов. Максимум в точке В – глобальный для всей области допустимых значений, в точке А – локальный.
Рис. 7.2. Случай двух экстремумов при односвязной области допустимых значений
Рис. 7.3. Случай двух экстремумов при двусвязной области допустимых значений
Этими причинами объясняется отсутствие общих методов, подобных симплекс − методу в линейном программировании, позволяющие решать любые задачи линейного программирования. Вместе с тем отдельные специальные типы нелинейных задач достаточно хорошо изучены. Это относится и к задачам с выпуклыми (вогнутыми) целевыми функциями, рассматриваемыми на выпуклых множествах.
7.1. Постановка задачи нелинейного программирования и ее геометрическая интерпретация
Задача нелинейного программирования формулируется следующим образом:
определить минимальное значение функции
f(x) → min (7.1)
при условии, что её переменные удовлетворяют соотношениям
gi(x) = bi, i = 1:l, (7.2)
gi(x) bi, i = (l+1):m, (7.3)
где
f(x),
gi(x),
i
= 1:m
− некоторые известные функции
(необязательно линейные) n
переменных, а bi
− заданные числа. Считаем, что все
функции fi(x),
gi(x),
i
= 1:m
определены на некотором открытом
множестве X
En.
Для упрощения ограничимся случаем Х
= Еn.
Условие неотрицательности переменных xj 0, j = 1:n, входящее в постановки многих задач нелинейного программирования, можно записать в виде неравенств (7.3), положив gj(x) = -xj , bj = 0.
В евклидовом пространстве En система ограничений (7.2) … (7.3) определяет область допустимых решений задачи. В отличие от задачи линейного программирования она не всегда является выпуклой.
Cформулированная задача (7.1) … (7.3) представляет собой частный случай общей задачи математического программирования, заключающийся в определении наименьшего значения целевой функции f(x) на допустимом множестве
Х
= {х
Х
| gi(х)
= bi,
i
= 1:l,
gi(х)
≤ bi,
i
= (l+1):m}.
Отметим, что если все функции gi(х) непрерывны в Еn, то множество Х замкнуто.
Большинство известных методов решения задачи нелинейного программирования позволяют найти лишь точки локального минимума целевой функции на заданном множестве. В этой связи важную роль играет априорная информация о существовании решения задачи, т.е. информация о том, достигает ли целевая функция наименьшего значения на допустимом множестве. В частности, если множество Х ограничено, а целевая функция непрерывна на Х, то задача нелинейного программирования имеет решение.
Однако проверить ограниченность множества Х не просто. Поэтому интересны другие условия, налагаемые на целевую функцию и ограничения и позволяющие делать заключение о существовании решения без использования ограниченности допустимого множества. В задаче выпуклого программирования, в которой целевая функция выпукла и допустимое множество Х выпукло, любая точка локального минимума целевой функции, согласно утверждения 3.1, является решением этой задачи.
Если определена область допустимых решений, то нахождение решения задачи (7.1) … (7.3) сводится к определению такой точки этой области, через которую проходит гиперплоскость наинизшего уровня: f(x) = α , где α − произвольное число.
Процесс нахождения решения задач нелинейного программирования (7.1)…(7.3) с использованием её геометрической интерпретации включает следующие этапы:
Находят область допустимых решений задачи, определяемую соотношениями (7.2) … (7.3).
Строят гиперплоскость f(x) = α.
Определяют гиперплоскость наинизшего уровня или устанавливают неразрешимость задачи из-за неограниченности функции (7.1) снизу на множестве допустимых решений.
Находят точку области допустимых решений, через которую проходит гиперплоскость наинизшего уровня, и определяют в ней значение функции (7.1).
Пример 7.1. Найти максимальное значение функции
f(х) = x2 − x12 + 6x1 (7.4)
при условиях
(7.5)
x1, x2 0. (7.6)
Решение. Так как целевая функция (7.4) нелинейная, то задача (7.4) … (7.6) является задачей нелинейного программирования. Областью допустимых решений данной задачи является многоугольник 0АВС (рис. 7.4). Следовательно, для нахождения её решения нужно определить такую точку многоугольника 0АВС, в которой функция (7.4) принимает максимальное значение. Построим линию уровня f(х) = x2 − x12 + 6x1 = α , где α – некоторая постоянная, и исследуем её поведение при различных значениях α.. При каждом значении α получаем параболу, которая чем дальше отдалена от оси 0x1, тем больше значение α.. Значит, функция f принимает максимальное значение в точке касания одной из парабол с границей многоугольника 0АВС. В данном случае это точка D (рис. 7.4), в которой линия уравнения f = x2 − x12 + 6x1 = 13 касается стороны АВ многоугольника 0АВС.
Координаты
точки D
можно найти из системы уравнений
Решая эту систему, получим x1* = 3; x2* = 4. Итак, fmax = 13 при x* (3;4).
Рис. 7.4. Область допустимых решений
Для нахождения гиперплоскости наинизшего уровня можно руководствоваться следующими соотношениями: точка x* = (x1 min, x2 min) принадлежит прямой x2 = 0 и параболе fmin = x2 − x12 +6x1 , а потому обоим этим уравнениям, т. е. может быть определена как решение системы
(7.7)
Однако, так как нам не известно f* − оптимальное значение целевой функции f(x1, x2), то в этой системе оказывается три переменных и всего два уравнения, поэтому систему необходимо дополнить ещё одним уравнением, связывающим переменные x1, x2, fmin.
Нужное уравнение можно получить, если учесть, что угловой коэффициент касательной к параболе, по которой целевая функция достигает своего минимального значения, равен 1: касательной в этой точке является прямая x2 = 0. Как мы знаем, угловой коэффициент касательной к кривой x2 = f(x1) в точке x1 равен ∂x2 / ∂x1. Поэтому в нашем случае имеем
∂x2 / ∂x1 = 0. (7.8)
Вычислим теперь производную целевой функции fmin. Для этого продифференцируем левую и правую часть этого соотношения по x1. Получим:
0 = 0 − 2x1 + 6. (7.9)
Первое слагаемое дифференцируем, как сложную функцию от x2:
∂[x2]/∂x1 = ∂[x2]/∂x2·∂x2/∂x1 = 0.
Откуда из (7.9) следует 0 = 2x1 +6. Если учесть (7.8), то окончательно получим:
2x1 − 6 = 0, x1 = 3.
Дополняя этим последним соотношением систему (7.7), окончательно получим:
Откуда −9 + 18 = f*, f* = 9.
Для нахождения максимального значения функции поступаем аналогичным образом. Получаем систему:
Решая её, получим fmax = 13.
Рассмотрим задачу нелинейного программирования, в которой все ограничения заданы линейными функциями, на переменные x1,…, xn наложены условия неотрицательности, а целевая функция нелинейная.
Пример 7.2. Найти оптимальный план x*(x1*, x2*), такой, чтобы выполнились ограничения
(7.10)
x1 0, x2 0 (7.11)
и целевая функция
f(х) = 10(x1 − 3,5)2 + 20(x2 − 4)2 (7.12)
достигала на нём своего минимума.
Решение. Рассматриваемая задача относится к классу задач так называемого квадратичного программирования.
Геометрически
построим допустимый многогранник Х.
На рис.7.5, кроме области допустимых
значений переменных x1,
x2,
линии
уровня функции f(x1,
x2),
представляющие собой концентрические
эллипсы с центром в точке (3,5; 4).
Поскольку мы ищем точку х* = (х1* , х2*) доставляющую минимум целевой функции f(x1, x2), то таковой будет точка касания одного из эллипсов с границей многогранника Х. Из рис.7.5 видно, что это будет точка касания эллипса, которая является линией уровня f(x1, x2) = 15, т. е. эллипса
10(x1 − 3,5)2 + 20(x2 − 4)2 = 15
и прямой
x1 + x2 = 6 (7.13)
Рис. 7.5. Область допустимых решений
Для аналитического определения координат оптимальной точки x* = (x1*, x2*) можно руководствоваться следующими соображениями: точка x* = (x1*, x2*) принадлежит прямой (7.13) и эллипсу
f* = 10(x1 − 3,5)2 + 20(x2 − 4)2, (7.14)
а потому обоим этим уравнениям, т.е. может быть определена как решение системы:
x1 + x2 = 6
f* = 10(x1 − 3,5)2 + 20(x2 − 4)2 (7.15)
Однако, так как нам не известна f* − оптимальное значение функции f(x1, x2), то в этой системе оказывается три переменные и всего два уравнения, поэтому систему необходимо дополнить ещё одним уравнением, связывающим переменные x1, x2, f*.
Нужное уравнение можно получить, если учесть, что угловой коэффициент касательной к эллипсу, на котором целевая функция достигает своего максимального значения, равен 1: касательной в этой точке является прямая x2 = − x1 + 6. Угловой коэффициент касательной к кривой x2 = f(x1) в точке x1 равен:
∂x2 / ∂x1 = − 1. (7.16)
Вычислим теперь производную неявной функции (7.14). Для этого продифференцируем левую и правую части этого соотношения по x1. В результате получим:
0 = 20(x1 – 3,5)2 + 40(x2 − 4)2 ·∂x2 / ∂x1.
Второе слагаемое дифференцировалось как сложное функция от x1:
∂[20(x2 − 4)2]/∂x1 = ∂[20(x2 − 4)2]/∂x2·∂x2 /∂x1 = 40(x2 − 4)∂x2 /∂x1.
Откуда ∂x2/∂x1 = −20(x1 − 3,5)/40(x2 − 4), если учесть (7.16), то окончательно получим:
(x1 − 3,5)/2(x2 − 4) = 1 или x1 − 3,5 = 2(x2 − 4).
Дополняя этим последним соотношением систему (7.15), окончательно получим:
откуда x1* = 2,5, x2* = 3,5 и f* = 15, т.е. x* = (2,5; 3,5).
Очевидно, что в данном случае оптимальная точка вовсе не будет крайней точкой − вершиной множества Х. Поэтому процедура направленного перебора вершин, как это было в линейном программировании, в этом случае неприменима. Более того, в подобных задачах оптимальная точка может вообще не принадлежать границе Х.
Для решения задач нелинейного программирования можно воспользоваться методом, как и в линейном программировании. Для этого возьмем произвольную допустимую точку и будем передвигаться по точкам многогранника Х с "худших" линий уровня на "лучшие" (т.е. в направлении градиента) в задаче максимизации и в противоположном направлении задачах минимизации до тех пор, пока такое движение оказывается возможным, т.е. не выходят за пределы допустимого многогранника. В этом случае передвижение пришлось бы осуществлять небольшими шажками, потому что градиент нелинейной функции меняется от точки к точке. Та точка, из которой никуда передвинуться не удается, не ухудшив значения функции, и являлась бы точкой локального экстремума. В нашем примере она оказалась и точкой глобального экстремума, и, следовательно, и оптимальной.
Методы, в которых используется этот механизм, называются градиентными методами.
Однако не всегда целевая функция имеет на многограннике единственную экстремальную точку. В тех случаях, когда это не так, возникает новая проблема – проблема выбора точки (точек) глобального экстремума среди точек локального экстремума. Задачи, в которых локальный и глобальный экстремумы не совпадают, называются многоэкстремальными. Для их решения градиентные методы неприменимы.