Поиск точки min методом деформируемого симплекса
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

 

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

 

(3.5)

 

Так как величина a Î (0; 1), то выбор точек z1 и z2 соответствует сжатию симплекса; b » 1, поэтому выбор точки z3 соответствует отражению, а g > 1 и выбор точки z4 приводит к растяжению симплекса. На практике хорошо зарекомендовал себя следующий набор параметров a, b и g для выбора пробных точек zi: a = 1/2, b = 1 и g =2.

 

 

 

Рис. 3.2. Пробные точки z1,z2,z3,z4 для перехода к новому симплексу



Рис. 3.3. Новые симлексы полученные в результате процедур сжатия (а,б); отражения (в); растяжения(г).

 

Опишем алгоритм метода поиска точки минимума функции по деформируемому симплексу.

Шаг 0 – Шаг 3 Аналогичны методу правильного симплекса.

Шаг 4. Найти и пробные точки zk , k =1, …, 4 пo формулам (3.5). Найти f (z*)= min f (zk). Если f (z*) < f (zn). то положить xn=z* и перейти к шагу 2. Иначе – перейти к шагу 5.

 



Поиск точки min методом циклического покоординатного спуска

 

 

 

Этот метод заключается в последовательной минимизации целевой функции f (x) сначала по направлению первого базисного вектора е1, затем второго – е2 и т.д. После окончания минимизации по направлению последнего базисного вектора еn цикл повторяется.

Опишем этот алгоритм.

Шаг 0. Выбрать х Î En , критерий достижения точности, величину e. Найти f (x), положить j = 1.

Шаг 1. Решить задачу одномерной минимизации Ф(a) = f (х + aеj)® min, a Î R, т.е. найти a*. Положить = х +a*еj, вычислить f (х).

Шаг 2. Если j < п, то положить х = , j=j+1 и перейти к шагу 1, иначе – перейти к шагу 3.

Шаг 3. Проверить условие достижения точности ||х– || < e

 

Поиск точки min методом Хука – Дживса

 

Этот алгоритм содержит две основные процедуры:

а) исследующий покоординатный поиск в окрестности данной точки, предназначенный для определения направления убывания f (х);

б) перемещение в направлении убывания.

Опишем алгоритм исследующего покоординатного поиска из заданной точки х с приращениями по каждой координате Dj , j = 1, …, n

Шаг 1. Положить  = x , i = 1.

Шаг 2. Сделать пробный шаг y= – Dje j, где e j –j–й базисный вектор. Если f ( ) £ f (y), то перейти к шагу 3, иначе – к шагу 4.

Шаг 3. Сделать пробный шаг y= +Dje j . Если f ( ) £ f (y), то перейти к шагу 5, иначе – к шагу 4.

Шаг 4. Положить = у.

Шаг 5 . Положить j = j + 1. Если j £ n, то перейти к шагу 2. В противном случае исследующий поиск окончен – получена точка  для которой f ( ) < f (y), если  ¹ х.

 

Пример решения методами правильного симплекса, деформируемого симплекса, покоординатного спуска, Хука – Дживса

Дана функция , с=7; d=7.

Найти минимум функции с точностью ε=0,001

Метод правильного симплекса

Выбираем длину стороны треугольника l=10ε=0,0001

Вершины треугольника находим следующим образом:

 

A( );

B( );

D( ).

A(1,065; 0,918);

B(1,07,0,927);

D(1,075,0,918).

 

Шаг 0

 

F(A)=10,903; F(B)=11,081; F(D)=11,051.

F1<F2<F3:

F1=F(A); F2=F(D); F3=F(B).

 

Отражаем вершину 3 относительно центра тяжести.

 

F(E)=10,873.

 

Значение функции в найденной точке меньше, значения функции в точке 1, поэтому принимаем новый симплекс (1,2,E).

Шаг 1


F(1)=10,903; F(2)=11,081; F(E)=10,873.

F1<F2<F3:

F1=F(E); F2=F(1); F3=F(2).

 

Отражаем вершину 3 относительно центра тяжести.

 

F(E)=10,726.

 

Значение функции в найденной точке меньше, значения функции в точке 1, поэтому принимаем новый симплекс (1,2,E).

 

,

.

 

В результате получаем x1=0,125, x2=0,208, f(x1, x2)=-0,41.

Метод деформируемого симплекса

Выбираем длину стороны треугольника l=5ε=0,005

Вершины треугольника находим следующим образом:

 

A( );

B( );

D( ).

A(1,065; 0,918);

B(1,07,0,927);

D(1,075,0,918).

 

Принимаем коэффициенты выбора пробных точек k1=0,5, k2=1, k3=2.

Шаг 0

 

F(A)=10,903; F(B)=11,081; F(D)=11,051.

F1<F2<F3:

F1=F(A); F2=F(D); F3=F(B).

 

Находим центр тяжести вершины 3 относительно вершин 1 и 2:

 

 

Выбираем пробные точки:

 

F(z1)=10,966.

F(z2)=11,018.

F(z3)=11,044.

F(z3)=11,097.


Значение функции в z1 точке меньше, значения функции в точке 3, поэтому принимаем новый симплекс (1,2,z1).

Шаг 1

 

F(1)= 10,903; F(2)= 11,051; F(z1)=10,966.

F1<F2<F3:

F1=F(1); F2=F(z1); F3=F(2).

 

Выбираем пробные точки:

 

F(z1)=10,955.

F(z2)=10,998.

F(z3)=11,019.

F(z3)=11,062.

Значение функции в точке z1 меньше, значения функции в точке 3, поэтому принимаем новый симплекс (1,2,z1).

 

,

.

 

В результате получаем x1=-0,012, x2=0,419, f(x1, x2)=-0,014.

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

 

(1,065; 0,918).

α=5ε=0,005.

 

Шаг 1

Координату  закрепляем,

 

Т.к. ,

 

Следовательно

 

 

Получим x1=0,012,

Шаг 2

Принимаем  и закрепляем,

 

Т.к. ,

 

Получим x2=0,199,

Продолжаем поиск до тех пор, пока не будет выполнено условие

В результате получаем x1=0,117, x2=0,189, f(x1, x2)=-0,411.

Метод Хука-Дживса

 

x0: (1,065; 0,918).

Δ1=5*ε=5*0,001, Δ2=5*ε=5*0,001.

λ=2.

 

Шаг 1

Принимаем k1=-1, k2=-1 – коэффициенты, определяющие направление поиска.

 

 

В данном направлении функция убывает.

Шаг 2

Принимаем k1=-1, k2=-1.

 

 

В данном направлении функция убывает.

Продолжаем поиск до тех пор, пока не будет выполнено условие

В результате получаем x1=0,115, x2=0,198, f(x1, x2)=-0,411.

 





Дата: 2019-05-29, просмотров: 187.