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

Методы оптимизации - Харчистов Б.Ф.

.pdf
Скачиваний:
137
Добавлен:
24.05.2014
Размер:
931 Кб
Скачать
☆

 

 

 

51

 

 

 

 

 

 

 

 

Окончание табл. 5.2

 

 

 

 

 

 

 

 

4

1,5

−0,375

 

<

0,625

0,5

 

5

2,5

0,625

 

>

−0,375

1,5

 

6

3,5

51,6

 

>

−0,375

1,5

 

 

 

 

 

 

−0,375

1,5

 

Поскольку i = 6 = N1 , то вычисления завершаются. В итоге получаем

x6(1) = x4(1) = 1,5, f6 (1) = −0,375.

Второй этап

Определяем ∆(1) = [x3(1) , x5(1) ] = [0,5; 2,5].

Полагаем x0*(2) = 1,5, f0*(2) = −0,375.

Определяем xi(2) с помощью следующего соотношения:

xi(2) = a(1) +

b(1) − a(1)

(2i −1), i =

 

.

 

 

 

1, N2

 

 

 

 

 

 

 

В итоге получаем

2N2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xi( 2 ) = 0,5 + 2,5 − 0,5

(2i − 1) = 0,25

+ 0,5i, i

 

 

 

= 1,4.

 

8

 

 

 

 

 

 

 

 

 

Результаты вычислений заносим в табл. 5.3.

 

 

 

 

 

Таблица 5.3

 

 

 

 

 

 

 

Номер

x(2)

f (x(2) )

≥

f *(2)

x*(2)

 

отсчета

<

 

i

i

i −1

i−1

 

1

0,75

1,01

>

−0,375

1,5

 

2

1,25

0,508

>

−0,375

1,5

 

3

1,75

−1,37

<

−0,375

1,5

 

4

2,25

−1,62

<

−1,37

1,75

 

 

 

 

 

−1,62

2,25

 

Поскольку i=4= N2 , то вычисления завершаются.

Ответ: x* 2,25, f * −1,62 .

52

Развитием и обобщением поиска с уточнением является поиск с разведкой. В этом случае исходный отрезок локализации

разбивается на 2 равных по величине отрезка (зоны) D1

и D2 :

D =

a,

a + b

 

= [a

,b ] ,

D

 

=

 

a + b

,

b

= [a

 

, b ].

 

 

2

 

 

2

1

 

 

1

1

 

 

2

 

 

 

 

2

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

На первом этапе в каждой из зон проводится разведка. Для этого из общего количества вычислений N выделяется N0 вычис-

лений (в каждой из зон выполняется по N0 / 2 вычислений). Цель

разведки состоит в выборе одной из зон для дальнейших исследований.

Разведка заключается в сканировании каждой из зон. Обо-

значим точки,

в которых производятся вычисления в зонах D1 и

D2 , через

yi и

zi , i =

 

 

, соответственно. В результате вы-

1, N0 / 2

числений определяются оценки точек минимума y*N

0

/ 2 и

z*N

0

/ 2 ,

значений минимума f (y*N

 

/ 2) и f (z*N

 

 

 

 

 

 

 

 

0

0

/ 2 ) и средние значения M1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

и M 2 f (x)

в зонах D1 и D2

соответственно:

 

f (zi ).

 

 

 

 

 

 

 

M1 =

∑

 

 

f ( yi ),

M2 = ∑

 

 

 

 

 

 

 

 

 

N0

2

 

 

 

 

N0

2

 

 

 

 

 

 

 

 

 

 

 

i=1 N0 2

 

i=1

N0 2

 

 

 

 

 

 

Если M1 < M 2 , то для дальнейших исследований выбирается зона D1 , в противном случае − зона D2 .

На втором этапе осуществляется сканирование выбранного отрезка ( D1 или D2 ), при этом выполняется N−N0 вычислений.

В качестве начальных значений искомых точки глобального минимума и значения глобального минимума выбираются получен-

ные на первом этапе оценки, т.е.

 

 

 

 

x* = ( y*

или

z*

),

f * = ( f (y*

) или

f (z*

) ).

0

N0 / 2

 

N0 / 2

 

0

N0 / 2

 

N0 / 2

 

53

В результате определяются x*N −N0 и fN*− N0 = f (x*N − N0 ) , которые считаются оценками искомых величин, т.е.

x* x*N − N

0

, f * fN*− N

.

 

 

0

Пример. Определить с помощью поиска с разведкой минимум функции f (x) = 2x4 − 8x3 + 8x2 − x , заданной на отрезке

∆ = [−2,4], при N=10, N0 =6.

 

Решение.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Определяем D1

 

и D2 :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D1 = [−2, 1],

D2 = [1, 4].

 

 

 

 

 

 

 

 

Первый этап

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Проводим разведку в D1. Задаем α=10, β=1000.

 

 

 

Определяем yi с помощью следующего соотношения:

 

 

y

i

= a +

b1 − a1

(2i −1), i = 1,

N

0

2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

N0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В итоге получаем

 

 

 

 

 

 

 

 

 

 

 

yi = −2

+

 

1+ 2

(2i −1) = −2,5 + i,

 

 

 

 

 

 

 

 

 

 

i = 1,3.

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Результаты вычислений заносим в табл. 5.4.

Таблица 5.4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Номер

yi

 

 

 

 

f (yi )

 

 

≥

 

 

f *

y*

 

отсчета

 

 

 

 

 

<

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i−1

i −1

 

1

 

−1,5

 

 

 

 

56,6

 

 

 

<

 

1000

 

10

 

2

 

−0,5

 

 

 

 

3,63

 

 

 

<

 

56,6

 

−1,5

 

3

 

0,5

 

 

 

0,625

 

 

<

 

3,63

 

−0,5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0,625

 

0,5

 

Поскольку i=3= N0 / 2 , то вычисления завершаются. В итоге получаем

 

 

 

 

 

 

 

 

 

 

 

54

 

 

 

 

 

 

 

 

 

 

 

 

 

y3* = 0,5,

 

f ( y3*) = 0,625,

 

 

 

 

 

 

 

 

M1 =

56,6 + 3,63 + 0,625

=

20,3.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

Проводим разведку в D2 . Задаем α=10, β=1000.

 

 

Определяем zi с помощью следующего соотношения:

 

 

 

 

zi

= a2 +

b2 − a2

(2i −1), i = 1, N0 2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

N0

 

 

 

 

 

 

 

 

 

 

 

 

 

В итоге получаем

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

zi

= 1+

4 −1

(2i −1) = 0,5 + i,

i =

 

 

 

 

 

 

 

 

 

1,3.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Результаты вычислений заносим в табл. 5.5.

Таблица 5.5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Номер

 

zi

 

 

 

 

f (zi )

 

 

≥

 

 

f *

 

z*

 

 

отсчета

 

 

 

 

 

 

 

<

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i−1

 

i−1

 

 

1

 

 

1,5

 

 

 

−0,375

 

 

<

 

 

1000

 

10

 

 

2

 

 

2,5

 

0,625

 

 

>

 

 

−0,375

 

1,5

 

 

3

 

 

3,5

 

51,6

 

>

 

 

−0,375

 

1,5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

−0,375

 

1,5

 

 

 

Поскольку i=3= N0 / 2 , то вычисления завершаются. В ито-

ге получаем

 

z3* = 1,5,

f (z3* ) = −0,375,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

M 2 = − 0,375 + 0,625 + 51,6

= 17,3.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

Поскольку

M1 > M 2 , то выбираем для дальнейшего ис-

следования D2 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Второй этап

Полагаем x0* = 1,5, f0* = −0,375.

Определяем xi с помощью следующего соотношения:

 

 

 

 

 

55

 

 

 

 

 

xi

= a2 +

 

b2 − a2

 

 

(2i −1), i =

 

 

 

.

 

 

 

 

1, N − N

0

2(N − N

0 )

 

 

 

 

 

 

 

 

 

В итоге получаем

 

 

 

 

 

 

 

 

xi

= 1+

4 −1

(2i −1) = 0,625 + 0,75i, i =

 

 

1,4.

 

 

8

 

 

 

 

 

 

 

 

 

 

Результаты вычислений заносим в табл. 5.6.

 

 

 

 

 

Таблица 5.6

 

 

 

 

 

 

 

Номер

xi

f (xi )

≥

f *

x*

 

отсчета

<

 

 

 

i−1

i−1

 

1

1,375

1,02

>

−0,375

1,5

 

2

2,125

−1,98

<

−0,375

1,5

 

3

2,875

9,78

>

−1,98

2,125

 

4

3,625

65,8

>

−1,98

2,125

 

 

 

 

 

−1,98

2,125

 

Поскольку i=4= N − N0 , то вычисления завершаются.

Ответ: x* 2,125, f * −1,98.

Задачи

1. Определить с помощью сканирования минимум функ-

ции f (x) = −exp {−2(x −1)2} − 2 exp{−4(x − 3,2)2 }, заданной на отрезке ∆ = [0, 4] , при N=10.

2.

Определить с помощью

поиска с уточнением минимум

функции

f (x) = −exp {−2(x −1)2} − 2 exp{−4(x − 3,2)2 },

заданной

на отрезке ∆ = [0, 4] , при N=10, n=2, N1=6, N2=4.

 

3.

Определить с помощью поиска с разведкой минимум

функции

f (x) = −exp {−2(x −1)2} − 2 exp{−4(x − 3,2)2 },

заданной

на отрезке ∆ = [0, 4] , при N=10, N0=6.

56

6. ГРАДИЕНТНЫЕ МЕТОДЫ

Градиентные методы относятся к группе методов спуска, являющихся численными методами решения задач безусловной минимизации

f (x) → min, x Rn .

Исходя из заданной начальной точки x(0) , методы спуска

позволяют строить последовательность точек x(1) , x(2) ,…, удовлетворяющих условию

f (x(k ) ) < f (x(k −1) ), k = 1,2,...

(6.1)

Вобщей схеме методов спуска последовательность x(0) ,

x(1) , x(2) ,… приближений к точке минимума x* выбирается по

правилу

x(k ) = x(k −1) + λk h(k ) , k = 1,2,...,

где h(k ) − вектор, определяющий направление убывания функции f (x) (направление спуска) в точке x(k−1) ;

λk − скаляр, определяющий длину шага вдоль h(k ) .

Обычно название метода спуска определяется способом выбора h(k ) , а его различные варианты связываются с различными способами выбора λk .

Градиентные методы основаны на идее замены минимизи-

руемой функции в окрестности очередной точки x(k ) линейной частью ее разложения в ряд Тейлора. В градиентных методах в

качестве

направления

спуска h(k ) выбирается антиградиент

функции

f (x) в точке x(k−1) , т.е.

 

x(k )

= x(k −1) − λk f ′(x(k −1) ), k = 1,2,...

Таким образом, данные методы относятся к методам первого порядка.

Градиентные методы отличаются друг от друга способами

57

выбора параметра λk . На практическом занятии рассматриваются

два способа: первый называется методом с дроблением шага, второй – методом наискорейшего спуска.

.

Метод с дроблением шага

В данном случае в качестве

h(k ) используется нормиро-

ванный антиградиент (− f ′(x(k −1) ))

f ′(x(k −1) ) , т.е. x(k ) определя-

ется из соотношения

f ′(x(k −1) )

 

x(k ) = x(k −1) − λk

 

 

.

 

 

f ′(x(k −1) )

 

 

 

 

Величина λk выбирается так, чтобы выполнялось условие (6.1). Процесс выбора λk осуществляется следующим образом.

Выбираются некоторые константы α > 0 и 0<β<1 (часто β = 12 ).

На k-й, k=1,2,…, итерации проверяется выполнение условия (6.1) при λk =α. Если оно не выполняется, то производится дробление

шага, т.е. полагается λk =αβ и вновь проверяется выполнение условия (6.1). Процесс дробления, т.е. умножение текущего значения λk на β, продолжается до тех пор, пока условие (6.1) не ока-

жется выполненным.

Алгоритм решения задачи безусловной минимизации методом с дроблением шага заключается в следующем.

1. Задаются α, β, ε, x(0) ; вычисляются f (x(0) ) , f ′(x(0) ) , f ′(x(0) ) , полагается k=1.

2. Полагается λk =α.

3. Вычисляются

∆x( k ) = −λk

 

f

′

(x

(k −1)

)

 

, x(k ) = x(k−1) +

 

 

 

 

 

f

′(x(k −1)

)

 

 

 

 

 

 

 

 

+ ∆x(k} , f (x(k ) ).

 

 

58

 

 

 

 

 

 

 

 

 

 

4.

Проверяется условие выбора λk

:

 

 

 

f (x(k ) ) < f (x(k −1) ).

 

Если оно выполняется, то осуществляется переход к п.5.

Если условие не выполняется, то полагается

λk = λk β и

осуществляется переход к п.3.

 

 

 

 

 

 

 

 

 

5.

Вычисляются f ′(x(k ) ) ,

 

 

 

 

f ′(x(k ) )

 

 

 

.

 

 

 

 

 

 

6.

Проверяется условие окончания вычислений

 

 

 

 

f ′(x(k ) )

 

 

 

≤ ε.

 

 

 

 

x* x(k ) ,

 

 

 

 

 

 

 

 

 

Если

оно выполняется,

 

 

 

то

 

 

 

полагается

f * f (x(k ) )

и вычисления завершаются.

 

Если условие не выполняется, то полагается k=k+1 и осуществляется переход к п.2.

Отметим, что помимо рассмотренного применяется алгоритм, в котором в качестве начального значения λk используется

конечное значение λk −1 . При этом в п.1 рассмотренного алгоритма добавляется определение λ0 : полагается λ0 = α ; в п.2 алгоритма заменяется определение λk : полагается λk = λk −1.

Пример. Решить методом с дроблением шага задачу безусловной минимизации

f (x) = x12 + 2x22 − 4x1 + 2x2 → min при α = 1, β = 12 , ε = 0,3, x(0) = (1, 0).

Решение.

Находим первые частные производные f (x) :

∂f

= 2x − 4,

∂f

= 4x + 2.

 

 

1

2

∂x1

∂x2

Используем второй (упрощенный) вариант метода с дроблением шага.

Результаты вычислений заносим в табл. 6.1.

59

Таблица 6.1

 

 

 

Ном.

λ

∆x1

∆x2

x1

x2

 

f (x)

 

 

∂f

 

 

∂f

 

f ′

 

 

 

 

 

итер.

 

 

 

 

 

 

 

 

 

 

 

 

 

∂x1

 

 

∂x2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

1

0

 

 

−3

 

 

−2

 

2

 

2,83

 

 

1

1

0,707

−0,707

1,71

−0,707

 

−4,32

 

−0,586

 

−0,828

1,01

 

 

2

1

0,580

0,820

2,29

0,113

 

 

−3,67

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (x(2) ) > f (x(1) ) → λ = λβ = 0.5

 

 

 

 

 

 

 

 

 

 

 

 

2

0,5

0,290

0,410

2,00

−0,297

 

 

−4,42

 

0

 

 

0,812

0,812

 

 

3

0,5

0

−0,5

2,00

−0,797

 

 

−4,32

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (x(3) ) > f (x(2) ) → λ = λβ = 0.25

 

 

 

 

 

 

 

 

3

0,25

0

−0,25

2,00

−0,547

 

 

−4,496

 

0

 

 

−0,188

0,188

 

 

 

 

 

Поскольку

условие окончания вычислений

 

выполнено

(

 

f ′(x(3) )

 

= 0,188 < ε = 0,3), то вычисления завершаются.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В результате решения задачи безусловной минимизации

получаем x* x(3)

= (2; − 0,547), f *

f (x(3) ) = −4,496.

 

 

 

 

 

 

 

 

Ответ: x* (2; − 0,547),

f * −4,496 .

 

 

 

 

 

 

 

 

 

 

 

Метод наискорейшего спуска

В данном случае на каждой итерации шаг λk выбирается из условия минимума функции f (x) в направлении движения, т.е.

f(x(k −1) − λk f ′(x(k −1) )) = min ϕ(λ),

λ>0

где ϕ(λ) = f (x(k −1) − λf ′(x(k −1) )).

Такой способ выбора λk требует меньшего числа итера-

ций, чем предыдущий, поскольку он обеспечивает достижение наименьшего значения функции вдоль заданного направления. Однако в этом варианте градиентного метода на каждой итерации требуется решать задачу одномерной минимизации, что приводит

60

к увеличению трудоемкости итерации. Итак, метод наискорейшего спуска требует меньшего числа итераций, чем метод с дроблением шага, но каждая итерация сложнее реализуется.

Алгоритм решения задачи безусловной минимизации методом наискорейшего спуска заключается в следующем.

1. Задаются ε, x(0) ; вычисляются f (x(0) ) , f ′(x(0) ) , f ′(x(0) ) ; полагается k=1.

2.Определяется λk .

3.Вычисляются ∆x(k ) = −λk f ′(x(k −1) ), x(k ) = x(k −1) + ∆x(k ) ,

f(x(k ) ) , f ′(x(k ) ) , || f ′(x(k ) ) || .

4.Проверяется условие окончания вычислений

f ′(x(k ) ) ≤ ε.

Если оно выполняется, то полагается f * f (x(k ) ) и вычисления завершаются.

x* x(k ) ,

Если условие не выполняется, то полагается k=k+1 и осуществляется переход к п.2.

Пример. Решить методом наискорейшего спуска задачу безусловной минимизации

f (x) = x12 + 2x22 − 4x1 + 2x2 → min при ε = 0,3, x(0) = (1,0).

Решение.

Находим первые частные производные f (x) :

∂f

= 2x − 4,

∂f

= 4x

2

+ 2.

 

 

1

∂x2

 

∂x1

 

 

Первая итерация

Определяем λ1 :

x(0) − λ ∂f (x(0) ) = 1− λ(−2) = 1+ 2λ,

1 ∂x1

Соседние файлы в предмете Экономика