- •А.В. Аттетков, С.В. Галкин, В.С. Зарубин
- •ПРЕДИСЛОВИЕ
- •Задания для самопроверки
- •ОСНОВНЫЕ ОБОЗНАЧЕНИЯ
- •Буквы латинского алфавита
- •Буквы греческого алфавита
- •1. ЗАДАЧИ ОПТИМИЗАЦИИ
- •1.1. Основные понятия
- •1.2. Некоторые простые примеры
- •1.3. Задачи оптимального проектирования
- •1.4. Задачи оптимального планирования
- •1.5. Классы задач оптимизации
- •Вопросы и задачи
- •2. МЕТОДЫ ОДНОМЕРНОЙ МИНИМИЗАЦИИ
- •2.1. Предварительные замечания
- •2.3. Оптимальный пассивный поиск
- •2.4. Методы последовательного поиска
- •2.5. Сравнение методов последовательного поиска
- •2.6. Методы полиномиальной аппроксимации
- •2.7. Методы с использованием производных
- •Вопросы и задачи
- •3. МИНИМИЗАЦИЯ ВЫПУКЛЫХ ФУНКЦИЙ
- •3.2. Выпуклые функции
- •3.4. Условия минимума выпуклых функций
- •3.5. Сильно выпуклые функции
- •ф{t) = (grad/(а; + th), h)
- •3.6. Примеры минимизации квадратичных функций
- •3.7. Минимизация позиномов
- •Qj = '%2aijci = Q> J = !.*»•
- •Вопросы и задачи
- •4. ЧИСЛЕННЫЕ МЕТОДЫ БЕЗУСЛОВНОЙ МИНИМИЗАЦИИ
- •4.1. Релаксационная последовательность
- •4.2. Методы спуска
- •4.4. Минимизация квадратичной функции
- •4.5. Сопряженные направления спуска
- •5. АЛГОРИТМЫ МЕТОДОВ ПЕРВОГО И ВТОРОГО ПОРЯДКОВ
- •|iufc|
- •5.3. Метод Ньютона
- •5.4. Модификации метода Ньютона
- •5.5. Квазиньютоновские методы
- •Вопросы и задачи
- •6. АЛГОРИТМЫ ПРЯМОГО ПОИСКА
- •6.1. Особенности прямого поиска минимума
- •6.2. Использование регулярного симплекса
- •6.4. Циклический покоординатный спуск
- •6.5. Метод Хука — Дживса
- •Щ + bjej,
- •6.6. Методы Розенброка и Пауэлла
- •Вопросы и задачи
- •7. АНАЛИТИЧЕСКИЕ МЕТОДЫ НЕЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ
- •7.2. Минимизация при ограничениях типа равенства
- •7.4. Седловая точка функции Лагранжа
- •7.5. Двойственная функция
- •7.6. Геометрическое программирование
- •Вопросы и задачи
- •8. ЧИСЛЕННЫЕ МЕТОДЫ НЕЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ
- •8.1. Метод условного градиента
- •8.2. Использование приведенного градиента
- •8.5. Метод проекции антиградиента
- •СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ
- •ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ
- •ОГЛАВЛЕНИЕ
- •Математика в техническом университете Выпуск XIV
- •Аттетков Александр Владимирович Галкин Сергей Владимирович Зарубин Владимир Степанович
- •МЕТОДЫ ОПТИМИЗАЦИИ
Если преобразования в первом равенстве (5.7) не доводить до конца, то вместо (5.8) получим
Ik = |
(wk+1 —w |
k e N. |
(5.9) |
к12 |
|||
|
|iufc| |
|
|
В случае дважды дифференцируемой целевой функции мож но получить еще одно выражение для 7^. Так как матрица Гессе функции (Qx, х ) /2 + (с, х) совпадает с матрицей Q, то во вто ром равенстве (5.6) можно заменить Q матрицей Гессе Н(хк) неквадратичной целевой функции:
(.Н(хк)рк, wk+l)
к 6 N. |
(5.10) |
(Н(хк)рк,рк) ’ |
|
Теперь с помощью одной из формул (5.8)-(5.10) из первого равенства (5.6), записанного в виде
pk+1 = lkpk + wk+\ к е N, p l = w\ |
(5.11) |
на любой к-й итерации можно найти вектор, определяющий направление спуска из точки х к на (А;+1 )-й итерации. Для квадратичной функции результат вычислений по каждой из формул (5.8)-(5.10) будет одинаковым, но для неквадратичной функции значения 7^ будут, вообще говоря, различными. По этому использование каждой из этих формул при минимизации неквадратичной функции f(x) может привести к построению своей системы направлений спуска. При этом в отличие от ква дратичной функции точка минимума в общем случае не будет найдена за конечное число итераций.
Более того, при выборе значения щ > 0 на каждой А;-й итерации в рекуррентном соотношении х к = х к~1 + я^рк при ходится минимизировать функцию
'Фк(х) — f ( xk~l + КРк), * > 0 , keN. |
(5.12) |
Это приводит к неизбежным погрешностям на каждой итера ции, которые могут вызвать нарушение сходимости алгоритма. Чтобы ослабить влияние погрешностей, используют процедуру
„обновления" алгоритма, состояющую в том, что в (5.11) пе риодически через заданное число итераций полагают 7&= 0. Соответствующий номер итерации называют моментом об новления алгоритма, или рестартом. Обычно при мини мизации целевой функции в Шп множество таких номеров имеет вид Х0 = {п, 2п, ..., mn, ...}, т Е N. Использование в алгорит ме рестартов позволяет избежать накопления вычислительных погрешностей и уменьшить вероятность построения после ка ждых п итераций линейно зависимых направлений спуска, но приводит к росту общего числа итераций, необходимых для достижения заданной точности поиска.
Опишем алгоритм минимизации дифференцируемой неква дратичной целевой функции f{x). Выбираем параметр £3 > 0 точности поиска и начальную точку ж0 G Rn, в которой вы числяем антиградиент w l = —grad/(cc°). Убедившись, что |гс711 > £ 3, формируем множество TQ моментов обновления ал горитма, полагаем k = 1 , принимаем р1 = w 1 и переходим к основной части алгоритма.
1. Минимизируя функцию фк{х) (5.12), находим значение Кк и точку х к= х к~1+ ЯкРк. В этой точке вычисляем антигра диент wk+l = —grad/(a;fc) и проверяем выполнение неравенства \wk+1\< £3. Если оно выполнено, то итерации прекращаем и полагаем ж* « ж*” 1, /(ж*) « f ( x k~1). В противном случае пе
реходим к п. 2. |
|
2. Если к £ Хо, то полагаем |
= ги*+1, к : = к+ 1 и возвра |
щаемся к п. 1 . В противном случае переходим к п. 3.
3. При помощи (5.8) или (5.9) вычисляем значение 7к и, используя (5.11), находим вектор рЛ+1. Полагаем к : = к + 1 и возвращаемся к п. 1 .
Пример 5.5. Используем описанный алгоритм для поис ка минимума функции f(x 1,^2) = (ж? —Х2 )2 + (х\ —I)2, рассмо тренной в примере 5.2. Зададим параметр точности поиска £3 = 10“3 и начальную точку х° = (—1 , —2), в которой /(ж0) = = 13.
|
|
|
|
|
|
Таблица 5.4 |
к |
х к |
f(x k) |
Хк |
|grad/(®fc)| |
||
1 |
(0,379, |
|
-1,483) |
3,031 |
0,086 |
3,475 |
2 |
(0,158, |
|
—0,103) |
0,726 |
0,394 |
1,624 |
3 |
(0,792, |
0,375) |
0,107 |
0,432 |
0,631 |
|
4 |
(0,746, |
0,494) |
0,068 |
0,194 |
0,346 |
|
5 |
(0,978, |
0,881) |
0,006 |
1,028 |
0,828 |
|
6 |
(0,965, |
0,924) |
0,001 |
0,114 |
0,047 |
|
7 |
(0,974, |
0,930) |
0,001 |
0,232 |
0,045 |
|
8 |
(0,978, |
0,960) |
0,000 |
0,519 |
0,058 |
|
9 |
(0,999, |
0,995) |
0,000 |
0,286 |
0,012 |
|
10 |
(0,998, |
0,996) |
0,000 |
0,098 |
0,001 |
|
11 |
(0,999, |
0,997) |
0,000 |
0,525 |
0,002 |
|
12 |
(0,999, |
0,999) |
0,000 |
0,398 |
0,001 |
|
13 |
(1 ,000, |
1 ,000) |
0,000 |
0,166 |
0,000 |
|
|
|
|
|
|
|
Таблица 5.5 |
к |
х к |
f(x k) |
Хк |
|grad/(a:fc)| |
||
1 |
(0,379, |
-1,483) |
3,031 |
0,086 |
3,475 |
|
2 |
(0,192, |
-0,064) |
0,663 |
0,401 |
1,551 |
|
3 |
(0,893, |
|
0,655) |
0,032 |
0,508 |
0,406 |
4 |
(0,901, |
|
0,818) |
0,001 |
0,265 |
0,219 |
5 |
(0,936, |
|
0,927) |
0,000 |
0,133 |
0,334 |
6 |
(0,999, |
|
0,997) |
0,000 |
0,116 |
0,003 |
7 |
(1 ,000, 1 ,000) |
0,000 |
0,377 |
0,001 |
||
8 |
(1 ,000, |
|
1 ,000) |
0,000 |
0,088 |
0,000 |
|
|
|
|
|
|
Таблица 5.6 |
к |
х к |
f(x k) |
Хк |
I grad У(аз*) | |
||
1 |
(0,379, |
-1,483) |
3,031 |
0,086 |
3,475 |
|
2 |
(0,531, |
|
0,326) |
0,222 |
0,472 |
1,034 |
3 |
(0,899, |
|
0,686) |
0,025 |
0,325 |
0,344 |
4 |
(0,990, |
|
0,988) |
0,000 |
0,443 |
0,050 |
5 |
(1 ,000, |
|
1 ,000) |
0,000 |
0,115 |
0,000 |
в