Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Начала инженерного творчества

..pdf
Скачиваний:
2
Добавлен:
12.11.2023
Размер:
1.44 Mб
Скачать

2.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/1

dR/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/1

dR/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(xi1 ) .

(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

Соседние файлы в папке книги