Сравнив два метода, мы видим, что для данной функции
лучше подходит метод дихотомии, т.к. он быстрее приводит к оптимальному
решению.
2 Прямые методы безусловной оптимизации многомерной
функции
Задача безусловной оптимизации состоит в нахождении
минимума или максимума функции в отсутствие каких-либо ограничений. Несмотря на
то что большинство практических задач оптимизации содержит ограничения,
изучение методов безусловной оптимизации важно с нескольких точек зрения.
Многие алгоритмы решения задачи с ограничениями предполагают сведение ее к
последовательности задач безусловной оптимизации.
Рассмотрим методы решения минимизации функции нескольких
переменных f, которые опираются только на вычисление значений функции f(x), не
используют вычисление производных, т.е. прямые методы минимизации. В основном
все методы заключаются в следующем. При заданном векторе х определяется
допустимое направление d. Затем, отправляясь из точки х, функция f
минимизируется вдоль направления d одним из методов одномерной минимизации.
Будем предполагать, что точка минимума существует. Однако в реальных задачах
это предположение может не выполняться.
Для изучения прямых методов безусловной оптимизации многомерной
функции была дана функция:
F(x1,x2)=a*x*y+(b*y+c*x)/x*y → min
a=5 b=3.5 c=2.5
x1=
x2=
2.1 Метод покоординатного циклического спуска
Суть метода заключается в том, что в начальном базисе
закрепляется значение одной координаты, а переменными считаются остальные, и по
этой координате производится одномерная оптимизация
базисная точка переносится в
,
базисная точка переносится в
Циклы повторяются до тех пор, пока в ε окрестности
найденной базисной точки будет улучшение функции. Решением поставленной задачи
является точка в ε окрестности которой
функция не принимает значение, лучшие, чем в этой точке.
Для решения поставленной задачи выбрано приближение
ε=0,01 α=0,15
Таблица 3 - Метод покоординатного циклического спуска
№ шага
x1
x2
Z(x1,x2)
α
0
2.1932884
1.6094917
20.7994602
0.5
1
1.6932884
1.6094917
17.2469375
0,5
2
1.1932884
1.6094917
14.0892956
0,5
3
0.6932884
1.6094917
12.1808992
0,5
4
0.6832884
1.6094917
12.1743085
0.01
5
0.6732884
1.6094917
12.1699126
0.01
6
0.6632884
1.6094917
12.1678107
0.01
7
0.6632884
1.1094917
11.2095884
0.5
8
0.6632884
1.0094917
11.1011539
0.1
9
0.6632884
0.9094917
11.041804
0,1
10
0.6632884
0.8094917
11.0497295
0,1
11
-0,183
0,827
-0,2137796
0,15
13
-0,183
0,677
-0,4082396
0,15
14
-0,183
0,527
-0,4631996
0,15
15
-0,108
0,527
-0,5887121
0,075
16
-0,033
0,527
-0,6860996
0,075
17
0,042
0,527
-0,7553621
0,075
18
0,117
0,527
-0,7964996
0,075
19
0,192
0,527
-0,8095121
0,075
20
0,192
0,452
-0,8409296
0,075
21
0,2295
0,452
-0,842513975
0,0375
22
0,2295
0,4145
-0,8479571
0,0375
α/2< ε, x1=0,2295 x2=0,4145 Z(x1,x2)=
-0,8479571
2.2 Метод Хука – Дживса
Метод Хука и Дживса осуществляет два типа поиска -
исследующий поиск и поиск по образцу. Первые две итерации процедуры показаны на
рисунке 4.
Рисунок 4 – 1-поиск по образцу; 2- исследующий поиск
вдоль координатных осей.
При заданном начальном векторе x1 исследующий поиск по
координатным направлениям приводит в точку x2 . Последующий поиск по образцу в
направлении x1- x2 приводит в точку y. Затем исследующий поиск, начинающийся из
точки y, дает точку x3. Следующий этап поиска по образцу вдоль направления x3-
x2 дает y*. Затем процесс повторяется.
Рассмотрим вариант метода, использующий одномерную
минимизацию вдоль координатных направлений d1,..., dn и направлений поиска по образцу.
Начальный этап. Выбрать число eps > 0 для остановки
алгоритма. Выбрать начальную точку x1, положить y1= x1, k=j=1 и перейти к
основному этапу.
Основной этап.
Шаг 1. Вычилить lymj - оптимальное решение задачи
минимизации f(yj+lym * dj) при условии lym принадлежит E1. Положить y[j+1]=
yj+lymj*dj. Если j < n, то заменить j на j+1 и вернуться к шагу 1. Если j=n,
то положить x[k+1] = y[n+1]. Если ||x[k+1] - xk|| < eps , то остановиться; в
противном случае перейти к шагу 2.
Шаг 2. Положить d = x[k+1] - xk и найти lym - оптимальное
решение задачи минимизации f(x[k+1]+lym*d) при условии lym принадлежит E1.
Положить y1= x[k+1]+lym*d, j=1, заменить k на k+1 и перейти к шагу 1. Для
решения поставленной задачи выбрано приближение ε=0,02, α=0,15
Таблица 4 - Метод Хука-Дживса
№ шага
x1
x2
Z(x1,x2)
1
1,147
1,257
5,0057324
2
1,127
1,237
4,7420444
3
1,107
1,217
4,4844364
4
1,087
1,197
4,2329084
5
1,067
1,177
3,9874604
6
1,047
1,157
3,7480924
7
1,027
1,137
3,5148044
8
1,007
1,117
3,2875964
9
0,987
1,097
3,0664684
10
0,967
1,077
2,8514204
11
0,947
1,057
2,6424524
12
0,927
1,037
2,4395644
13
0,907
1,017
2,2427564
14
0,887
0,997
2,0520284
15
0,867
0,977
1,8673804
16
0,847
0,957
1,6888124
17
0,827
0,937
1,5163244
18
0,807
0,917
1,3499164
19
0,787
0,897
1,1895884
20
0,767
0,877
1,0353404
21
0,747
0,857
0,887172399999997
22
0,727
0,837
0,745084399999997
23
0,707
0,817
0,609076399999996
24
0,687
0,796999999999999
0,479148399999997
25
0,667
0,776999999999999
0,355300399999997
26
0,647
0,756999999999999
0,237532399999997
27
0,627
0,736999999999999
0,125844399999997
28
0,607
0,716999999999999
0,0202363999999973
29
0,587
0,696999999999999
-0,0792916000000026
30
0,567
0,676999999999999
-0,172739600000002
31
0,546999999999999
0,656999999999999
-0,260107600000002
32
0,526999999999999
0,636999999999999
-0,341395600000002
33
0,506999999999999
0,616999999999999
-0,416603600000002
34
0,486999999999999
0,596999999999999
-0,485731600000002
35
0,466999999999999
0,576999999999999
-0,548779600000002
36
0,446999999999999
0,556999999999999
-0,605747600000002
37
0,426999999999999
0,536999999999999
-0,656635600000002
38
0,406999999999999
0,516999999999999
-0,701443600000001
38
0,426999999999999
0,496999999999999
-0,699011600000001
Т.к в ε окрестности полученной на 38 шаге точке мы
не получаем улучшения (уменьшения значения) функции, то примем
x1=0,426999999999999 x2=0,496999999999999,