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

Методы решения задач оптимизации. Учебное пособие

.pdf
Скачиваний:
1
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
2.1. Метод градиентного спуска с постоянным шагом
21
40. Проверяем условие окончания вычислений. Для этого вычислим
величину ||f(x0)|| (величина ||f(x0)|| определяется по формуле
22
12
()
k
f x x x
):
||f(x0)|| =
22
86
= 10 > 0,1.
Как мы видим условие
||f(xk)|| <
1
не выполняется. Следовательно,
переходим к шагу 5.
50. Проверим выполнение условия прохождения заданного числа
итераций, k M: k = 0 < 10 = M. Переходим к шагу 6.
60. Зададим величину шага t0 = 0,5.
70. Вычислим следующую точку
x
k+1
: x1 = (5; 3)T – 0,5(8; 6)T =
= (5; 3)T – (4; 3)T = (1; 0)T; вычислим значение функции в точке x1: f(x1) = = 2(1)2 – 121 + (0)2 =–10.
80. Сравним значение функции в начальной точке x0 со значением
функции в следующей точке последовательности x1:
f(x0) = 2(5)2 – 125 + (3)2 = 50 – 60 +9 =–1,
следовательно
f(x1) – f(x0) = –10 – (–1) = 9 < 0.
Вывод: условие f(x
k + 1
) – f(xk) < 0 для k = 0 выполняется, переходим
к шагу 9.
90. Вычислим ||x1 – x0|| и |f(x1) – f(x0)|. Значение ||x1 – x0|| вычисляем
по формуле
2
21
1, 2,
1
.
X
ii
i
X X x x
Тогда
||x1 – x0|| =
22
(5 1) (3 0)
=
16 9
= 5 > 0,15; |f(x1) – f(x0)| = 9 > 0,15.
Оба условия не выполняются, следовательно увеличиваем значение
переменной цикла: k = k + 1 = 1 и переходим к шагу 3.
31. Вычислим значение f(x1): f(x1) = 41 – 12; 20 = (–8; 0)T.
41. Проверяем условие окончания вычислений. Вычислим величи-
ну ||f(x1)||: ||f(x1)|| =
22
80
= 8 > 0,1. Условие не выполняется. Пере-
ходим к шагу 5.
2. Методы градиентного поиска
22
51. Проверяем выполнение условия прохождения заданного числа
итераций, k M: k = 1 < 10 = M. Переходим к шагу 6.
61 Задаем величину шага t1 = 0,5.
71. Вычислим следующую точку последовательности
x
k+1
:
x2 = (1; 0)T – 0,5(–8; 0)T = (5; 0)T.
Вычислим значение функции в точке x2: f(x2) = 2(5)2 – 125 +
+ (0)2 =–10.
81. Сравним значение функции в точке x1 со значением функции в
следующей точке последовательности x2:
f(x1) = –10, f(x2) – f(x1) = –10 – (–10) = 0 = 0.
Вывод: условие f(x
k + 1
) – f(xk) < 0 для k = 1 не выполняется, умень-
шаем величину шага
t1 = t1 / 2 = 0,25
и возвращаемся к п. 7.
701. Вычислим следующую точку последовательности
x
k+1
:
x2 = (1; 0)T – 0,25(–8; 0)T = (3; 0)T.
Вычислим значение функции в точке x2:
f(x2) = 2(3)2 – 123 + (0)2 =–18.
801. Сравним значение функции в точке x1 со значением функции в
следующей точке последовательности x2:
f(x1) = –10, f(x2) – f(x1) = –18 – (–10) = –8 < 0.
Вывод: условие f(x
k + 1
) – f(xk) < 0 для k = 1 выполняется, переходим
к шагу 9.
91. Вычислим ||x2 – x1|| и |f(x2) – f(x1)|:
||x2 – x1|| =
22
(1 3) (0 0)
=
40
= 2 > 0,15;
|f(x2) – f(x1)| = |–18 – (–10)| = 8 > 0,15.
Оба условия не выполняются, следовательно, увеличиваем значе-
ние переменной цикла: k = k + 1 = 2 и возвращаемся к шагу 3.
32. Вычислим значение f(x2): f(x2) = 43 – 12; 20 = (0; 0)T.
2.2. Метод наискорейшего градиентного спуска
23
42. Вычислим величину ||f(x2)||:
||f(x1)|| =
22
00
= 0 < 0,1.
Критерий выполнен, следовательно, расчет окончен, найдена точка,
в которой функция f(x) принимает минимальное значение:
x* = x2 = (3; 0)T; f(x2) = –18.
II. Анализ точки x2.
Необходимо провести анализ найденной точки x2, чтобы опреде-
лить является ли данная точка – точкой экстремума функции. Очевидно, что исследуемая функция f(x) =
2x
1
2
– 12x1 + x
2
2
является дважды диффе-
ренцируемой, поэтому будем проверять выполнение достаточных условий существования минимума функции в точке x2. В начале задачи мы уже вычислили градиент функции в точке x: f(x) = (4x1 – 12; 2x2)T. Теперь мы можем построить матрицу частных производных второго порядка (матри­цу Гессе) для исследуемой функции:
40
.
02
H

 
Проанализируем полученную матрицу Гессе. В соответствии с кри-
терием Сильвестра для того, чтобы матрица Гессе была положительно определенной и точка являлась точкой локального минимума, необходимо и достаточно, чтобы знаки угловых миноров были строго положительны. Для нашего примера оба угловых минора матрицы 1 = 4 и 2 = 8 строго положительны (1, 2 > 0). Следовательно, данная матрица постоянная и является положительно определенной (H > 0). Отсюда следует, что найденная точка x2 является приближенной точкой локального минимума x* = x2 = (3; 0)T, а значение функции в данной точке f(x2) = –18 – это при­ближенное наименьшее значение на множестве R2.
2.2. Метод наискорейшего градиентного спуска
Как и в предыдущем случае, задача состоит в построении последо-
вательности точек {xk}, k = 0, 1, ..., таких, что f(x
k+1
) < f(xk), k = 0, 1, ... Точ-
ки последовательности {xk} вычисляются по правилу
2. Методы градиентного поиска
24
x
k+1
= xk – tkf(xk), k = 0, 1, ...
Начальная точка x0 задается пользователем [4]. Величина шага tk
определяется на каждой итерации алгоритма по формуле
(tk) = f(xk – tkf(xk)) 
min
k
t
.
Построение последовательности {xk} заканчивается в точке xk, для
которой выполняется как минимум одно из условий [4]:
||f(xk)|| <
1
, где
1
– заданное малое положительное число,
или k N, где N – предельное число итераций,
или при двукратном одновременном выполнении двух неравенств
||x
k+1
– xk|| <
2
, |f(x
k+1
) – f(xk)| <
2
, где
2
– малое положительное число.
Для того чтобы определить является ли найденная точка, прибли-
женным значением локального минимума, необходимо провести допол­нительное исследование [4].
Шаг 1. Задание исходных данных: начальная точка x0, 0 <  < 1,
1
> 0,
2
> 0, N – максимальное число итераций. Определяем градиент
функции в произвольной точке x:
1
( ) ( )
( ) , , .
T
n
f x f x
x
xx






Шаг 2. Задаем начальное значение переменной цикла k = 0. Шаг 3. Вычисляем значение f(xk). Шаг 4. Проверяем выполнение условия окончания вычислений:
||f(xk)|| <
1
:
а) если критерий выполнен, расчет закончен, x* = xk; б) если критерий не выполнен, то переходим к шагу 5. Шаг 5. Проверяем выполнение неравенства k N: а) если неравенство выполнено, то расчет окончен: x* = xk; б) если нет, то переходим к шагу 6. Шаг 6. Определяем величину шага tk по формуле
(tk) = f(xk – tkf(xk)) 
min
k
t
.
2.2. Метод наискорейшего градиентного спуска
25
Шаг 7. Вычисляем точку x
k+1
= xk – tkf(xk).
Шаг 8. Проверяем выполнение условий:
||x
k+1
– xk|| <
2
, |f(x
k+1
) – f(xk)| <
2
:
а) если оба условия выполнены при текущем значении k и k = k – 1,
то расчет окончен, x* = x
k+1
;
б) если хотя бы одно из условий не выполнено, увеличиваем значе-
ние переменной цикла k = k + 1 и возвращаемся к шагу 3.
Пример 2.2. Найти локальный минимум функции f(x) = 2x
1
2
–
– 12x1 + x
2
2
.
I. Поиск точки xk, в которой выполняется, по крайней мере, один из
критериев окончания расчетов.
1. Задаём начальные значения параметров алгоритма: x0,
1
,
2
, M;
x0 = (5; 3)T,
1
= 0,1;
2
= 0,15; M = 10. Найдем градиент функции в точке x:
f(x) = (4x1 – 12; 2x2)T.
2. Положим k = 0.
30. Вычислим значение f(x0): f(x0) = 45 – 12; 23 = (8; 6)T.
40. Проверяем условие окончания вычислений. Для этого вычислим
величину ||f(x0)|| (величина ||f(x0)|| определяется по формуле
22
12
( ) .
k
f x x x
):
||f(x0)|| =
22
86
= 10 > 0,1.
Как мы видим условие
||f(xk)|| <
1
не выполняется. Следовательно,
переходим к шагу 5.
50. Проверим выполнение условия k M: k = 0 < 10 = M. Условие не
выполняется, переходим к шагу 6.
60. Определяем величину шага. Следующая точка находится по
формуле
x1 = x0 – t0f(x0) = (5; 3)T – t0(8; 6)T = (5 – 8t0; 3 – 6t0)T.
Подставим полученные выражения для координат x
1
1
= 5 – 8t0,
x
2
1
= 3 – 6t0 в f(x):
(t0) = 2(5 – 8t0)2 – 12(5 – 8t0) + (3 – 6t0)2.
Найдем минимум функции (t0) по t0 с помощью необходимых
условий безусловного экстремума:
2. Методы градиентного поиска
26
0
0
()dt
dt
22(5 – 8t0)(–8) + 96 + 2(3 – 6t0)(–6) =
= –160 + 256t0 + 96 – 36 + 72t0 = –100 + 328t0.
Следовательно, величина шага
0
100 328
t
0,3. Так как
2
0
2
0
()
328 0,
dt
dt

то полученное значение обеспечивает минимум функции (t0) по t0.
70. Найдем следующую точку последовательности:
x1 = x0 – t0*f(x0) = (5; 3) – 0,3(8; 6)T = (2,6; 1,2)T.
80. Проверим выполнение условий окончания вычислений. Вычис-
лим ||x1 – x0||:
||x1 – x0|| =
22
(5 2,6) (3 1,2)
=
5,76 3,24
= 5 > 0,15;
Сравним значение функции в начальной точке x0 со значением
функции в следующей точке последовательности x1: f(x0) = 2(5)2 – 125 +
+ (3)2 = = 50 – 60 +9 =–1, f(x1) = 2(2,6)2 – 122,6 + (1,2)2 = 13,52 – 31,2 + + 1,44 =–16,24. Следовательно,
|f(x1) – f(x0)| = |–16,24 – (–1)| = 15,24 > 0,15.
Вывод: оба условия окончания вычислений не выполнены, следо­вательно, увеличиваем значение переменной цикла k = k + 1 и возвраща­емся к шагу 3.
31. Вычислим f(x1): f(x1) = 42,6 – 12; 21,2 = (–1,6; 2,4)T.
41. Проверяем условие окончания вычислений:
||f(x1)|| =
22
( 1,6) (2,4)
2,9 > 0,1.
Как мы видим условие
||f(xk)|| <
1
не выполняется. Следовательно,
переходим к шагу 5.
51. Проверим выполнение условия k M: k = 1 < 10 = M, условие не
выполняется, следовательно переходим к шагу 6.
2.2. Метод наискорейшего градиентного спуска
27
61.
Определяем величину шага. Следующая точка находится по
формуле
x2 = x1 – t0f(x1) = (2,6; 1,2)T – t0(–1,6; 2,4)T = (2,6 + 1,6t0; 1,2 – 2,4t0)T.
Подставим полученные выражения для координат x
1
2
= 2,6 + 1,6t0,
x
2
2
= 1,2 – 2,4t0 в f(x):
(t0) = 2(2,6 + 1,6t0)2 – 12(2,6 + 1,6t0) + (1,2 – 2,4t0)2.
Найдем минимум функции (t0) по t0 с помощью необходимых
условий безусловного экстремума:
0
0
()dt
dt
22(2,6 + 1,6t0)(1,6) + 19,2 + 2(1,2 – 2,4t0)( –2,4) =
= 16,64 + 10,24t0 – 19,2 – 5,76 + 11,52t0 = –8,33 + 21,76t0.
Следовательно, величина шага
1
8,33
21,76
t
0,4. Так как
2
0
2
0
()
21,76 0,
dt
dt

то полученное значение обеспечивает минимум функции (t1) по t1.
71. Найдем x2 = x1 – t1*f(x1):
x2 = (2,6; 1,2) – 0,4(-1,6; 2,4)T = (3,24; 0,24)T.
81. Проверим выполнение условий окончания вычислений. Вычис-
лим ||x2 – x1||:
||x2 – x1|| =
22
(3,24 2,6) (0,24 1,2)
=
0,4096 0,9216
1,33;
Сравним значение функции в точке x1 со значением функции в сле-
дующей точке последовательности x2: f(x1) = 2(2,6)2 – 122,6 + (1,2)2 =
= 13,52 – 31,2 ++ 1,44 =–16,24, f(x2) = 2(3,24)2 – 123,24 + (0,24)2 = = 20,9952 – 38,88 + 0,0576 ==–17,8272. Следовательно,
|f(x1) – f(x0)| = |–17,83 + 16,24| = 1,59 > 0,15.
Вывод: оба условия окончания вычислений не выполнены, следо­вательно, увеличиваем значение переменной цикла k = k + 1 и возвраща­емся к шагу 3.
2. Методы градиентного поиска
28
32. Вычислим f(x2): f(x2) = 43,24 – 12; 20,24 = (0,96; 0,48)T.
42. Проверяем условие окончания вычислений: ||f(x2)|| =
22
(0,96) (0,48)
1,07 > 0,1.
Условие
||f(xk)|| <
1
не выполняется. Следовательно, переходим к
шагу 5.
52. Проверим выполнение условия k M: k = 2 < 10 = M, условие не
выполняется, следовательно переходим к шагу 6.
62.
Определяем величину шага. Следующая точка находится по
формуле
x3 = x2 – t0f(x2) = (3,24; 0,24)T – t0(0,96; 0,48)T =
= (3,24 – 0,96t0; 0,24 – 0,48t0)T.
Подставим полученные выражения для координат x
1
3
= 3,24 –
– 0,96t0, x
2
3
= 0,24 – 0,48t0 в f(x):
(t0) = 2(3,24 – 0,96t0)2 – 12(3,24 – 0,96t0) + (0,24 – 0,48t0)2.
Найдем минимум функции (t0) по t0 с помощью необходимых
условий безусловного экстремума:
0
0
()dt
dt
22(3,24 – 0,96t0)(–0,96) + 11,52 + 2(0,24 – 0,48t0)(–0,48) =
= –12,4416 + 3,6864t0 – 19,2 – 0,2304 + 0,4608t0 = –1,152 + 4,1472t0.
Следовательно, величина шага
2
1,162
4,1472
t
0,27. Так как
2
0
2
0
()
4,1472 0,
dt
dt

то полученное значение обеспечивает минимум функции (t2) по t2.
72. Найдем x3 = x2 – t2*f(x2):
x3 = (3,24; 0,24) – 0,27(0,96; 0,48)T = (2,9808; 0,1104)T.
82. Проверим выполнение условий окончания вычислений. Вычис-
лим ||x3 – x2||, |f(x3) – f(x2)|:
2.2. Метод наискорейшего градиентного спуска
29
||x3 – x2|| =
22
(2,9808 3,24) (0,1104 0,24)
=
=
0,0672 0,0168
0,29.
Сравним значение функции в точке x2 со значением функции в сле-
дующей точке последовательности x3: f(x3) = 2(2,9808)2 – 122,9808 + + (0,1104)2 = 17,7703 – 35,7696 + 0,0122 =–17,9871, f(x2) = 2(3,24)2 – – 123,24 + (0,24)2 = 20,9952 – 38,88 + 0,0576 =–17,8272. Следовательно,
|f(x3) – f(x2)| = |–17,9871 + 17,8272| = 0,1599 > 0,15.
Вывод: оба условия окончания вычислений не выполнены, следо­вательно, увеличиваем значение переменной цикла k = k + 1 и возвраща­емся к шагу 3.
33. Вычислим f(x3): f(x3) = 42,9808 – 12; 20,1104 = (–0,0768; 0,2208)T.
43. Проверяем условие окончания вычислений:
||f(x3)|| =
22
( 0,0768) (0,2208)
0,0547 < 0,1.
Условие
||f(xk)|| <
1
выполнено. Вычисления завершены. найдена
точка, в которой функция f(x) принимает минимальное значение:
x* = x3 = (2,9808; 0,1104)T; f(x2) = –17,9871.
II. Анализ точки x3.
Необходимо провести анализ найденной точки x2, чтобы опреде­лить является ли данная точка – точкой экстремума функции. В предыду­щем примере (пример 2.1) была построена матрица частных производных второго порядка (матрицу Гессе) для исследуемой функции.
В соответствии с критерием Сильвестра для того, чтобы матрица Гессе была положительно определенной и точка являлась точкой локаль­ного минимума, необходимо и достаточно, чтобы знаки угловых миноров были строго положительны. Анализ полученной матрицы Гессе показыва­ет, что в нашем случае угловые миноры матрицы строго положительны (1, 2 > 0). Следовательно, данная матрица постоянная и является поло­жительно определенной (H > 0). Отсюда следует, что найденная точка x
3
является приближенной точкой локального минимума x* = x3 = (2,9808; 0,1104)
T T
, а значение функции в данной точке f(x3) = –17,9871 – это при-
ближенное наименьшее значение на множестве R2.
3. Примеры решения задач построения математических моделей
30
3. ПРИМЕРЫ РЕШЕНИЯ ЗАДАЧ ПОСТРОЕНИЯ МАТЕМАТИЧЕСКИХ МОДЕЛЕЙ
Пример 3.1. (ММ задачи распределения самолетов по авиалиниям)
Имеется n типов самолетов, которые надо распределить по m авиа-
линиям. Пусть bj (j = 1, …, n) – количество самолетов j-го типа. Общее число самолетов:
1
.
n
j
j
bb
Исходя из себестоимости и загрузки каждого типа самолета на
каждой авиалинии, устанавливают:
aij – объем перевозок j-м типом самолетов на i-й линии; cij – затраты на эксплуатацию j-го типа на i-й линии; ai – план перевозок пассажиров на i-й авиалинии.
Задача заключается в распределении самолетного парка по m авиа-
линиям для перевозки заданного количества пассажиров при минималь­ных затратах. Обозначим:
1) xij – количество самолетов j-го типа на i-й линии, тогда суммар-
ные затраты на эксплуатацию в месяц
11
()
mn
ij ij ij
ij
L x c x


при условии, что план был выполнен, т.е.
1
, ( 1, , );
n
ij ij i
j
a x a i m

2) ограничение общего числа самолетов каждого типа
1
, ( 1, , );
m
ij j
i
x b j m

3) требуется выбрать такие xij 0 (i = 1, m; j = 1, n), которые обес-
печат min L.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]