Скачать презентацию Тема 2 Методы оптимизации нулевого порядка Ø Описание Скачать презентацию Тема 2 Методы оптимизации нулевого порядка Ø Описание

Лекция2_Методы нулевого порядка.ppt

  • Количество слайдов: 27

Тема 2 Методы оптимизации нулевого порядка Ø Описание общего алгоритма методов покоординатного спуска Ø Тема 2 Методы оптимизации нулевого порядка Ø Описание общего алгоритма методов покоординатного спуска Ø Особенности программной реализации Ø Метод ГАУССА-ЗЕЙДЕЛЯ Ø Метод ПАУЭЛЛА Ø Метод РОЗЕНБРОКА Ø Методы спуска с перебором направлений Ø Хука-Дживса и Нелдера-Мидта 2/14/2018 1

Методы покоординатного спуска q Среди методов нулевого порядка можно выделить группу методов покоординатного спуска: Методы покоординатного спуска q Среди методов нулевого порядка можно выделить группу методов покоординатного спуска: Ø Гаусса-Зейделя, Ø Пауэлла, Ø Дэвиса-Свена-Кемпи (ДСК), Ø Розенброка. • Алгоритм этих методов в общем одинаков и описывается следующим образом: 2/14/2018 2

Спуск по направлению x 2 z x 1 2/14/2018 d 3 Спуск по направлению x 2 z x 1 2/14/2018 d 3

Общий алгоритм Ø 1. Задается начальная точка и начальный шаг h одномерного спуска. Ø Общий алгоритм Ø 1. Задается начальная точка и начальный шаг h одномерного спуска. Ø 2. Выбирается n линейно независимых направлений x 2 d 1 Ø Обычно это единичные координатные орты (вообще их можно выбрать исходя из знания свойств целевой функции). 2/14/2018 x 1 4

 • 3. По каждому i-направлению поочередно делается спуск (i=1. . n), т. е. • 3. По каждому i-направлению поочередно делается спуск (i=1. . n), т. е. находится zmi, доставляющий • пересчитывается точка • При нахождении min используется либо метод последовательного перебора, если функция не гладкая, либо метод квадратичной параболы для гладких функций. • В результате выполнения этих спусков, называемых циклом, точка сдвинулась на вектор 2/14/2018 Общий алгоритм x 2 d 2 zm 1 d 1 zm 2 x 1 5

Общий алгоритм • 4. Проверяется условие • если да, то процесс спуска заканчивается x Общий алгоритм • 4. Проверяется условие • если да, то процесс спуска заканчивается x 2 d 2 • 5. В зависимости от полученной информации о функции, делается некоторое преобразование выбранных направлений: d 2 zm 1 d 1 x 1 • Процесс вычислений повторяется с новой точки 2/14/2018 6

Особенности программной реализации. q При программной реализации следует описать отдельно подпрограмму вычисления минимизируемой функции, Особенности программной реализации. q При программной реализации следует описать отдельно подпрограмму вычисления минимизируемой функции, например, для целевой функции, имеющей вид • • • const n=2; type mas=array[l. . n] of real; function F(х: mas): real; begin F: =sqr(x[1]+2*x[2]) end; 2/14/2018 7

Особенности программной реализации • После этого напишем подпрограмму метода оптимизации: • Type fun=function (x: Особенности программной реализации • После этого напишем подпрограмму метода оптимизации: • Type fun=function (x: mas): real • Procedure MPSP(F: fun; • var x 0: mas; eps, h: real; var fm: real); • внутри которой следует ввести: • для координат векторов направлений массив D[i, k] где помещается i-я координата вектора dk • var • D: array[1. . n, 1. . n] of real • zm, x, a, b: array[1. . n] of real; • рабочие массивы zm, x, • a и b в методе Розенброка, ДСК, Пауэлла; 2/14/2018 8

Подпрограмма для функции (z) вдоль направления • function F 1(z: real): real; • begin Подпрограмма для функции (z) вдоль направления • function F 1(z: real): real; • begin • for k: =1 to n do • x[k]=x 0[k]+z*D[i, k]; • F 1: =F(x); • end; 2/14/2018 9

Подпрограмма метода одномерного поиска • Function MPP(z 0, h, eps: real): real; • begin Подпрограмма метода одномерного поиска • Function MPP(z 0, h, eps: real): real; • begin • y 1: =F 1(z 0); z 1: =z 0; • repeat • z 0: =z 1; y 0: =y 1; • z 1: =z 0+h; y 1: =F 1(z 1); • until y 1>y 0; • h: =-h/4; • until abs(h)

Подпрограмма преобразования векторов направлений [вычисляет d= (d, zm)] • Procedure PREOBD; (без параметров) • Подпрограмма преобразования векторов направлений [вычисляет d= (d, zm)] • Procedure PREOBD; (без параметров) • begin • . . . • D[i. k]=. . . . • end; • Отличаются методы видом оператора преобразования направлений после каждого цикла спуска 2/14/2018 11

Реализация алгоритма спуска к минимуму • • • • Begin D: =0; for i: Реализация алгоритма спуска к минимуму • • • • Begin D: =0; for i: =1 to n do D[i, i]: =1; repeat dl=0; for i: =1 to n do //спуск по направлениям begin zm[i]: =MPP(0, h, h/5); x 0: =x; dl: =dl+abs(zm[i]); //погрешность end; PREOBD; h: =h*0. 5; Until dl

Метод Гаусса-Зейделя не требует преобразования направлений, т. е. PREOBD; отсутствует, и спуск все время Метод Гаусса-Зейделя не требует преобразования направлений, т. е. PREOBD; отсутствует, и спуск все время производится вдоль осей координат 2/14/2018 x 2 x 0 x 1 13

В случае длинного оврага, если оси координат направлены неудачно, метод спуска по координатам может В случае длинного оврага, если оси координат направлены неудачно, метод спуска по координатам может сильно замедляться x 2 x 1 Для исправления этого недостатка используют различные методы преобразования исходных векторов di 2/14/2018 14

Метод ПАУЭЛЛА • Пересчет направлений осуществляется следующим образом: d 2 d 1 d 2 Метод ПАУЭЛЛА • Пересчет направлений осуществляется следующим образом: d 2 d 1 d 2 2/14/2018 15

Преобразование векторов di • • • • Procedure PREOBD; Var a: MAS; begin for Преобразование векторов di • • • • Procedure PREOBD; Var a: MAS; begin for k=l to n do begin a[k]=0; for i=1 to n do a[k]=a[k]+zm[i]*D[i, k] end; for i: =n downto 2 do for k=1 to n do D[i, k]=D[i-1, k]; da=0; for k=l to n do da=da+sqr(a[k]); da=sqrt(da); for k=1 to n do D[1, k]=a[k]/da; end; 2/14/2018 16

Метод Розенброка • Формулы пересчета направлений: Ортогонализация направлений 2/14/2018 17 Метод Розенброка • Формулы пересчета направлений: Ортогонализация направлений 2/14/2018 17

Траектория спуска по Методу Розенброка d 2 a 2 d 2 a 1 d Траектория спуска по Методу Розенброка d 2 a 2 d 2 a 1 d 2 d 1 2/14/2018 d 1 18

 • Procedure PREOBD; //метод Розенброка • • • • • • VAR a: • Procedure PREOBD; //метод Розенброка • • • • • • VAR a: array[1. . n, l. . n] of real; c: array[l. . . , n] of real; aa, cc, ad: real; i, j, k, l: integer; begin for i=l to n do for k=l to n do begin a[i, k]=0; for j: =i to n do a[i, k]=a[i, k]+zm[j]*D[j, k] end; da=0; for k=l to n do da=aa+sqr(a[1, k]); da=sqrt(da); for k=1 to n do D[1, k]=a[1, k]/da; for i=2 to n do begin for k=l to n do begin c[k]=a[i, k]; for j=1 to i-1 do begin ad=0 for l=1 to n do ad=ad+а[i, 1]*D[j, 1] c[k]=c[k]-ad*D[j, k]; end; dс=0; for k=l to n do dc=dc+sqr(c[k]); dc=sqrt(dc); for k=l to n do d[i, k]=c[k]/dc; end; 2/14/2018 19

Методы спуска с перебором направлений q Другая группа методов, нулевого порядка, представителями которых являются Методы спуска с перебором направлений q Другая группа методов, нулевого порядка, представителями которых являются методы • • • Последовательного покоординатного перебора Хука-Дживса Нелдера-Мида • иллюстрируют широкие возможности для творческого поиска разнообразных способов выбора направлений 2/14/2018 20

Метод Хука-Дживса По каждой переменной делается спуск на шаг h, если удачно, то делаем Метод Хука-Дживса По каждой переменной делается спуск на шаг h, если удачно, то делаем шаг по диагонали h h h 2/14/2018 d 2 h d 1 h 21

Траектория Метода Нелдера-Мида r q o m 2/14/2018 p 22 Траектория Метода Нелдера-Мида r q o m 2/14/2018 p 22

Отражение r q o p m 2/14/2018 23 Отражение r q o p m 2/14/2018 23

Растяжение e r q o p m 2/14/2018 24 Растяжение e r q o p m 2/14/2018 24

Сжатие r q с o o p m 2/14/2018 с p m 25 Сжатие r q с o o p m 2/14/2018 с p m 25

Редукция r q o m 2/14/2018 p 26 Редукция r q o m 2/14/2018 p 26

Конец 2/14/2018 27 Конец 2/14/2018 27