Методы оптимизации, технические приложения
.pdf
101
Одним из преимуществ градиентных методов является то, что итерационный процесс может быть начат с любого допустимого решения, т.е. нет необходимости в какой-либо специальной форме начального допустимого решения (например, базисной).
Среди градиентных методов выделяются: метод градиентного спуска (подъема) и метод наискорейшего спуска (подъема). В основе отличия указанных методов лежит различный способ выбора величины шага . Рассмотрим простейшие градиентные методы.
I. Метод градиентного спуска (подъема). Применяется для ре-
шения экстремальных задач. В этом методе итерации строятся по формуле
xkj 1 xkj f (xk ) .
Знак минус относится к задаче на минимум, знак плюс – к задаче
на максимум. |
|
|
|
|
|
|
|
|
Направление спуска из точки xk |
определяется по формуле |
|||||||
f (xk ) |
f xk |
. |
|
|
|
|
||
x |
|
|
|
|
|
|||
|
|
|
f xk |
|
|
|||
Для подъема |
f (xk ) |
. Очередное |
приближение |
|||||
x |
|
|||||||
xk 1 xk f xk . |
|
|
|
|
|
|||
После определения очередного приближения |
||||||||
xk+1 проверяется неравенство (для задачи на min): |
f xk 1 f xk . |
|||||||
Если это условие выполняется, итерация закончена. Увеличиваем
102
шаг на единицу и процесс вычисления повторяем снова. Если же f xk 1 f xk , то величина k уменьшается (обычно делится по-
полам) и производится вычисление очередного приближения. Для задачи на максимум проверяется, соответственно, условие f xk 1 f xk .
Первоначальное значение k задается произвольно.
Пример 3.6. Решить методом градиентного спуска следующую задачу нелинейного программирования:
f x1, x2 2x12 2x22 2x1 2x2 min .
Решение начать от точки x0 2, 8 .
Р е ш е н и е . 1. Вычисляем значение функции в заданной точке
х0:
f (x0 ) 2 22 2 82 2 2 2 8 116.
2. Находим координаты вектора градиента:
f |
4x 2 |
|
0 6 , |
f |
4x |
2 |
|
0 30 . |
|
|
|||||||
|
|
|
||||||
x1 |
1 |
|
x1 |
x2 |
2 |
|
|
x2 |
|
|
|
|
|
||||
|
|
|
|
|
|
|
Следовательно, f (x0 ) 6;30 .
3. Определяем координаты точки х1, куда мы придем, двигаясь в
антиградиентом направлении. В качестве шага примем |
1 |
. |
|||||||||||||||||||
4 |
|||||||||||||||||||||
|
|
f x0 2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
x1 |
x0 |
1 |
|
6 |
1 |
; |
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
1 |
1 |
|
|
|
4 |
2 |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
f x |
|
8 |
|
|
|
|
|
|
|
|
|
|
|
||||||
1 |
0 |
0 |
1 |
|
|
|
1 |
|
|
1 |
|
1 |
|
1 |
|
|
|
||||
x2 |
x2 |
|
|
|
30 |
|
|
, |
x |
|
|
|
, |
|
. |
|
|
||||
|
4 |
|
2 |
|
2 |
2 |
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
4. Значения координат вектора градиента, выходящего из точки
x1:
f |
|
1 4 |
1 |
2 0 ; |
|||||||
4x 2 |
|
||||||||||
|
|
|
|
||||||||
x1 |
1 |
|
|
x1 |
2 |
|
|
||||
|
|
|
|
|
|
||||||
f |
4x |
2 |
|
4 |
1 |
2 0 . |
|||||
1 |
|||||||||||
|
|
|
|||||||||
x2 |
2 |
|
|
x2 |
2 |
|
|||||
Находим, что f x1 0, 0 .
Так как координаты вектора градиента, выходящего из точки x1
равны нулю, дальнейшие вычисления прекращаем. Точка x1 является точкой минимума для рассматриваемой функции. Минималь-
103
ное значение функции в этой точке равно f |
min |
f x1, x1 |
1 . |
|
1 2 |
|
В решении таких задач сложным является выбор длины шага. Если длина шага большая, то есть опасность зацикливания. При малом шаге сходимость может оказаться очень медленной.
Трудности, связанные с выбором длины шага, преодолеваются в методе наискорейшего спуска (подъема) Коши.
II. Метод наискорейшего спуска (подъема). После выбора начальной точки x0 находится grad f x0 . В направлении градиента
(антиградиента) делается шаг. Если значение целевой функции в результате шага увеличилось (уменьшилось) для задачи на максимум (минимум), то делается еще один шаг и т.д. Движение вдоль этого направления идет до тех пор, пока функция не перестанет возрастать (убывать). Находим точку, в которой в заданном направлении функция достигает максимума (минимума). Пусть это точка
x1. Для нее вычисляем новое градиентное направление f x1 .
Вдоль него перемещаемся до тех пор, пока целевая функция не перестанет возрастать (убывать) и т.д. (рис. 3.7).
Вобщем виде
xk 1 xk k f (xk ) .
Величина шага k выбирается из условия
f xk k f (xk ) max (min)f xk k f (xk ) .
k 0
Направление вектора градиента f в точке xk является касатель-
104
ным к линии уровня поверхности f (x) в точке xk 1 . Градиент в точке xk 1 ортогонален градиенту f xk . Перемещение из точки xk в точку xk 1 сопровождается изменением функции f (x) на вели-
чину |
|
xk 1 f xk |
|
|
|
|
|
|
|
||||
f f |
|
|
|
|
|
|
|
||||||
|
|
|
|
f x |
k |
|
|
f x |
k |
|
|
|
|
|
f xk |
k |
|
... |
k |
|
|
f xk ,...xk . |
|||||
|
|
|
|
|
|
||||||||
|
1 |
|
x1 |
|
|
xn |
|
|
|
1 |
n |
||
|
|
|
|
|
|
|
|
|
|
|
|
||
Величина k , при которой достигается наибольшее (наименьшее) значение f , определяется из необходимого условия экстремума
функции
f x k 0 .
k
Но
f f f xk 1 f xk .k
Следовательно,
f xk 1 f xk 0 ,
т.е. градиенты ортогональны.
Процесс вычисления ведется до тех пор, пока либо градиент не станет равен нулю, либо значения функций на двух шагах не совпадут с заданной точностью
f xk 1 f xk .
Пример 3.7. Решить задачу примера 3.6 методом наискорейшего
спуска. |
|
|
|
|
|
|
|
|
|
|
|
|
Р е ш е н и е . 1. f x0 2x2 |
2x2 |
|
|
|
|
|
||||||
2x |
2x |
2x |
x |
116. |
||||||||
|
|
|
|
1 |
2 |
1 |
2 |
2 |
(2,8) |
|||
|
|
|
|
|
|
|
|
|
|
|
0 |
|
2. Определяем координаты вектора градиента для точки x0: |
||||||||||||
f x1, x2 |
4x 2 |
|
|
|
0 4 2 2 6 ; |
|
|
|
|
|
||
|
|
|
|
|
|
|
||||||
x1 |
1 |
|
|
|
x1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
f x1, x2 |
4x 2 |
|
0 4 8 2 30 ; |
|
|
|
|
|
||||
|
|
|
|
|
|
|||||||
x2 |
2 |
|
|
|
x2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
f x0 (6; 30) . |
|
|
|
|
|
|
|
|
|
|||
3. Составляем уравнение для координат точки, |
в которую мы |
|||||||||||
105
придем, двигаясь в антиградиентном направлении:
x11 x10 1 f x10 2 6 1 ;
x12 x20 2 f x20 8 30 2 .
4. Подставляем выражения координат точки x0 в исходную функцию:
f x1, x2 2 2 6 1 2 2 8 30 1 2 2 2 6 1 2 8 30 1
8 48 1 72 21 128 960 1 1800 21 4 12 1 16 60 1
1872 21 936 1 116.
5. Дифференцируя полученную функцию по 1 , найдем величи-
ну шага: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
f |
x1, x2 |
3744 936 0 |
936 |
|
1 |
. |
|||||||||||||||||
|
|
|
|
|
|||||||||||||||||||
|
x1 |
|
1 |
|
|
|
|
|
|
|
|
|
1 |
|
3744 |
4 |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
6. Подставляем найденное значение 1 |
в выражения координат |
||||||||||||||||||||||
точки x1: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x1 |
3 6 2 6 |
1 |
|
1 |
; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
1 |
|
1 |
4 |
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
1 |
8 |
30 1 |
8 30 |
1 |
|
|
1 |
|
|
1 |
1 |
|
|
1 |
|
|
|
|
|||||
x2 |
|
|
|
; |
x |
|
|
|
|
, |
|
. |
|
|
|
||||||||
4 |
|
2 |
|
|
|
2 |
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|||||
7. Значение функции в точке x1 равно: |
|
|
|
|
|
||||||||||||||||||
f x1 2(0,5)2 2(0,5)2 |
2 0,5 2 0,5 1 ; f x1 f x0 . |
||||||||||||||||||||||
8. Определяем координаты нового вектора градиента, выходяще-
го из точки x1: |
|
|
|
|
|
|
|||
f x1, x2 |
4x 2 |
|
|
|
1 4 |
1 |
|
2 0 ; |
|
|
|||||||||
|
|
|
|
|
|||||
x1 |
1 |
|
|
|
x1 |
2 |
|
|
|
|
|
|
|
|
|
|
|||
f x1, x2 |
4x 2 |
|
1 4 |
1 |
2 0 ; |
||||
|
|||||||||
|
|
||||||||
x2 |
2 |
|
|
|
x2 |
2 |
|
||
|
|
|
|
|
|
||||
f x1 (0,0) . |
|
|
|
|
|
|
|||
Так как координаты вектора градиента равны нулю, получено решение исходной задачи. Точка х1 является точкой минимума. Ми-
нимальное значение функции fmin 1.
Градиентные методы можно также применять при отыскании экстремумов нелинейной целевой функции при ограничениях. Начальная точка берется в этом случае из ограничений. После получения очередной точки идет проверка по ограничениям.
106
Рассмотрим задачу с ограничениями. Если известно, что целевая функция f(x) в данном случае имеет единственный экстремум и он находится внутри области допустимых решений, то рассмотренная методика применяется без изменения. Пусть дана задача с ограничениями (рис. 3.8).
f f x1, x2,...,xn max;
i x1, x2,...,xn bi ; x j 0 , j 1, n , i 1, m .
Пусть начальная точка расположена внутри области допустимых решений. Из точки x0 можно двигаться в направлении f x0 до тех пор, пока f (x) не достигнет максимума. В нашем случае функция возрастает до граничной прямой. Из рисунка видно, что двигаться в направлении f x0 дальше нельзя, так как выйдем из об-
ласти допустимых решений. Поэтому выбирается другое направление движения. При этом помним, что функция должна максимально
возрастать. Такое направление дает вектор 1 , составляющий с вектором f x1 наименьший острый угол по сравнению с любым дру-
гим вектором, выходящим из точки x1 и лежащим в области допустимых решений. Вектор 1 определяется из условия максимизации
скалярного произведения
f x1 1 0 .
Снова движемся до граничной прямой и так далее до локального максимума. Градиент в точке максимума составляет тупой угол с любым вектором rk из допустимой области, проходящим и через
107
точку x3 x * . Поэтому f x3 r |
0 |
для любого rk, кроме r . Для |
|
|
k |
|
3 |
r |
f (x3 )r 0 . |
|
|
3 |
k |
|
|
Аналитическое решение начинается с выбора параметра k ко-
торый определяется в данном случае из неравенств |
|
||||||||||
b |
xk |
k |
f xk b0; |
|
|
||||||
i |
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
xk 0. |
|
|
|
||
xk |
k |
f |
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
Получаем |
|
область |
допустимых |
значений |
параметра |
||||||
k 1k , 2k . |
Значение |
*k , определяемое в результате решения |
|||||||||
уравнения f |
xk |
k |
f |
xk f xk 0 , должно принадлежать про- |
|||||||
межутку 1k , |
|
|
|
|
|
|
|
||||
2k . Если найденное k выходит за пределы указан- |
|||||||||||
ного промежутка, то *k 2k .
Если оптимизационный поиск начат с точки, лежащей на граничной гиперплоскости, то для продолжения движения к точке максимума необходимо найти наилучшее движение. Для этого решается вспомогательная задача
|
|
|
|
f x |
k |
r ; |
|
|
|
||||
|
|
|
k |
r 0 |
|
k |
|
b |
|
|
|||
|
|
i |
k |
|
|
|
для тех i, при которых |
||||||
b xk b0 ; |
|
(3.11) |
||||
|
i |
|
|
i |
|
|
|
rk |
|
1 ; |
|
(3.12) |
|
|
|
|
||||
|
|
|
|
n |
|
|
rk |
rkj2 . |
|
|
|||
j 1
Решая, получим вектор rk , имеющий с градиентом наименьший острый угол. Условие (3.61) говорит о том, что точка принадлежит границе; условие (3.62) – что перемещение из xk по rk будет направлено во внутрь области допустимых решений или по ее гра-
нице. После определения r |
находится значение * |
для следующей |
||||||
|
k |
|
|
|
k |
|
|
|
точки xk 1 xk * r |
. При этом f x |
r |
k |
0 . Если f x * r |
k |
0 , |
||
k k |
|
k 1 |
|
|
|
|
||
решение прекращается.
108
Упражнения
1. Используя методы деления пополам и золотого сечения, вычислить указанные минимальные или максимальные значения функции f (x) на отрезке [a, b]. Точку x* определить с точностью
до 10 2 .
1.1.f (x) 1 32x 4x2 x4 min , [a,b] [1, 2] .
1.2.f (x) 1 4x 2x2 x4 min , [a,b] [ 1, 0] .
1.3.f (x) 2 5x 10x2 5x3 x5 max , [a,b] [ 3, 2] .
1.4.f (x) 3 120x 4x2 x4 min, [a,b] [2, 3] .
1.5.f (x) x 12 x2 x3 17 x7 max, [a,b] [1, 2] .
1.6.f (x) 5x x2 14 x4 max , [a,b] [2, 3] .
1.7.f (x) 2 x 52 x2 14 x4 max, [a,b] [0, 1] .
1.8.f (x) 2x 72 x2 53 x3 12 x4 min , [a,b] [0, 1] .
1.9.f (x) 2x2 x 1 4 max , [a,b] [1, 2] .
1.10.f (x) 2x x2 15 x5 min , [a,b] [1; 0,5] .
1.11.f (x) x 2x2 15 x4 min [a,b] [1, 2] .
1.12.f (x) 1 6x 3x2 x6 max, [a,b] [ 1, 0] .
1.13.f (x) 2x2 3 5 x 4 / 3 min , [a,b] [1,5; 2] .
1.14.f (x) 20x 5x2 8x5/ 4 max , [a,b] [3; 3,5] .
1.15.f (x) 80x 30x2 14 x4 max, [a,b] [1, 2] .
1.16.f (x) 1 2x 12 x2 16 x6 max , [a,b] [1; 1,5] .
1.17.f (x) 10x lg 1x 12 x2 min , [a,b] [0,5; 1] .
109
2 x
1.18.f (x) x x lg 2 min , [a,b] [1,5; 2] .
1
1.19.f (x) 13 x2 x ln x 1 min , [a,b] [0,5; 1] .
1.20.f (x) 13 x3 1 x ln 1 x 1 max , [a,b] [ 0,5; 0,5] .
2. Найти все точки локального безусловного минимума.
2.1. |
f x , x |
x |
x |
1 2 x2 |
2x . |
|
|
1 |
2 |
1 |
2 |
1 |
2 |
2.2 |
f x1, x2 x1 x2 |
1 2 x1 |
x2 1 2 . |
|||
2.3.f x1, x2 x12 x22 2 2 x12 .
2.4.f x1, x2 x1 x22 1 2 x1 .
2.5.f x1, x2 x12 x22 2 2 x12 x22 .
2.6.f x1, x2 x12 x22 4 2 x12 .
2.7.f x1, x2 x12 2x2 1 2 4x22 .
2.8.f x1, x2 x1 x2 3 2 x1 2x22 .
2.9.f x1, x2, x3 x1 2x2 x3 2 x1 x2 2 x3 5 2 .
2.10.f x1, x2, x3 x1 2x2 2 x2 x3 2 x3 4 2 .
2.11.f x1, x2, x3 x1 2x2 2 x2 2x3 2 x3 2x1 2 x1 1 2 .
2.12.f x1, x2 , x3 x1 2x2 4x3 2 x1 x2 1 2 x2 x3 1 2 .
2.13.f x1, x2 x13 2x12 x1x2 2x1 x22 .
2.14.f x1, x2 2x13 x12 3x1x2 x1 4x22 .
2.15.f x1, x2 x13 5x12 8x1x2 x1 4x22
3. Найти точки условного экстремума.
3.1.f x1 x2 , если x12 x22 1.
3.2.f x12 2x22 , если 2x12 x22 4 .
3.3.f x1x2 , если x1 x2 1.
3.4.f x1x22x33 , если x1 x2 x3 12 .
3.5.f 2x1 x2 , если 2x1 x22 1.
110
3.6.f x41 x52 , если x12 x22 1.
3.7.f x1x2 x2x3 , если x12 x22 2 ; x2 x3 2 .
3.8.f x1 x2 , если x12 x2 8 .
3.9.f x12 x2 x3 , если x12 2x2 x3 1.
3.10.f x1 x2 3x3 , если x12 2x22 x32 1.
3.11.f x1 x2 2 x1 x3 2 , если x2 x3 4 .
3.12.f x1 x2 x3 , если x12 2x22 x3 1 .
3.13.f x1 x3 2 x1 x2 2 , если x1 2x3 4 , x2 2x3 6 .
3.14.f x1 x3 6 2 x1 , если x1 x2 0 .
3.15.f x1 x3 1 2 x1 x2 2 , если x1 x2 x3 1 .
4. В области решений системы неравенств определить экстремумы функций.
4.1.f x 4 2 y 8 2 ; 2x 5y 30; 2x y 14 , x 0, y 0 .
4.2.f x 2 2 y 4 2 ; 2x 5y 0 ; 2x y 14 , x 0, y 0 .
4.3.f x 7 2 y 7 2 ; 2x 5y 30; 2x y 14 , x 0, y 0 .
4.4.f x 6 2 y 2 2 ; 2x 5y 20 ; 2x y 12 , x 0, y 0 .
4.5.f 2x y ; x2 y2 36 , x 0, y 0 .
4.6.f x 2y ; x2 y2 36 , x 0, y 0 .
4.7.f x 3 2 y 2 2 ; x2 y2 36 , x 0, y 0 .
4.8.f x 4 2 y 6 2 ; x2 y2 36 , x 0, y 0 .
4.9.f x 1 2 y 1 2 ; x 2 y 1 16, x 0, y 0 .
4.10.f x 4 2 y 4 2 ; x 2 y 1 16, x 0, y 0 .
4.11.f x 4 2 y 4 2 ; 3x 5y 24 , x 3, y 0 .
4.12.f x 3 2 4 y 6 2 ; 3x 5y 24 , x 3, y 0 .
4.13.f x 2 2 y 6 2 ; 2x y 12 , x 0, y 0 .
4.14.f x 3 2 y 4 2 ; x 3 y 1 12 , x 0, y 0 .
4.15.f x 2 2 y 2 2 ; x2 y2 25 , x 0, y 0 .
