Материал: Бородакий Нелинейное программирование в современных задачах оптимизации 2011

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Вход

Исходные данные a, b, ε1, ε2, f (x)

= b a

 

 

 

 

 

 

xc = a + 0,5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вычисление

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (xc )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (xc )

 

≤ ε1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Нет

 

Да

 

 

 

 

 

b = xc

 

 

 

 

 

f ′ < 0

 

 

a = xc

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= b a

 

 

 

 

 

 

 

 

 

 

 

 

Да

 

 

 

 

 

 

 

Нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

≤ε2

 

 

 

 

a = xc

Рис. 1.10. Блок-схема алгоритма метода дихотомии

 

 

 

 

 

Выход

31

1.2.3.3. Метод парабол (метод полиномиальной аппроксимации)

Идея метода весьма проста: если на отрезке [a, b] , внутри

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

приближенное значение x целесообразно взять точку минимума этого многочлена. В случае, когда функция гладкая и

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

достаточно

 

малой

длины,

содержащий x (например, после

нескольких шагов по методу золотого сечения).

 

 

Пусть

известны

три

значения x1 < x2 < x3 ,

 

таких, что

f (x )> f (x

)< f (x

). В

этом случае x [x , x

3

]. Построим

1

2

3

 

1

 

многочлен второго порядка, который проходит через три данные точки (рис. 1.11).

Рис. 1.11. Графическое представление функции f (x) = α0 + α1x + α2x2

32

Коэффициенты α0 , α1 , α2 определяются из системы уравнений:

f (x )= α + α x + α x2 ,

1 0 1 1 2 1

f (x2 )= α0 + α1 x2 + α2 x22 ,f (x3 )= α0 + α1 x3 + α2 x32 .

Минимум полинома определяется из условия

df (x)

 

= α + 2α

2

xˆ* = 0 .

 

dx

 

1

 

 

x=xˆ*

 

 

 

 

 

Откуда получаем

xˆ = − α1 . 2α2

Найдя α1 и α2 из линейной системы уравнений, получим

 

1

 

 

1

f (x1 )

 

 

xˆ* = −

 

 

1

f (x2 )

2

 

 

 

1

f (x3 )

x12

 

 

 

1

x1

f (x1 )

 

 

 

 

 

 

 

x22

 

 

 

1

x2

f (x2 )

 

=

 

x32

 

 

 

1

x3

f (x3 )

 

 

(*)

=1 (x22 x32 ) f (x1 )+ (x32 x12 ) f (x2 )+(x12 x22 ) f (x3 ).

2 (x2 x3 ) f (x1 )+ (x3 x1 ) f (x2 )+(x1 x2 ) f (x3 )

Алгоритм метода парабол.

x1 < x2 < x3 ,

 

 

1.

Найти

 

тройку

чисел

таких,

что

f (x1 )> f (x2 )< f (x3 )

(это можно

сделать, например, используя

алгоритм поиска отрезка, содержащего точку минимума).

 

2.

Вычислить оценку xˆ

по формуле (*).

 

 

3.

Если

 

xˆ* x

 

≤ ε , закончить

процесс, положив x* = xˆ* . В

 

 

 

 

 

2

 

 

 

 

 

 

 

противном случае – вычислить f (xˆ* ).

 

 

4.

Из чисел x ,

x ,

x , xˆ*

выбрать необходимую тройку чисел и

 

 

1

2

3

 

 

 

 

перейти к шагу 2.

33

Контрольные задачи

Задача 1. Методом удвоения шага найти отрезок, содержащий точку минимума функции f (x) = (x 5)2 . В качестве начальной точки взять: 1) x0 = 3 ; 2) x0 = 7 . Составить блок-схему алгоритма.

Задача 2. Методом золотого сечения найти точку минимума функции

f (x) = (x 5)2

с погрешностью ε = 0,1.

 

Задача 3.

Методом дихотомии найти точку минимума функции

f (x) = (x 5)2

с погрешностью ε = 0,1. Сравнить скорость сходимости

метода дихотомии и «метода золотого» сечения для данного примера.

Задача 4.

Найти точку минимума функции

f (x) = (x 5)2 методом

парабол с погрешностью менее 10 %.

 

Задача 5.

Найти точку минимума функции

f (x) = (x 5)2 методами:

Фибоначчи, Ньютона и методом касательных с погрешностью менее 5 %. Сравнить полученные результаты.

1.3. Минимизация функций без ограничений (безусловная минимизация)

Перейдем к изучению методов нахождения минимума функции многих переменных f (x1 , , xn ) по всему пространству R n , т.е. при условии, что при поиске экстремума каждая из переменных xi может принимать значения от –∞ до +∞. Допустим, что f (x)

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

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

Все методы безусловной минимизации сводятся к нахождению последовательности точек x0 , x1 , , x n , значения функции в которых убывают:

34

 

 

f (x0 ) > f (x1 ) >

> f (xn ) .

 

(1.1)

Эти

методы

называются

методами

спуска

(или

релаксационными методами).

При получении таких последовательностей точек в задачах с ограничениями, прежде всего, необходимо выбрать начальную точку x0 , удовлетворяющую всем ограничениям.

В задаче без ограничений можно в качестве x0 взять любую точку. При этом, конечно, нужно использовать любую имеющуюся информацию о поведении функции f (x) с тем, чтобы выбрать x0

не слишком далеко от точки минимума.

После того, как какая-то точка выбрана, необходимо:

1)выбрать направление, вдоль которого предполагается расположить следующую точку;

2)решить, какой величины шаг должен быть сделан в выбранном направлении.

При любом методе спуска последовательность точек выглядит так:

xk +1 = xk + λk Sk ,

(1.2)

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

Для задач без ограничений любое направление является возможным, однако не все направления приемлемы. Приемлемым называется такое направление Sk, для которого выполняется условие

f (xk ), Sk < 0 ,

(1.3)

Действительно, для достаточно малых λk можно написать разложение функции в ряд Тейлора

f (xk + λSk ) f (xk ) + λ f (xk ), Sk .

(1.4)

если этот член < 0, то f ( xk Sk )< f ( xk )

Все методы спуска можно разбить на две группы:

1) прямые методы, или методы нулевого порядка – методы,

использующие только значения функций;

35

Источник: https://studfile.net/preview/16708738/