книги / Начала инженерного творчества
..pdf2.2.1.1. Метод градиента
Метод градиента в чистом виде формирует шаг по переменным как функцию от градиента R(x) в текущей точке поиска. Простейший алгоритм поиска minR(x) записывается в векторной форме следующим образом:
xi+1 = xi −h grad R(xi ) |
(2.8) |
||
или в скалярном виде |
|
||
xij+1 = xij −h |
dR |
, j =1,......,n. |
(2.9) |
|
|||
|
dxij |
|
Величина шага в направлении градиента grad R(x) зависит от величины градиента, который заранее учесть трудно, и от коэффициента пропорциональности шага h, с помощью которого можно управлять эффективностью метода.
Поиск каждой новой точки состоит из двух этапов:
1)оценка градиентов по каждому направлению поиска
grad R(xi) путем вычисления частных производных от функции по каждой переменной хi,
2)перемещение (рабочий шаг) по всем переменным одновременно.
Величина коэффициента h сильно влияет на эффективность метода. Большей эффективностью обладает вариант метода, когда шаг по переменной определяется направляющими косинусами градиента
xij+1 = xij −h cos ϕj , |
(2.10) |
где cos ϕj = (dRdx(j )) . grad R x
В этом случае величина рабочего шага не зависит от величины модуля градиента, и ею легче управлять, изменяя коэффициент шага h. В районе оптимума может возникать значи-
51
тельное «рыскание», поэтому используют различные алгоритмы коррекции h.
Наибольшее распространение получили следующие алгоритмы:
|
1) hi = const = h (без коррекции); |
|||
|
2) hi = hi–1/2, если R(xi) < R(xi–1); hi = hi–1, R(xi) > R(xi–1); |
|||
|
3) hi |
= hi–1, если α1 ≤ α ≤ α2; hi = 2hi–1, если α1 > α; |
||
hi = |
hi −1 |
, |
если α2 < α, |
|
3 |
||||
|
|
|
где α – угол между градиентами на предыдущем и текущем шаге; α1 и α2 – заданные пороговые значения выбираются субъективно (например, α1 = π/6, α2 = π/3).
Вдали от оптимума направление градиента меняется мало, потому шаг можно увеличить (второе выражение), вблизи от оптимума направление резко меняется (угол между градиентами R(x) большой), поэтому h сокращается (третье выражение).
Для оценки частных производных используются разностные методы:
1. Алгоритм с центральной пробой
dR |
≈ |
R(x1,..., xi + gi ,..., xn ) − R(x1,..., xi ,..., xn ) |
. |
|
|
(2.11) |
|
dx |
|
|
|||||
|
g |
i |
|
|
|||
i |
|
|
|
|
|||
2. Алгоритм с парными пробами |
|
|
|||||
dR ≈ |
R(x1,..., xi + gi ,..., xn )− R(x1,..., xi − gi ,..., xn ) |
, |
(2.12) |
||||
|
g |
|
|
|
|||
dx |
|
i |
|
|
|||
i |
|
|
|
|
где gi – пробный шаг по i-й переменной, выбираемый достаточно малым для разностной оценки производной.
Первый алгоритм требует меньших затрат по сравнению со вторым (обычно затраты выражаются количеством вычислений критерия оптимальности), но позволяет получить решение менее точно, чем второй, и эта погрешность зависит от величины пробного шага.
52
На рис. 5 приведена одна из возможных траекторий поиска минимума двумерной функции градиентным методом (наряду с другими ниже рассматриваемыми методами).
Условием окончания поиска может являться малость модуля градиента R(x), т.е. |grad R(x)| < ε.
Пример 4. Требуется найти минимум функции R(x1, x2 )=
= x13 + 2x22 −3x1 −4x2.
Интервал поиска: х1нач = –2, х1кон = 2, х2нач = –2, х2кон = 2. Начальная точка: х10 = –0,5, х20 = –1.
Параметры поиска: коэффициент шага h = 0,1, пробный
g = 0,01, погрешность ε = 0,01.
Алгоритм метода: алгоритм 1 (хi+1 = хi – h grad R(xi)). Алгоритм коррекции шага: без коррекции коэффициента
пропорциональности шага (h = const).
Способ вычисления производной: вычисление grad R с парными пробами.
Результаты вычислений. В начальной точке вычисляем градиент функции:
R(x1 + g, x2 )= 7,352, R(x1 − g, x2 )= 7,397, |
dR |
= −2,2499; |
||
|
dx |
|
|
|
|
1 |
|
|
|
R(x1, x2 + g )= 7,295, R(x1, x2 − g)= 7,455, |
|
dR |
= −8. |
|
|
|
|||
|
|
dx2 |
Значение критерия R = 7,3750. Делаем рабочий шаг, получаем
х1 = –0,275, х2 = –0,2.
В новой точке опять вычисляем производные:
R(x1 + g, x2 )=1,656, R(x1 − g, x2 )=1,712, dR = −2,7730; dx1
53
R(x1, , x2 + g)=1,636, R(x1, x2 − g )=1,732, |
dR |
= −4,8. |
|
||
|
dx2 |
Значение критерия R = 1,3750.
Делаем рабочий шаг, получаем x1 = 0,002, х2 = 0,280. Далее аналогично осуществляем следующие шаги (табл. 4).
|
|
|
|
|
|
Таблица 4 |
|
|
|
|
|
|
|
|
|
№ |
x1 |
х2 |
dR/dx1 |
dR/dx2 |
|gradR| |
|
R |
п/п |
|
||||||
|
|
|
|
|
|
|
|
1 |
–0,500 |
–1,000 |
–2,2449 |
–8,0000 |
8,3104 |
|
7,3750 |
|
|
|
|
|
|
|
|
2 |
–0,275 |
–0,200 |
–2,7730 |
–4,8000 |
5,4608 |
|
1,3750 |
|
|
|
|
|
|
|
|
3 |
0,302 |
0,568 |
–2,7258 |
–1,7280 |
3,2274 |
|
–2,5060 |
|
|
|
|
|
|
|
|
4 |
0,575 |
0,741 |
–2,0085 |
–1,0368 |
2,2603 |
|
–3,4002 |
|
|
|
|
|
|
|
|
5 |
0,776 |
0,844 |
–1,1947 |
–0,6221 |
1,3470 |
|
–3,8120 |
|
|
|
|
|
|
|
|
6 |
0,895 |
0,907 |
–0,5958 |
–0,3732 |
0,7031 |
|
–3,9508 |
|
|
|
|
|
|
|
|
7 |
0,955 |
0,944 |
–0,2652 |
–0,2239 |
0,3471 |
|
–3,9877 |
|
|
|
|
|
|
|
|
8 |
0,981 |
0,966 |
–0,1112 |
–0,1344 |
0,1744 |
|
–3,9967 |
|
|
|
|
|
|
|
|
9 |
0,992 |
0,980 |
–0,0453 |
–0,0806 |
0,0925 |
|
–3,9990 |
|
|
|
|
|
|
|
|
10 |
0,997 |
0,988 |
–0,0183 |
–0,0484 |
0,0517 |
|
–3,9997 |
|
|
|
|
|
|
|
|
11 |
0,999 |
0,993 |
–0,0073 |
–0,0290 |
0,0299 |
|
–3,9999 |
|
|
|
|
|
|
|
|
12 |
0,999 |
0,996 |
–0,0029 |
–0,0174 |
0,0177 |
|
–4,0000 |
|
|
|
|
|
|
|
|
13 |
1,000 |
0,997 |
-0,0012 |
–0,0104 |
0,0105 |
|
–4,0000 |
|
|
|
|
|
|
|
|
14 |
1,000 |
0,998 |
-0,0005 |
–0,0063 |
0,0063 |
|
–4,0000 |
|
|
|
|
|
|
|
|
В последней точке модуль градиента меньше заданной погрешности (0,0063 < 0,01), поэтому поиск прекращается.
Пример 5. Отличается от предыдущего только величиной коэффициента пропорциональности шага h, который увеличен в 4 раза, теперь h = 0,4. Ниже, в табл. 5, приведены только первые 14 шагов (как и в предыдущем случае). Целесообразно сопоставить их путем построения траекторий поиска при обоих значениях шага h в координатах х1 – х2.
54
|
|
|
|
|
|
Таблица 5 |
|
|
|
|
|
|
|
|
|
№ |
x1 |
х2 |
dR/dx1 |
dR/dx2 |
|gradR| |
|
R |
п/п |
|
||||||
|
|
|
|
|
|
|
|
1 |
–0,500 |
–1,000 |
–2,2499 |
–8,0000 |
8,3104 |
|
7,3750 |
2 |
0,400 |
2,200 |
–2,5200 |
4,8000 |
5,4213 |
|
–0,2559 |
3 |
1,408 |
0,280 |
2,9471 |
–2,8800 |
4,1207 |
|
–2,3960 |
|
|
|
|
|
|
|
|
4 |
0,229 |
1,432 |
–2,8424 |
1,7280 |
3,3265 |
|
–2,3020 |
5 |
1,366 |
0,741 |
2,5986 |
–1,0368 |
2,7978 |
|
–3,4145 |
6 |
0,327 |
1,156 |
–2,6798 |
0,6221 |
2,7511 |
|
–2,8967 |
|
|
|
|
|
|
|
|
7 |
1,399 |
0,907 |
2,8681 |
–0,3732 |
2,8923 |
|
–3,4427 |
8 |
0,251 |
1,056 |
–2,8104 |
0,2239 |
2,8193 |
|
–2,7319 |
9 |
1,375 |
0,966 |
2,6760 |
–0,1344 |
2,6794 |
|
–3,5218 |
10 |
0,305 |
1,020 |
–2,7207 |
0,0806 |
2,7219 |
|
–2,8860 |
11 |
1,393 |
0,988 |
2,8244 |
–0,0484 |
2,8248 |
|
–3,4747 |
12 |
0,264 |
1,007 |
–2,7914 |
0,0290 |
2,7916 |
|
–2,7724 |
13 |
1,380 |
0,996 |
2,7148 |
–0,0174 |
2,7148 |
|
–3,5114 |
14 |
0,294 |
1,003 |
–2,7401 |
0,0104 |
2,7401 |
|
–2,8573 |
… |
… |
… |
… |
… |
… |
|
… |
В этом случае поиск носит явно колебательный характер, плохо приближаясь к решению.
Проиллюстрируем графически табл. 4 и 5. На рис. 6 показана зависимость параметра оптимизации от номера шага для значений параметра h 0,01 и 0,04. Во втором случае видна неустойчивость счёта и невозможность получить решение задачи.
55
10 |
|
|
|
5 |
|
|
|
R1 |
|
|
|
R2 |
|
|
|
0 |
|
|
|
− 5 0 |
5 |
10 |
15 |
|
|
n |
|
Рис. 6. Сравнение сходимости градиентного метода |
|||
при использовании различного шага |
2.2.1.2. Метод наискорейшего спуска
Основным недостатком градиентного метода является не-
обходимость частого вычисления производных от R(x). Этого недостатка лишен метод наискорейшего спуска, который заключается в следующем.
56
Втекущей точке вычисляется gradR(x), и затем в направлении градиента ищется минимальное значение функции minR(x). Практически это может быть осуществлено любым методом одномерной оптимизации (поиск по одному направлению – направлению градиента), наиболее часто используется сканирование до первого локального минимума по направлению gradR(x).
Врезультате вдали от оптимума эффективность метода повышается, район оптимума достигается быстрее, в его окрестности эффективность метода снижается из-за частой смены направления поиска и приближается к эффективности метода градиента.
Метод наискорейшего спуска, как и все градиентные методы, обладает невысокой эффективностью в овражных функциях. В ряде случаев можно повысить скорость выхода в район оптимума предъявлением невысоких требований к точности поиска по направлению. Которая задается величиной шага поиска по направлению h.
Условием окончания расчётов может быть малая величина
модуля градиента R(x) |gradR(x)| < ε. Можно также использовать и уменьшение приращений по переменным в результате шага, но только в том случае, если на данном шаге пропущен оптимум, иначе может оказаться, что малость шага обусловлена не близостью к оптимуму, а малостью коэффициента пропорциональности шага h.
В ряде случаев используется уменьшение шага поиска оптимума по направлению после каждой смены направления. Это позволяет с большей точностью каждый раз находить оптимум, но резко снижает эффективность поиска в овражных функциях. Метод используется для локализации «дна оврага» в специальных овражных методах. Условием окончания поиска в этом случае является достижение заданной малой величины шага.
Одна из возможных траекторий поиска минимума двумерной функции методом наискорейшего спуска приведена на рис. 5.
57
Пример 6. Для сравнения метода наискорейшего спуска
с методом градиента рассмотрим решение предыдущего примера при шаге h = 0,1.
Результаты расчетов. Расчет производных детально рассмотрен выше, поэтому здесь не приводится. Ниже, в табл. 6, приводятся результаты движения по градиенту с постоянным шагом.
Таблица 6
Номер |
|
|
dR/dx1 |
dR/dx2 |
|gradR| |
|
направ- |
x1 |
x2 |
|
|
|
R |
ления |
|
|
Величины, постоянные |
|
||
|
|
|
по направлению |
|
||
1 |
–0,500 |
–1,000 |
–2,2499 |
–8,0000 |
8,3104 |
7,3750 |
|
|
|
|
|
|
|
1 |
–0,275 |
–0,200 |
–2,2499 |
–8,0000 |
8,3104 |
1,6842 |
|
|
|
|
|
|
|
1 |
–0,050 |
0,600 |
–2,2499 |
–8,0000 |
8,3104 |
–1,5301 |
|
|
|
|
|
|
|
1 |
0,175 |
1,400 |
–2,2499 |
–8,0000 |
8,3104 |
–2,1996 |
|
|
|
|
|
|
|
Вследующей точке (0,400, 2,00) значение критерия (R =
=–0,256) оказывается хуже, чем в последней (R = –2,1996). Поэтому в найденной точке оптимума по направлению снова вычисляем градиент и по нему совершаем шаги, до тех пор, пока не найдем наилучшую точку (табл. 7).
|
|
|
|
|
|
Таблица 7 |
|
|
|
|
|
|
|
|
|
Номер |
|
х2 |
dR/dх1 |
dR/dх2 |
|
|
|
направ- |
x1 |
|gradR| |
|
R |
|||
ления |
|
|
|
|
|
|
|
|
|
Второй поиск по градиенту |
|
|
|
||
2 |
0,175 |
1,400 |
–2,9081 |
1,6000 |
3,3192 |
|
–2,1996 |
2 |
0,466 |
1,240 |
–2,9081 |
1,6000 |
3,3192 |
|
–3,1811 |
2 |
0,757 |
1,080 |
–2,9081 |
1,6000 |
3,3192 |
|
–3,8239 |
2 |
1,047 |
0,920 |
–2,9081 |
1,6000 |
3,3192 |
|
–3,9804 |
58
Окончание табл. 7
Номер |
|
х2 |
dR/dх1 |
dR/dх2 |
|
|
|
направ- |
x1 |
|
|gradR| |
R |
|||
ления |
|
|
|
|
|
|
|
|
|
Третий поиск по градиенту |
|
|
|||
3 |
1,047 |
0,920 |
0,2912 |
–0,3200 |
|
0,4326 |
–3,9804 |
|
|
|
|
|
|
|
|
3 |
1,018 |
0,952 |
0,2912 |
–0,3200 |
|
0,4326 |
–3,9944 |
|
|
|
|
|
|
|
|
3 |
0,989 |
0,984 |
0,2912 |
–0,3200 |
|
0,4326 |
–3,9991 |
|
|
|
|
|
|
|
|
|
|
Четвертый поиск по градиенту |
|
|
|||
4 |
0,989 |
0,984 |
–0,646 |
–0,640 |
|
0,0909 |
–3,9991 |
|
|
|
|
|
|
|
|
4 |
0,996 |
0,990 |
–0,646 |
–0,640 |
|
0,0909 |
–3,9998 |
|
|
|
|
|
|
|
|
4 |
1,002 |
0,997 |
–0,646 |
–0,640 |
|
0,0909 |
–4,0000 |
|
|
|
|
|
|
|
|
|
|
Пятый поиск по градиенту |
|
|
|||
5 |
1,002 |
0,997 |
0,0126 |
–0,0128 |
|
0,0179 |
–4,000 |
|
|
|
|
|
|
|
|
5 |
1,001 |
0,998 |
0,0126 |
–0,0128 |
|
0,0179 |
–4,000 |
|
|
|
|
|
|
|
|
5 |
1,000 |
0,999 |
0,0126 |
–0,0128 |
|
0,0179 |
–4,000 |
|
|
|
|
|
|
|
|
2.2.1.3. Метод сопряженных градиентов
Градиентные методы, базирующиеся только на вычислении градиента R(x), являются методами первого порядка, так как на интервале шага они заменяют нелинейную функцию R(x) линейной.
Более эффективными могут быть методы второго порядка, которые используют при вычислении не только первые, но и вторые производные от R(x) в текущей точке. Однако у этих методов есть свои труднорешаемые проблемы – вычисление вторых производных в точке, к тому же вдали от оптимума матрица вторых производных может быть плохо обусловлена.
Метод сопряженных градиентов является попыткой объединить достоинства методов первого и второго порядка с исключением их недостатков. На начальных этапах (вдали от оптимума) метод ведет себя как метод первого порядка, а в окрестностях оптимума приближается к методам второго порядка.
59
Первый шаг аналогичен первому шагу метода наискорейшего спуска, второй и следующий шаги выбираются каждый раз в направлении, образуемом в виде линейной комбинации векторов градиента в данной точке и предшествующего направления.
Алгоритм метода можно записать следующим образом (в векторной форме):
x1 = x0 −h grad R(x0 ), |
|
(2.13) |
xi+1 = xi −h grad R(xi )+α grad R(xi−1 ) . |
(2.14) |
|
|
|
|
Величина α может быть приближенно найдена из выражения
α = |
grad R(xi ) 2 |
|
grad R(xi −1 ) 2 . |
(2.15) |
Алгоритм работает следующим образом. Из начальной точки х0 ищут min R(x) в направлении градиента (методом наискорейшего спуска), затем, начиная с найденной точки и далее, направление поиска min определяется по второму выражению (2.15). Поиск минимума по направлению может осуществляться любым способом: можно использовать метод последовательного сканирования без коррекции шага сканирования при переходе минимума, поэтому точность достижения минимума по направлению зависит от величины шага h.
Для квадратичной функции R(x) решение может быть найдено за п шагов (п – размерность задачи). Для других функций поиск будет медленнее, а в ряде случаев может вообще не достигнуть оптимума вследствие сильного влияния вычислительных ошибок.
Одна из возможных траекторий поиска минимума двумерной функции методом сопряженных градиентов приведена на рис. 5.
60