Новокузнецк
2018
УДК 519.8(07)
248
Составитель Рыбенко
Инна Анатольевна
Рецензент
кандидат технических наук,
доцент кафедры прикладной математики и информатики
СибГИУ
О. Л. Базайкина
© Сибирский государственный
индустриальный университет, 2018
2
СОДЕРЖАНИЕ
1. ОБЩИЕ ПОЛОЖЕНИЯ ....................................................... 4
2. ТЕОРЕТИЧЕСКИЕ АСПЕКТЫ МЕТОДОВ
МНОГОМЕРНОЙ ОПТИМИЗАЦИИ. АЛГОРИТМЫ И
ПРИМЕРЫ РЕШЕНИЯ ............................................................... 7
2.1 Поисковые методы .............................................................. 7
2.1.1 Метод сканирования ........................................... 7
2.1.2. Метод циклического покоординатного поиска
Гаусса-Зейделя ...................................................................... 8
2.1.3 Метод прямого поиска Хука-Дживса ............. 10
2.1.4 Метод Розенброка ............................................. 14
2.2 Методы поиска экстремума функции, использующие
расчет значений функции в вершинах многогранника ....... 21
2.2.1. Симплекс метод................................................ 21
2.2.2. Метод Нелдера и Мида ................................... 26
2.3 Методы с использованием производных 1-го порядка 30
2.3.1 Градиентный метод........................................... 30
2.3.2 Метод наискорейшего спуска .......................... 33
2.3.3 Метод крутого восхождения ............................ 35
2.4 Методы с использованием производных 2-го порядка . 39
2.4.1 Метод сопряженных направлений .................. 39
3. ПОРЯДОК ВЫПОЛНЕНИЯ ПРАКТИЧЕСКИХ РАБОТ43
4. ЗАДАНИЯ НА САМОСТОЯТЕЛЬНУЮ РАБОТУ ........ 43
БИБЛИОГРАФИЧЕСКИЙ СПИСОК ...................................... 45
3
1. ОБЩИЕ ПОЛОЖЕНИЯ
Решение оптимизационной задачи в общем случае
заключается в определении таких значений входных
переменных исследуемого объекта, которым соответствует
наилучшее (минимальное или максимальное) значение
целевой функции. Технологические системы, как правило,
являются многомерными, с большим количеством входных
факторов, на значение которых к тому же накладываются
дополнительные ограничения. Это требует использования
методов многомерной условной оптимизации, большинство
которых сводится к решению задачи безусловной
оптимизации путем преобразования целевой функции с
дальнейшим применением соответствующих процедур.
Поэтому изучение методов поиска экстремума функций
нескольких переменных без ограничений является не менее
важной задачей [1 - 3].
В настоящих рекомендациях рассматривается
постановка задачи многомерной безусловной оптимизации,
аналитический анализ целевой функции, теоретические
основы часто используемых на практике численных методов.
Для наилучшего понимания сущности и особенностей этих
методов, формирования навыков корректного задания
входных параметров их работа иллюстрируется на примере
функций двух переменных, когда возможна геометрическая
интерпретация решения задачи.
Постановка задачи многомерной оптимизации
заключается в нахождении для функции n действительных
переменных
f(x1, x2, x3, …, xn) = f(X), xEn
компонентов вектора X*, которые дают условие
f(X*) = min(max) f(X).
Рассматривая локальный X0 и глобальный X*
экстремумы функции можно отметить их особенности.
4
Функция f(X) имеет локальный минимум в точке X0, если
существует окрестность такая, что f(X) больше f(X0) во всех
точках этой окрестности. В случае глобального минимума в
точке X* для всех X справедливо неравенство f(X) f(X*) [1,2].
Аналитический анализ функции. Необходимым
условием экстремума в точке X0 является уравнение f(X0)=0,
т.е. f(X0)/xi =0 (i =1, …, n).
Необходимыми и достаточными условиями минимума
являются: f(X0)=0; H(X0) положительно определена.
Необходимыми и достаточными условиями максимума
являются: f(Xm)=0; H(Xm) отрицательно определена.
H(X0(m)) матрица Гессе, представляющая
квадратичную матрицу вторых частных производных f(X),
взятых в точке X0(m).
2 f X 0( m )
2 f X 0( m)
x12 x1x n
H(X0(m)) = .
2 f X
0( m )
2 f X 0( m)
x n x1 x n
2
Построение линий уровня. Область f(X), в которой
осуществляется нахождение оптимального решения,
представляет некоторую поверхность в многомерном
пространстве. Поверхность отклика наглядно можно
представить для одномерного и двумерного случаев. Для
графического представления функций двух переменных
используют линии уровня, которые представляют собой
множество точек, для которых целевая функция имеет
постоянное значение. В топологии поверхности оптимума
выделяют несколько характерных видов: круговой холм,
эллиптический холм, симметричное или вытянутое седло,
стационарный или спадающий овраг и др.
5
Для построения линий уровня в двумерном случае
необходимо выразить одну переменную через другую
переменную и целевую функцию x1=F(x2, f(x1, x2)). Затем,
задав значение функции и, варьируя одну из переменных,
рассчитать значение другой переменной. По полученным
точкам строят линию уровня. Затем необходимо изменить
значение функции и вновь повторить процедуру. Операция
повторяется столько раз, сколько необходимо провести
линий уровня [4].
Классификация методов. Выделяют два класса
методов: поисковые, методы нулевого порядка, и методы с
использованием производных [1 - 4].
В поисковых методах в расчетах используется только
значение функции, поэтому их ещё называют методами
нулевого порядка. По принципу построения направлений
движения поисковые методы можно разделить на две
группы. Первая группа основана на одномерном линейном
поиске вдоль направлений. К этой группе относятся
следующие методы: сканирования, покоординатного и
прямого поиска, Розенброка, случайного поиска и др. Вторая
группа методов нулевого порядка предполагает расчет
значений функции в вершинах многогранника: симплекса
или комплекса. Здесь следует выделить методы: обычный
симплекс-метод, метод Нелдера и Мида, комплекс-методы.
Методы с использованием производных делятся также
на две группы: первого и второго порядка. К методам
первого порядка, в которых используются только расчеты
значений функции и первых частных производных, относятся
методы: градиентный, Бокса-Уилсона и наискорейшего
спуска. К методам второго порядка, в которых используются
и первые, и вторые частные производные, относятся метод
Ньютона и его модификации, методы сопряженных
направлений, сопряженных градиентов, переменной метрики
и др.
6
Целью выполнения лабораторно-практических
работ является: формирование навыков решения
оптимизационных задач с использованием различных
методов поиска экстремума функции нескольких
переменных. Ниже рассматриваются теоретические аспекты
методов и работа некоторых алгоритмов при нахождении
минимального значения целевой функции.
2. ТЕОРЕТИЧЕСКИЕ АСПЕКТЫ МЕТОДОВ
МНОГОМЕРНОЙ ОПТИМИЗАЦИИ.
АЛГОРИТМЫ И ПРИМЕРЫ РЕШЕНИЯ
7
2.1.2. Метод циклического покоординатного поиска
Гаусса-Зейделя
Метод Гаусса-Зейделя или циклического
покоординатного поиска заключается в том, что на итерациях
по каждой переменой определяется минимум целевой
функции вдоль направления координатных осей. Поиск по
направлениям, совпадающим с координатными осями, можно
проводить любым известным методом одномерной
оптимизации, например, методом золотого сечения или
обратного переменного шага. Таким образом, задача
сводится к многократному использованию метода
одномерной оптимизации. Очередность варьирования
переменных обычно устанавливается произвольно и в
процессе поиска не меняется. Точность поиска проверяется
по сравнению значений переменных или функции на (k + 1) и
(k) итерациях [5 - 6].
Алгоритм метода Гаусса-Зейделя.
Начальный этап. Выбрать начальную точку X(1), и 0
точность поиска. Пусть S11 ,, S n1 единичные
координатные направления. Положить Y(1) = X(1), k=j=1 и
перейти к основному этапу.
Основной этап. Шаг 1. Любым методом одномерной
оптимизации найти j* оптимальное решение задачи
минимизации функции f(Y(j) + j S jk ) и положить
Y(j+1) = Y(j) + * S k . Если j n, то заменить j на j+1 и
j j
вернуться к шагу 1. Если j=n, то перейти к шагу 2.
Шаг 2. Положить X(k+1) = Y(n). Если ||X(k+1) - X(k)|| , то
остановиться; в противном случае положить Y(1) = X(k+1),
заменить k на k + 1, положить j = 1 и перейти к шагу 1.
Пример расчета экстремума функции методом
циклического координатного поиска Гаусса-Зейделя.
Постановка задачи. Определить экстремум функции
f(X) = (x1-2)4+(х1-2х2)2 с точностью =0,025 для начального
приближения Х(1)=[2,5; 2,5].
8
Расчет экстремума методом Гаусса-Зейделя для данной
задачи реализован средствами Excel. Результаты расчета
представлены в таблице 2.1. На рисунке 2.1 приведены линии
уровня для данной функции и траектория поиска.
9
3.0
X0
2.5
*
2.0
1.5
X* *
1.0
x2
0.5
0.0
-0.5
-1.0
0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0
x1
10
поиск, найдена точка X(2). Поиск по образцу осуществляется
вдоль направления, соединяющего X(2) и X(1). Совершается
один или несколько шагов до тех пор, пока шаги являются
“удачными”. Применяют две модификации метода прямого
поиска:
в исследующем поиске используется одномерная
минимизация вдоль координатных направлений;
исследующий поиск осуществляется на основе
дискретных шагов по направлениям [5 - 6].
Алгоритм метода Хука-Дживса с минимизацией по
направлению.
Начальный этап. Выбрать начальную точку X(1), и 0
скаляр, используемый в критерии остановки. Пусть
S11 ,, S n1 единичные координатные направления, α –
коэффициент сжатия шага. Положить Y(1) = X(1), k = j = 1 и
перейти к основному этапу.
Основной этап. Шаг 1. Любым методом одномерной
оптимизации найти j* оптимальное решение задачи
минимизации функции f(Y(j) + j S jk ) при условии и
положить Y(j+1) = Y(j) + * S k . Если j n, то заменить j на j + 1
j j
и вернуться к шагу 1. Если j=n, то перейти к шагу 2.
Шаг 2. Положить X(k+1) = Y(n). Если ||X(k+1) - X(k)|| , то
остановиться; в противном случае вычислить шаг
а=||X(k+1) - X(k)|| ·α, Y(1) = X(k), заменить k на k + 1, положить
j = 1 и перейти к шагу 3.
Шаг 3. Вычислить Y(j+1) = Y(j)+a и f(Y(j)), f(Y(j+1)). Если f(Y(j+1) )<
f(Y(j)), то положить j=j+1 и вернуться к шагу 3. Иначе
положить X(k)= Y(j) ,j=1, Y(1) = X(k), и вернуться к шагу 1.
Пример расчета экстремума функции методом
прямого поиска Хука-Дживса.
Постановка задачи. Определить экстремум функции
f(X)=(x1-2)4+(x1-2x2)2 с точностью =0,25 для начального
приближения Х(0)=[2,5; 2,5].
11
Расчет экстремума методом Хука-Дживса для
поставленной задачи реализован средствами Excel.
Результаты расчета представлены в таблице 2.2, а траектория
поиска приведена на рисунке 2.2.
Таблица 2.2 Результаты расчетов минимума функции
f(X)=(x1-2)4+( x1- 2x2)2 методом Хука-Дживса
Исследующий поиск
№ х1 х2 f(X) S1 S2 λ1 λ2
2,500 2,500 6,313
1 0,500 -1,000 0,050 -0,100
3,000 1,500 1,000
Поиск по образцу
№ х1 х2 f(X) λ1 λ2 ||X(k+1) - X(k)|| Критерий
1 2,500 2,500 6,3125 0.05 -0.1 1.006 Не
2 2,550 2,400 5,1540 достигнут
3 2,600 2,300 4,1296
4 2,650 2,200 3,2410
5 2,700 2,100 2,4901
6 2,750 2,000 1,8789
7 2,800 1,900 1,4096
8 2,850 1,800 1,0845
9 2,900 1,700 0,9061
10 2,950 1,600 0,8770
11 3,000 1,500 1,0000
Исследующий поиск
№ х1 х2 f(X) S1 S2 λ1 λ2
2,950 1,600 0,8770
2 -0,300 -0,275 -0,0300 -0,0275
2,650 1,375 0,1885
Поиск по образцу
№ х1 х2 f(X) λ1 λ2 ||X(k+1) - X(k)|| Критерий
1 2,950 1,600 0,8770 -0,03 -0,0275 0,6915 Не
2 2,920 1,573 0,7670 достигнут
3 2,890 1,545 0,6674
4 2,860 1,518 0,5777
5 2,830 1,490 0,4971
12
6 2,800 1,463 0,4253
7 2,770 1,435 0,3616
8 2,740 1,408 0,3055
9 2,710 1,380 0,2566
10 2,680 1,353 0,2144
11 2,650 1,325 0,1785
12 2,620 1,298 0,1484
13 2,590 1,270 0,1236
14 2,560 1,243 0,1039
15 2,530 1,215 0,0888
16 2,500 1,188 0,0780
17 2,470 1,160 0,0712
18 2,440 1,133 0,0680
19 2,410 1,105 0,0681
Исследующий поиск
№ х1 х2 f(X) S1 S2 λ1 λ2
2,440 1,133 0,0680
3 -0,201 -0,013 -0,0201 -0,0013
2,239 1,119 0,0033
Поиск по образцу
№ х1 х2 f(X) λ1 λ2 ||X(k+1) - X(k)|| Критерий
1 2,440 1,133 0,0680 -0,020 -0,0013 0,2215 Достигнут
2 2,420 1,131 0,0558
3 2,400 1,130 0,0451
4 2,380 1,129 0,0357
5 2,360 1,127 0,0277
6 2,339 1,126 0,0209
7 2,319 1,125 0,0153
8 2,299 1,123 0,0108
9 2,279 1,122 0,0073
10 2,259 1,121 0,0048
11 2,239 1,119 0,0033
12 2,219 1,118 0,0026
13 2,199 1,117 0,0028
13
Таким образом, из таблицы видно, что экстремум
найден на третьей итерации, точка [2,219;1,118] является
минимумом заданной функции с точностью 0,25.
3.0
X0
2.5
*
2.0
1.5
X* *
1.0
x2
0.5
0.0
-0.5
-1.0
0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0
x1
14
единичный вектор направления S1( 2) совпадает с вектором
перехода из X(1) в X(2), а S 2( 2) достраивается ортогонально к
S1( 2) . В общем случае набор ортонормированных векторов
S1( k 1) ,..., S n( k 1) на (k+1)-м этапе вычисляется при помощи
следующих соотношений
( k 1) a1( k )
S1 ;
(k )
a1
b2( k ) a2( k ) a2( k )
T
S1( k 1) S1( k 1) ;
( k 1) b2( k )
S2 ;
(k )
b2
...............................
n 1
bn an an( k ) Si( k 1) Si( k 1) ;
(k ) (k ) T
i 1
bn( k )
S n( k 1) ,
bn( k )
где ||ai|| норма ai, являющаяся вектором перехода из X(k) в
X(k+1) по направлениям.
Векторы ai рассчитываются по формуле:
a1( k ) 1( k ) S1( k ) 2(k ) S 2( k ) ... n(k ) S n( k ) ;
15
Алгоритм метода Розенброка с минимизацией по
направлению.
Начальный этап. Пусть 0 скаляр, используемый в
критерии остановки. Выбрать в качестве S11 ,, S n1
координатные направления, начальную точку X(1), положить
Y(1) = X(1), k=j=1 и перейти к основному этапу.
Основной этап. Шаг 1. Найти j* оптимальное решение
задачи минимизации f(Y(j)+j S jk ) и положить
Y(j+1) = Y(j)+ * S k . Если j n, то заменить j на j+1 и вернуться
j j
к шагу 1. В противном случае перейти к шагу 2.
Шаг 2. Положить X(k+1)=Y(n+1). Если ||X(k+1)-X(k)||, то
остановиться; в противном случае положить Y(1)=X(k+1),
заменить k на k +1, положить j=1 и перейти к шагу 3.
Шаг 3. Построить новое множество линейно независимых и
взаимно ортогональных направлений в соответствии с
формулами, приведенными выше. Обозначить новые
направления через S1k ,, S nk и вернуться к шагу 1.
Алгоритм метода Розенброка с дискретным шагом.
Начальный этап. Выбрать число 0 для остановки
алгоритма, коэффициент растяжения 1 и коэффициент
сжатия (-1, 0). Взять в качестве S11 ,, S n1 координатные
направления и выбрать 1, …, n0 начальную длину шага
вдоль каждого из направлений. Выбрать начальную точку
X(1), положить Y(1)=X(1), k=j=1. При этом X(k) координаты
минимальной точки на k-той итерации, Y(j) координаты
точки на j-том шаге каждой итерации. Перейти к основному
этапу.
Основной этап. Шаг 1. Если f(Y(j) + j S jk ) f(Y(j)), то шаг по
j-му направлению считается “успешным”. Положить
Y(j+1) =Y(j) + j S jk и заменить j на j. Если же
16
f(Y(j) + j S jk ) f(Yj), то шаг считается “неудачным”.
Положить Y(j+1) = Y(j) и заменить j на j. Если jn, то
заменить j на j+1 и вернуться к шагу 1. В противном случае,
т.е. при j=n перейти к шагу 2.
Шаг 2. Если f(Y(n+1)) f(Y(1)), т. е. если хотя бы один спуск по
направлению на шаге 1 оказался успешным, положить Y(1) =
Y(n+1), j = 1 и повторить шаг 1. Пусть f(Y(n+1)) = f(Y(1)), т.е.
каждый из n последних спусков по направлению на шаге 1
был неудачным. Если f(Y(n+1)) f(X(k)), т.е., по крайней мере,
один удачный спуск встретился в течение k-й итерации на
шаге 1, то перейти к шагу 3. Если f(Y(n+1)) = f(X(k)), т.е. не
было не одного удачного спуска по направлению, то
остановиться. При этом X(k) является приближенным
оптимальным решением, если |j| для всех j. В противном
случае положить Y(1) = Y(n+1), j = 1 и перейти к шагу 1.
Шаг 3. Положить X(k+1) = Y(n+1). Если ||X(k+1) - X(k)|| , то
остановиться; X(k+1) приближенное оптимальное решение. В
противном случае вычислить 1, …, n из соотношения
n
X k 1
X S k
k
построить новые направления,
j j
j 1
обозначить их через S1k 1 ,, S nk 1 положить Y(1) = X(k+1),
заменить k на k + 1 положить j = 1 и перейти к шагу 1.
Дискретные шаги выбираются вдоль n направлений
поиска на шаге 1. Если движение вдоль Sj оказалось
успешным, то j заменяется на j, если же на этом
направлении постигла неудача, то j заменяется на j. Так
как 0, то неудача приводит к сдвигу в обратном
направлении вдоль j-го вектора на следующей реализации
шага 1. Шаг 1 повторяется до тех пор, пока неудача будет
иметь место при спуске по каждому направлению поиска. В
этом случае строятся новые направления поиска.
17
Пример расчета экстремума функции методом
Розенброка с дискретным шагом.
Постановка задачи. Минимизировать f(X) = (x1-2)4+(х1-2х2)2 с
точностью =0,01. Эта функция имеет минимум в точке
X* = [2,0; 1,0]Т, где f(X) =0. Выбираем начальное приближение
X(1) = [2,5; 2,5]Т и параметры алгоритма: 1 = 2 = 0,5; = 3;
= 0,5; направления начального поиска совпадают с
координатными осями S11 = [1; 0]Т, S 21 = [0; 1]Т.
Исследующий поиск.
Вычислим f(Y(2)) в точке 2
2,5 0,5 1 3,0
Y(2) =
2,5
2,5 0 ,5 0
(2)
Здесь f(Y ) = 5,0, т.е. имеет место “удача”, поэтому шаг по х1
увеличивается 1 = 30,5 =1,5. Затем вычисляем f(Y(3)) в точке
3:
3,0 0,5 0 3,0
Y(3) =
3,0
2,5 0 , 5 1
(3)
Здесь f(Y ) = 10,0, т. е. “неудача”, поэтому шаг по х2
уменьшается и направление изменяется на противоположное
2 = -0,50,5 = -0,25.
При наличии одной “удачи” поиск продолжаем. Считаем Y(1)
= Y(3).
Вычисляем f(Y(2)) в точке 4:
3,0 1,5 1 4,5
Y(2) =
2,5
2,5 1 ,5 0
(2)
Здесь f(Y )=39,31, что говорит о “неудаче”, поэтому
величина шага уменьшается 1 = -1,50,5 = -0,75.
Рассчитываем f(Y(3)) в точке 5:
3,0 0,25 0 3,00
Y(3) =
2,25
2,5 0 , 25 1
(5)
Здесь f(Y ) = 3,25. Следовательно, шаг является успешным,
2 = 30,25 = 0,75.
18
Поиск продолжается аналогичным образом до 9-ой
точки. На этом первый исследующий поиск заканчивается,
т.к. два последних расчета 8 и 9 неудачны. В качестве
результата принимается координата [3,0; 1,5] точки 7,
которая обозначается за X(2) = Y(1).
Построение новых направлений поиска. Новое направление
S12 совпадает с вектором перехода из X(1) в X(2), а S 22
достраивается ортогонально к S 2 . Рассчитаем единичные
1
направления S j2 и векторы а1(1) и а2(1).
Определяем составляющие шага 1 вектора перехода из
X(1) = [2,5; 2,5]Т в X(2) = [3,0; 1,5]Т:
11 =3,0 - 2,5=0,5, 21 =1,5-2,5=-1,0.
Находим компоненты векторов
1 0 0,5 0 0
а1(1) = 0,5 1 ; а2(1) = -1 ;
0 1 1 1 1
Рассчитываем направления S 2 и S 2
1 2
S 2
0,5 1
=[0,45-0,89]T
1
0,52 12 12
0 0,45 0,45 0,4
b2(1)= 0 1 0,89 0,21 ;
1 0,89
S 22
0,4 0,21
0,89
0,42 0,212 2 0,47
1
19
Таблица 2.3 Расчет минимума функции
f(X) = (x1-2)4+(х1-2х2)2 методом Розенброка
1. Исследующий поиск
№ x1 x2 s1 s2 f(x)
1 2,50 2,50 6,313
2 3,00 2,50 0,50 0,00 5,000
3 3,00 3,00 0,00 0,50 10,000
4 4,50 2,50 1,50 0,00 39,313
5 3,00 2,25 0,00 -0,25 3,250
6 2,25 2,25 -0,75 0,00 5,066
7 3,00 1,50 0,00 -0,75 1,000
8 3,38 1,50 0,38 0,00 3,715
9 3,00 -1,25 0,00 -2,25 31.250
1. Поворот осей
x1 x2 ||R|| f(x)
3,00 1,50 1,000
λ 0,50 -1,00
a1 0,50 -1,00 1,118
a2 0,00 -1,00 1,000
b2 -0,40 -0,21 0,452
S1 0,45 -0,89
S2 -0,885 -0,465
2. Исследующий поиск в новой системе
координат
№ x1 x2 s1 s2 f(x)
3,00 1,50 1,000
1 3,22 1,05 0,22 -0,45 3,492
2 2,56 1,27 -0,44 -0,23 0,097
3 2,45 1,49 -0,11 0,22 0,328
4 1,23 0,57 -1,33 -0,70 0,361
20
3.0
X0
2.5
*
2.0
1.5
X* *
1.0
x2
0.5
0.0
-0.5
-1.0
0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0
x1
21
симплексном методе использовался правильный симплекс,
т.е. симплекс, все ребра которого равны между собой
(например, равносторонний треугольник).
Размещение правильного симплекса в пространстве n
переменных может быть осуществлено различными путями.
Часто используются два следующих способа:
1. Одна вершина симплекса помещается в начало
координат, а остальные вершины располагаются так, чтобы
ребра, выходящие из первой вершины, образовали
одинаковые углы с соответствующими координатными
осями. Координаты вершин симплекса в этом случае могут
быть заданы следующей матрицей:
Номера x1 x2 x3 … xn
вершин
1 0 0 0 … 0
2 P Q Q … Q
3 Q P Q … Q
… … … … … …
n+1 Q Q Q … P
22
где Ri=1/ 2 ii 1 ; Vi=1/ 2 i 1 .
И в первом, и во втором случаях формулы получены для
симплекса, длина ребра которого равна единице. Для
произвольной длины каждую формулу надо умножить на
длину ребра l.
Идея симплекс метода заключается в следующем.
Выбирается начальный симплекс (А-В-С) и в его вершинах
рассчитываются значения целевой функции f(A), f(В), f(C). Из
этих значений находится “наихудшая” точка: при поиске
минимума функции это та точка, в которой функция
принимает наибольшее значение. Например, точка А. Через
центр противолежащей грани (в данном случае это сторона
В-С) строится новая вершина симплекса А', симметричная А.
В результате получается симплекс А-В-А', причем значения
целевой функции в двух его вершинах уже известны.
Поэтому вычисляется значение функции в точке А' и среди
всех вершин определяется вершина с “наихудшим”
значением. Эта вершина, например С, снова отображается
через центр противолежащей грани (сторона В-А') и вся
процедура повторяется.
При приближении к области экстремума возникает
ситуация, когда значение целевой функции в полученной
новой вершине вновь оказывается «наихудшим». В простом
симплексном методе обнаружение зацикливания является
признаком того, что поиск экстремума необходимо
закончить. Однако в этом случае точность нахождения
экстремума будет целиком определяться размером
симплекса. Если исходный симплекс имеет большие
размеры, то, как правило, маловероятно, что в ходе поиска
одна из его вершин поиска попадет в экстремум. Если же
взять исходный симплекс с малой длиной ребра, то в этом
случае резко возрастает количество вычислений целевой
функции. Поэтому в применяемых модификациях данного
метода при обнаружении зацикливания уменьшают размеры
исходного симплекса. В окрестности экстремума процедура
уменьшения размеров симплекса будет многократно
23
повторяться, и в результате симплекс будет постоянно
уменьшаться, стягиваясь в точке. Как только размер
симплекса станет меньше выбранной точности поиска,
процесс оптимизации заканчивается [1].
Алгоритм симплекс метода.
Начальный этап. Пусть 0 – скаляр, используемый в
критерии остановки, l – длина ребра симплекса, α –
коэффициент уменьшения размеров симплекса. Выбрать
начальную точку X1, рассчитать вершины исходного
симплекса X1, X2, …, Хn+1, определить значение функции в
этих вершинах f(X1),…, f(Xn+1) и перейти к основному этапу.
Основной этап. Шаг 1. Определить из n+1 вершин вершину с
максимальным значением функции и соответствующий ей
n 1
номер j. Рассчитать новую вершину Хn+2= X i 2 X j . Если
i 1
f(Xn+2)≤ f(Xj), то Xj=Xn+2 и перейти к шагу 1. В противном
случае перейти к шагу 2.
X X
n
k 2
Шаг 2. Если длина ребра i
k
n 1 , то
i 1
остановиться; в противном случае провести редукцию
симплекса. Выбрать из n+1 вершин вершину с минимальным
значением функции и соответствующий ей номер m.
Рассчитать вершины нового симплекса Xi= ((1- α )Xm + Xi)/ α
для i ≠m, вычислить значения функции f(X1),…, f(Xn+1) и
перейти к шагу 1.
Пример расчета экстремума функции симплекс-
методом.
Постановка задачи. Минимизировать f(X) = (x1-2)4 + (х1-2х2)2
с точностью =0,01. Выбираем начальное приближение
X(1) = [2,5; 2,5]Т, длину ребра симплекса l=0,5 и коэффициент
сжатия симплекса =2.
Результаты расчета для данных условий представлены в
таблице 2.4, графическая интерпретация метода – на рисунке
2.4.
24
Таблица 2.4 Результаты расчета минимума функции
f(X) = (x1 - 2)4 + (х1 - 2х2)2 симплекс методом
№
№ №
рас-
вершины x1 x2 f(X) № вершины x1 x2 f(X)
чета
1 2,250 2,360 6,1048 1 2,500 1,520 0,3541
1 2 2,500 2,780 9,4261 8 2 2,625 1,310 0,1526
3 2,750 2,360 4,1973 3 2,750 1,520 0,4005
1 2,250 2,360 6,1048 1 2,500 1,520 0,3541
2 2 2,500 1,940 1,9669 9 2 2,625 1,310 0,1526
3 2,750 2,360 4,1973 3 2,375 1,310 0,0798
1 3,000 1,940 1,7744 1 2,500 1,100 0,1525
3 2 2,500 1,940 1,9669 10 2 2,625 1,310 0,1526
3 2,750 2,360 4,1973 3 2,375 1,310 0,0798
1 3,000 1,940 1,7744 1 2,500 1,100 0,1525
4 2 2,500 1,940 1,9669 11 2 2,250 1,100 0,0064
3 2,750 1,520 0,4005 3 2,375 1,310 0,0798
1 3,000 1,940 1,7744 1 2,125 1,310 0,2453
5 2 3,250 1,520 2,4855 12 2 2,250 1,100 0,0064
3 2,750 1,520 0,4005 3 2,375 1,310 0,0798
Редукция симплекса Редукция симплекса
1 2,880 1,730 0,9284 1 2,188 1,205 0,0507
6 2 2,630 1,730 0,8498 13 2 2,313 1,205 0,0190
3 2,750 1,520 0,4005 3 2,375 1,310 0,0798
1 2,500 1,520 0,3541
7 2 2,630 1,730 0,8498
3 2,750 1,520 0,4005
Из таблицы видно, что на пятой итерации происходит
зацикливание симплекса, так как отраженная вершина № 2
вновь становится «наихудшей». После редукции симплекса
реализовано семь итераций, после чего вновь появляется
эффект зацикливания. В результате чего вновь производится
редукция. Полученный симплекс не находится в области
экстремума функции. Поэтому проведенная редукция не дает
желаемого результата, что говорит о плохой сходимости
метода на функциях "овражного" типа.
25
3,0
X0
2,5
*
2,0
1,5
X* *
1,0
x2
0,5
0,0
-0,5
-1,0
0,0 0,5 1,0 1,5 2,0 2,5 3,0 3,5 4,0
x1
26
f(Xh(k)) = maxf(X1(k)), …, f(Xn+1(k))};
f(Xl(k)) = min f(X1(k)), …, f(Xn+1(k))}.
Тогда координаты центра тяжести рассчитываются по
формуле:
k 1 n1 k k , j = 1, …, n,
xn2, j xij xhj
n i 1
где индекс j обозначает координатное направление.
3. Отражение представляет проектирование Xh(k) через центр
тяжести в соответствии с соотношением
X nk3 X nk2 X nk2 X hk ,
где 0 коэффициент отражения;
Xh(k) вершина, в которой функция f(X) имеет
наибольшее значение.
В обычном симплексе = 1.
4. Растяжение происходит в случае, если f X nk3
f X k .
l
Вектор ( X k X k ) увеличивается в соответствии с
n 3 n2
соотношением
X nk4 X nk2 X nk3 X nk2 ,
где 1 коэффициент растяжения.
Если f X nk4 f X nk3 , то X hk заменяется на X nk4 и
процедура продолжается с этапа 2 при k=k+1. Иначе X k h
заменяется на X nk3 и также осуществляется переход к этапу
2 при k=k+1.
5. Сжатие. Если f X nk3 f X ik для всех i h, то вектор
( X k X k ) уменьшается в соответствии с формулой
n 2
h
X nk5 X nk2 X nk3 X nk2 ,
где 0 1 коэффициентом сжатия.
Затем X hk заменяется на X nk 5 и происходит возврат к
операции 2 при k=k+1.
27
6. Редукция происходит при условии, если f X nk3
f X k .
h
k k
Все векторы ( X i X l ) уменьшаются в 2 раза с отсчетом
от X k в соответствии с формулой
l
X ik X lk 0,5 X ik X lk , i=1, …, n+1.
Затем осуществляется возврат к операции 2 для продолжения
поиска на (k+1)-м шаге.
Для окончания поиска используется критерий вида:
1
1 n1
k
k 2
2
f X i f X n 2 ,
n 1 i 1
где заданная точность поиска;
f X ik значение функции в центре тяжести.
Пример расчета минимума функции методом
деформируемого многогранника.
Постановка задачи. Рассмотрим задачу минимизации
функции f(X)=(x1-2)4+ (х1 - 2х2)2 с точностью =0,01.
Вершины начального многогранника рассчитываем как в
обычном симплексе:
X1(1) = [2,25; 2,36]Т; X2(1) = [2,50; 2,78]Т; X3(1) = [2,75; 2,36]Т.
Зададим параметры метода = 1; = 0,5; = 2. На первой
итерации при k = 1. Вычисляем значение функции в
вершинах исходного многогранника:
f(X1(1)) = 6,10480; f(X2(1)) = 9,4261; f(X3(1)) = 4,197.
Наихудшей вершиной является Xh(1) = X2(1), а наилучшей
Xl(1) = X3(1). Определяем центр тяжести
x4(1,1) [(2,25+ 2,50 + 2,75) – 2,5]/2 = 2,5,
x4(1,)2 [(2,36 + 2,78 + 2,36) – 2,78]/2 = 2,36
и рассчитываем координату отражения
x5(1,1) = 2,5 + 1(2,5 – 2,5) = 2.5,
x5(1,2) = 2,5 + 1(2,5 – 2,78) = 1,94.
Значение функции в этой точке f(X5(1)) = 1,967, что меньше,
чем в X1(1). Поэтому, проводим операцию растяжения
28
x6(1,1) = 2,5 + 2(2,5 – 2,5) = 2,5,
x6(1,)2 = 2,5 + 2(2,22 – 2,5) = 1,52.
Значение функции f(X6(1) ) = 0,354. Поскольку f(X6(1)) f(X5(1)),
заменяем X2(1) на X6(1) и полагаем X6(1) = X1(2) на следующем
этапе поиска. Результаты расчета нескольких итераций
метода представлены в таблице 2.5. Траектория поиска
метода представлена на рисунке 2.5.
Таблица 2.5 Результаты расчета минимума функции
f(X)=(x1-2)4 + (х1-2х2)2 методом Нелдера-Мида
№ Операция x1 x2 f(X) № Операция x1 x2 f(X)
Вершина 1 2,25 2,36 6,105 Вершина 1 2,81 1,73 0,855
Вершина 2 2,50 2,78 9,426 Вершина 2 2,50 1,52 0,354
Вершина 3 2,75 2,36 4,197 Вершина 3 2,61 1,26 0,147
1 4
Ц. тяжести 2,50 2,36 4,991 Ц. тяжести 2,55 1,39 0,144
Отражение 2,50 1,94 1,967 Отражение 2,30 1,05 0,049
Растяжение 2,50 1,52 0,354 Растяжение 2,04 0,71 0,393
29
поэтому для достижения необходимой точности необходимо
провести редукцию.
3.0
X0
2.5
*
2.0
1.5
1.0
X* *
x2
0.5
0.0
-0.5
-1.0
0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0
x1
30
(k) скаляр, равный величине шага.
Величина шага (k) в процессе движения остается
постоянной. В ряде случаев предусматривается адаптация к
топологии поверхности. Градиент целевой функции f(Х) в
любой точке Х есть вектор в направлении наибольшего
локального увеличения f(Х). Следовательно, нужно двигаться
в направлении, противоположном градиенту f(Х), поскольку
отрицательный градиент f(Х) в точке Х(k) направлен в сторону
наибольшего уменьшения f(Х) по всем компонентам Х и
ортогонален линии уровня f(Х) в точке Х(k). Введение
направления, противоположного нормированному
(единичному) градиенту f(Х), определяемого в точке Х(k)
рассчитывается по формуле:
S
(k )
f X k
,
f X k
тогда
k 1
X k f X
k k
X .
f X k
При расчете экстремума функции градиентным методом
при переходе к минимуму или в овражных ситуациях
возникает характерный случай, который заключается в
зигзагообразном движении. Поэтому величину шага
необходимо уменьшить. Одним из возможных подходов к
адаптации является расчет угла между последовательными
векторами шагов. При малых величину шага следует
уменьшить, а при больших соответственно увеличить. Это
позволяет сократить число шагов и повышает
работоспособность метода [1].
Алгоритм градиентного метода.
Начальный этап. Выбрать начальную точку X(1), шаг и 0
скаляр, используемый в критерии остановки. Положить
k = 1 и перейти к основному этапу.
31
Основной этап. Шаг 1. Вычислить f(X(k)), f X k и
k 1
X k f X
k
. Перейти к шагу 2.
X
f X k
32
Из таблицы видно, что, начиная с 6-го этапа, возникает
зигзагообразное движение, которое при = 0,5 не приведет к
оптимуму. Необходимо уменьшить величину шага, однако
при этом движение в направлении Х* остается очень
медленным.
Траектория поиска минимума функции градиентным
методом приведена на рисунке 2.6.
3.0
X0
2.5
*
2.0
1.5
1.0
X* *
x2
0.5
0.0
-0.5
-1.0
0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0
x1
33
В точке Х(k+1) выбирается новое направление по
градиенту и опять совершается одномерный поиск. Величина
*(k) может быть определена любым методом одномерного
поиска [1].
Алгоритм метода наискорейшего спуска.
Начальный этап. Выбрать начальную точку X(1), и 0
скаляр, используемый в критерии остановки. Положить k=1 и
перейти к основному этапу.
34
Таблица 2.7 Результаты расчета минимума функции
f(X) = (x1-2)4 +(х1-2х2)2 методом крутого восхождения
f X f X
f (X )
№ x1 x2 f(Х) x1 x2 Δx1 Δx2 λ Критерий
35
производится планирование эксперимента и выбор нового
направления движения [1].
3,0
X0
2,5
*
2,0
1,5
1,0
*
x2
X*
0,5
0,0
-0,5
-1,0
0,0 0,5 1,0 1,5 2,0 2,5 3,0 3,5 4,0
x1
36
остановки, коэффициент сжатия шага, n – размерность
задачи, число опытов равно N=2n. Положить k=1, i=1 и
перейти к основному этапу.
Основной этап. Шаг 1. Вычислить натуральное и
кодированное значение переменной х(k)i= x0( ki ) xi(k) и
Yi=(xi(k)-x0i(k))/xi(k). Если i=n, то положить j=1 и перейти к
шагу 2, иначе положить i=i+1 и вернуться к шагу 1.
Шаг 2. В соответствии с матрицей планирования полного
факторного эксперимента реализовать полный факторный
эксперимент в окресности точки X(k). Определить значение
функции f(Хj(k)). Если j=N, то положить i=1, j=1 и перейти к
шагу 3, иначе вернуться к шагу 2.
Шаг 3. Вычислить коэффициенты аппроксимационного
уравнения f(X(k)) = b0(k) + b1(k)x1(k) + b2(k)x2(k) + … + bn(k)xn(k) по
N
f (Y j )
j 1
формуле bi . Если i=n, то перейти к шагу 4, иначе
N
вернуться к шагу 3.
Шаг 4. Определить значение функции в точке (X(k)- jX(k)B),
если f(X(k)- jX(k)B)<f(X(k)), то положить j=j+1 и вернуться к
шагу 4, иначе X(k+1)=(X(k)-jX(k)B), k=k+1 и перейти к шагу 5.
Шаг 5. Если ||X(k+1) - X(k)|| , то остановиться; в противном
случае положить i=j=1и перейти к шагу 1.
Пример расчета экстремума функции методом
крутого восхождения.
Постановка задачи. Найти минимум функции
4 2
f(Х) = (x1-2) +(х1-2х2) . Выбираем начальное приближение
Х(1) = [2,5; 2,5]Т, интервал варьирования на первой итерации
принимаем X(1)=[0,5; 0,5]T, (1)=0,05 и точность поиска
=0,01.
Результаты расчетов минимума функции методом
крутого восхождения с использованием табличного
процессора EXCEL для данного варианта представлены в
37
таблице 2.8. Траектория поиска метода приведена на рисунке
2.8.
Таблица 2.8 Результаты расчета минимума функции
f(Х)=(x1-2)4 +(х1-2х2)2 методом крутого восхождения
1. Эксперимент в точке [2,5; 2,5], Δx1=0,5, Δx2=0,5
№ Y1 Y2 x1 x2 f(X) b1 b2
1 -1 -1 2,00 2,00 4,00 -2,00 5,00
2 1 -1 3,00 2,00 2,00 =0,05
3 -1 1 2,00 3,00 16,00
4 1 1 3,00 3,00 10,00
Движение в направлении градиента
№ x1 x2 f(X) № x1 x2 f(X)
1 2,500 2,500 6,3125 4 2,800 1,750 0,8996
2 2,600 2,250 3,7396 5 2,900 1,500 0,6661
3 2,700 2,000 1,9301 6 3,000 1,250 1,2500
2. Эксперимент в точке [2,9; 1,5], Δx1=0,5, Δx2=0,5
№ Y1 Y2 x1 x2 f(X) b1 b2
1 -1 -1 2,40 1,00 0,1856 1,81 0,20
2 1 -1 3,40 1,00 5,8016 =0,1
3 -1 1 2,40 2,00 2,5856
4 1 1 3,40 2,00 4,2016
Движение в направлении градиента
№ x1 x2 f(X) № x1 x2 f(X)
1 2,900 1,500 0,6661 3 2,538 1,460 0,2296
2 2,719 1,480 0,3255 4 2,358 1,440 0,2893
3. Эксперимент в точке [2,538; 1,460], Δx1=0,75, Δx2=0,5
№ Y1 Y2 x1 x2 f(X) b1 b2
1 -1 -1 1,788 0,960 0,0193 0,80 0,76
2 1 -1 3,288 0,960 4,6280 =0,1
3 -1 1 1,788 1,960 4,5457
4 1 1 3,288 1,960 3,1544
Движение в направлении градиента
№ x1 x2 f(X) № x1 x2 f(X)
1 2,538 1,460 0,2296 5 2,217 1,155 0,0108
2 2,458 1,384 0,1397 6 2,136 1,078 0,0008
3 2,378 1,307 0,0766 7 2,056 1,002 0,0027
4 2,297 1,231 0,0350 Критерий Достигнут
38
В результате трех итераций реализации метода крутого
восхождения получена точка Х*=[2,056; 1,002]т, значение
функции в которой f(Х*)=0,0027.
3.0
X0
2.5
*
2.0
1.5
X* *
1.0
x2
0.5
0.0
-0.5
-1.0
0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0
x1
39
частности, если целевая функция квадратичная, то можно
получить точку минимума не более чем за количество шагов,
равных размерности задачи.
Предположим, что процесс поиска начинается в Х(1) с
произвольным единичным направлением S 1 . Тогда
результатом первого одномерного поиска будет
X(2) = X(1) + *(1) S 1 ,
где *(1) результат минимизации f(X(1) + *(1)) по .
Затем новое направление S 2 выбирается сопряженным
с S 1 из условия
S 2 2 f X 1 S 1 0
T
40
F X x1 24 x1 2 x2 2
4 x1 23 2 x1 2 x2
f X
4 x1 2 x 2
12( x1 2) 2 2 4
H X
4 8
Выберем произвольное начальное единичное направление
S 1 = [0,87; -0,50] и определим длину шага
4,5 10
0,87
0,5 8,915
*(1)
0,9623
0,87 0,5 9,2645
5 4 0,87
4 8 0,5
2,5 0,87 3,34
Тогда X ( 2 ) 0,9623 2,02 .
2 ,5 0 ,50
41
0,156
8,16 2,8
* 2 0,132
3,02
5 4 0,156
0,156 0,132 0,132
4 8
и находим следующую точку
3,34 0,156 2,89
X 3 3,02 0,132 1,49 .
2, 02
Результаты полного расчета методом сопряженных
направлений представлены в таблице 2.9.
Таблица 2.9 Расчет минимума функции
f(Х)=(x1-2) +(х1-2х2)2 методом сопряженных направлений
4
42
3. ПОРЯДОК ВЫПОЛНЕНИЯ ПРАКТИЧЕСКИХ
РАБОТ
Выполнение заданий предусматривает:
для заданной функции поиск экстремума
аналитически и его анализ;
построение линий уровня;
поиск минимума функции методами многомерной
оптимизации, рассмотренными выше, при заданных
параметрах;
выводы об эффективности работы методов.
Требования к отчету
В отчете должны быть представлены результаты
выполнения указанных этапов и выводы к ним. Отчет
представляется индивидуально каждым студентом.
Варианты заданий приведены в таблице 3.1.
4. ЗАДАНИЯ НА САМОСТОЯТЕЛЬНУЮ РАБОТУ
В рамках самостоятельной работы необходимо:
1. Подготовиться к текущему контролю по разделу 3
«Методы решения задач многомерной безусловной
оптимизации».
2. Подготовиться к практическим занятиям: 3 «Расчет
экстремума функции методами многомерной безусловной
оптимизации, использующими одномерный поиск вдоль
направлений.»; 4 «Расчет экстремума функции методами
многомерной безусловной оптимизации, использующими
расчет значений функции в вершинах многогранника»; 5
«Расчет экстремума функции методами многомерной
безусловной оптимизации, использующими значения
производных», относящимся к разделу 3.
43
№ Начальная точка
Вид функции f(X) Точность
вари- Х(1)
анта х1(1) х2(1)
1 (x1+2x2)2+(x2-3)2 0 10 0,01
2 (x1-4x2)2+(x2+5)2 10 -5 0,01
3 (x1-2x2)2+(x2+5)2 -15 5 0,02
4 (x1+x2)2+(x2+4)2 9 5 0,01
5 (x1-3x2)2+(x2-2)2 4 10 0,015
6 (x1-3x2)2+(x2+1)2 0 8 0,01
7 (x1+5x2)2+(x2-1)2 8 10 0,005
8 (x1-2x2)2+(x2-3)2 -7 -7 0,01
9 (x1+x2)2+(x2+2)2 6 -1 0,02
10 (x1+x2)2+(x2+6)2 10 8 0,01
11 (x1+x2)2+(x2-1)2 5 6 0,01
12 (x1-2x2)2+(x2-3)2 7 6 0,02
13 (x1+2x2)2+(x2-4)2 -4 7 0,02
14 (x1-6x2)2+(x2+1)2 -5 -3 0,015
15 (x1-5x2)2+(x2+6)2 -10 -5 0,015
16 (x1+4x2)2+(x2-3)2 -5 6 0,01
17 (x1+6x2)2+(x2+2)2 -10 7 0,01
18 (x1-7x2)2+(x2-2)2 8 6 0,02
19 (x1+3x2)2+(x2+5)2 10 10 0,02
20 (x1-8x2)2+(x2+1)2 -5 -5 0,015
21 (x1-x2)2+(x2-7)2 10 2 0,01
22 (x1+8x2)2+(x2-2)2 -10 5 0,015
23 (x1-5x2)2+(x2+3)2 -10 -5 0,01
24 (x1-2x2)2+(x2-9)2 15 12 0,01
25 (x1-6x2)2+(x2+9)2 -6 -5 0,01
26 (x1+9x2)2+(x2-1)2 7 3 0,015
27 (x1-3x2)2+(x2+5)2 -10 2 0,01
28 (x1-4x2)2+(x2 -1)2 5 9 0,015
29 (x1+4x2)2+(x2+1)2 6 10 0,01
30 (x1-5x2)2+(x2+5)2 11 1 0,01
44
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
45