
- •Аннотация
- •Оглавление
- •Предисловие
- •ГЛАВА 1. Задачи оптимизации. Основные определения
- •1.1. Задачи оптимизации
- •1.2. Минимум функции одной переменной
- •1.3. Унимодальные функции
- •1.4. Выпуклые функции
- •1.5. Условие Липшица
- •1.6. Классическая минимизация функции одной переменной
- •Вопросы и задания для самоконтроля
- •ГЛАВА 2. Одномерная минимизация функций. Прямые методы
- •2.1. О прямых методах
- •2.2. Метод перебора
- •2.3. Метод поразрядного поиска
- •2.4. Метод дихотомии
- •2.5. Метод золотого сечения
- •2.6. Сравнение методов перебора, дихотомии и золотого сечения
- •2.7. Метод парабол
- •Вопросы и задания для самоконтроля
- •Задание для численной реализации в среде программирования MATLAB
- •ГЛАВА 3. Одномерная минимизация. Методы, использующие информацию о производных целевой функции
- •3.1. Метод средней точки
- •3.2. Метод хорд
- •3.3. Метод Ньютона
- •3.4. Возможные модификации метода Ньютона
- •3.5. Методы минимизации многомодальных функций
- •Вопросы и задания для самоконтроля
- •Задание для численной реализации в среде программирования MATLAB
- •ГЛАВА 4. Задача минимизации функции многих переменных. Необходимые и достаточные условия безусловного экстремума
- •4.1. Постановка задачи и определения
- •4.2. Свойства выпуклых множеств и выпуклых функций
- •4.3. Необходимые и достаточные условия безусловного экстремума
- •Вопросы и задания для самоконтроля
- •5.1. Выпуклые квадратичные функции
- •5.2. Общие принципы многомерной минимизации
- •5.3. Метод градиентного спуска
- •5.4. Метод наискорейшего спуска
- •5.5. Метод сопряженных направлений
- •5.6. Метод сопряженных градиентов
- •5.7. Метод Ньютона
- •5.8. Квазиньютоновские методы
- •Вопросы и задания для самопроверки
- •Задание для численной реализации в среде программирования MATLAB
- •ГЛАВА 6. Прямые методы безусловной минимизации многомерных задач
- •6.1. Проблема минимизации многомерных задач
- •6.2. Минимизация функций по правильному (регулярному) симплексу
- •6.3. Минимизация функций при помощи нерегулярного симплекса
- •6.4. Метод циклического покоординатного спуска
- •6.5. Метод Хука–Дживса
- •6.6. Методы случайного поиска
- •Вопросы и задания для самопроверки
- •Задание для численной реализации в среде программирования MATLAB
- •7.1. Условный экстремум при ограничениях типа равенств
- •7.2. Условный экстремум при ограничениях типа неравенств
- •Вопросы и задания для самопроверки
- •ГЛАВА 8. Линейное программирование
- •8.1. Определения. Примеры задач линейного программирования
- •8.2. Общая и каноническая задачи линейного программирования
- •8.3. Геометрическое истолкование задач линейного программирования
- •8.4. Аналитическое решение задач линейного программирования
- •Вопросы и задания для самоконтроля
- •Литература
процедуру. При этом градиент вычисляется гораздо реже, поскольку это происходит только при смене направлений движения.
5.4. Метод наискорейшего спуска
Данный метод является вариантом градиентного спуска. Здесь также полагают pk = − f (xk ), но величина шага αk из (5.11) находится в результате решения задачи одномерной оптимизации
|
|
|
|
|
|
|
Φk (α) → min , |
Φk (α) = f (xk −α f (xk )), α > 0 , |
|
|
(5.13) |
||
т.е. на каждой итерации |
в направлении антиградиента − f (xk ) совершается |
||||||||||||
исчерпывающий спуск. |
|
|
|
|
|
|
|||||||
|
Алгоритм метода следующий. |
|
|
|
|
|
|||||||
|
Шаг |
1. |
Задать параметр точности ε >0 , |
выбрать |
x En . |
Вычислить |
f (x) . |
||||||
Перейти к шагу 2. |
|
|
|
|
|
|
|||||||
|
Шаг |
2. |
Вычислить |
f (x) и проверить |
условие |
достижения |
точности: |
||||||
|
f (x) |
|
|
|
<ε . Если оно выполнено, вычисления завершить, |
полагая x = x , f |
= f (x) . |
||||||
|
|
|
|||||||||||
Иначе − перейти к шагу 3. |
|
|
|
|
|
|
|||||||
|
Шаг 3. Решить задачу одномерной оптимизации (5.13) для |
xk = x , |
т.е. найти |
||||||||||
α . Положить x = x −α f (x) и перейти к шагу 2. |
|
|
|
|
Следует отметить, что решение задачи (5.13) можно получить одним из рассмотренных для одномерной минимизации способов. Если, кроме того, функция
f (x) квадратична, то |
для |
величины |
шага исчерпывающего спуска |
можно |
||||||||
применить |
формулу |
αk = − |
( f (xk ), pk ) |
= − |
(Axk |
+ b, pk ) |
|
, |
полученную |
выше, |
||
|
(Apk , pk ) |
|||||||||||
|
|
|
|
(Apk , pk ) |
|
|
|
|
|
|||
положив pk |
= − f (xk ) . |
|
|
|
|
|
|
|
|
|
|
|
Пример |
5.5. Рассмотрим |
|
функцию |
|
f (x) = x2 +100x2 |
|
и используем |
метод |
||||
|
|
|
|
|
1 |
2 |
|
|
|
наискорейшего спуска для решения задачи ее минимизации из начальной точки
x0 = (1, 1) . |
|
|
|
|
|
|
|
|
|
|
|
□ Найдем компоненты градиента |
∂ f |
|
∂ f |
|
|
|
2 |
0 |
|
||
|
= 2x , |
|
|
= 200x |
|
и гессиан |
A = |
|
|
. |
|
∂x |
∂x |
|
|
0 |
200 |
||||||
|
1 |
2 |
|
2 |
|
|
|
||||
|
1 |
|
|
|
|
|
|
|
|
|
Величину шага исчерпывающего спуска αk найдем по формуле для квадратичной функции. Результаты вычислений приведены в табл. 5.1.
83
Результаты вычислений задачи методом наискорейшего спуска Таблица 5.1
Номер |
x1k |
x2k |
f (xk ) |
|
f (xk ) |
|
|
итерации |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
1 |
101 |
200 |
|
||
|
|
|
|
|
|
|
|
1 |
9,9 10−1 |
−9,9 10−5 |
9,8 |
10−1 |
1,98 |
|
|
|
|
|
|
|
|
|
|
2 |
9,7 10−3 |
9,7 10−3 |
9,5 |
10−3 |
1,94 |
|
|
|
|
|
|
|
|
||
3 |
9,6 10−3 |
−9,6 10−7 |
9,2 |
10−5 |
1,92 10−2 |
||
|
|
|
|
|
|
||
… |
… |
… |
… |
|
… |
||
|
|
|
|
|
|
|
|
Полученные результаты можно сравнить с решением этой же задачи методом градиентного спуска. ■
Отметим главный недостаток градиентных методов, который заключается в неприемлемо низкой скорости сходимости в случаях, когда поверхности уровня целевой функции сильно "вытянуты", т.е. имеют овражный характер. Геометрически происходит следующее: генерируемые методом приближения быстро спускаются почти на "дно оврага", а затем начинают "прыгать" с одного его "склона" на другой, причем длина осуществляемых шагов все время уменьшается. Особенно сильный замедляющий эффект это явление оказывает в том случае, когда "дно оврага" изогнуто.
В следующих разделах главы будут рассмотрены методы, обладающие высокой скоростью сходимости и значительно менее чувствительные к овражному характеру целевой функции задачи.
Рассмотрим один важный класс методов, который не требует информации о вторых производных целевой функции, как метод Ньютона, однако обладает более высокой скоростью сходимости, чем градиентные методы. Повышение скорости сходимости здесь не связано с существенным ростом трудоемкости итерации, а обусловлено идей, лежащей в основе метода.
5.5. Метод сопряженных направлений
Этот итерационный метод, предназначенный для отыскания минимума выпуклой квадратичной функции, приводит к результату за конечное число шагов. От такого метода разумно ожидать высокой эффективности и в случае выпуклой неквадратичной функции.
84

Разберем идею метода на примере поиска минимума в случае функции двух переменных. Линиями уровня сильно выпуклой квадратичной функции являются эллипсы. Пусть p1 , p2 − направления главных осей этих эллипсов (они могут быть
найдены как ортонормированный |
базис |
из собственных векторов |
матрицы A |
квадратичной функции). Если выбрать произвольную точку x0 E2 |
и выполнить |
||
итерационную процедуру xk +1 = xk |
+αk p k , |
k = 0, 1,…, где величина αk находится |
из условия исчерпывающего спуска, то, очевидно, потребуется не более двух шагов для отыскания точки x .
Такого же результата можно достичь и другим способом. Выберем некоторое направление p1 и две точки x0 и y0 такие, что векторы x0 − y0 и p1 были неколлинеарны. Выполнив исчерпывающий спуск из точек x0 и y0 в направлении
p1 , получим точки x1 и y1 . По свойству исчерпывающего спуска в точках x1 и y1
имеет место касание соответствующих прямых (направлений убывания) и эллипсов
(линий уровня целевой функции). По свойству эллипсов, точки x , x1 и y1
расположены на одной прямой. Поэтому, полагая p2 = x1 − y1 , и решая задачу f (x1 +α p2 ) → min , мы находим точку x . Таким образом, и в этом случае решение задачи минимизации сильно выпуклой квадратичной функции будет получено за конечное число шагов.
y0 p1
x0
p1
y1
x1 p2
x*
p2 = x1 - y1
Рис. 5.3. Определение направления p2 и положение точки x в E2
Рассмотренному на примере квадратичной функции двух переменных методу может соответствовать такой алгоритм.
Шаг 1. Выбрать начальную точку x0 E2 . Перейти к шагу 2.
85

Шаг 2. Положить p1 |
= e1 |
и найти точку x 1 |
с помощью исчерпывающего спуска |
|
из точки x0 по направлению p1 |
|
|||
f (x1 ) = min f (x0 +α p1 ) . |
Перейти к шагу 3. |
|
||
α E |
|
|
|
|
Шаг 3. а) положить y0 = x1 + e2 ; |
|
|||
б) найти точку |
y1 |
из |
условия исчерпывающего спуска из точки y0 по |
|
направлению p1 |
|
|
|
|
f ( y1 ) = min f ( y0 +α p1 ); |
|
|
||
α E |
|
|
|
|
в) положить p2 |
= x1 − y1 , найти точку x2 |
из условия f (x2 ) = min f (x1 +α p2 ) , |
||
|
|
|
|
α E |
вычисления закончить, положив x = x2 .
Графическая иллюстрация работы алгоритма представлена на рис. 5.4. Поиск точки минимума проводится по так называемым сопряженным направлениям.
x2
|
|
|
|
y0 |
y1 |
|
e2 |
x1 |
|
|
|
|
|
|
|
|
|
x* |
|
|
|
|
e1 |
|
e2 |
|
|
|
|
|
|
p2 |
|
|
|
|
x0 |
p1 |
x1 |
|
|
Рис. 5.4. Минимизация функции с помощью сопряженных направлений в E2 |
||||||
Определение. |
Ненулевые векторы |
p1 , ..., pk называются сопряженными |
||||
относительно матрицы A размера (n × n) или A −ортогональными, если |
||||||
|
|
( A pi , p j ) = 0, |
i ≠ j, |
i, j =1, ..., k. |
|
(5.14) |
Пример |
5.6. |
Направления |
p1 , p2 , |
использованные |
в описанном выше |
|
алгоритме |
минимизации квадратичной |
функции |
двух |
переменных, являются |
||
A −ортогональными. |
|
|
|
|
86
□ |
Рассмотрим |
скалярное |
произведение |
|
(A p2 , p1 ) = (A(x1 − y1 ), p1 ) = |
|||||
( f (x1 ), p1 ) −( f ( y1 ), p1 ) . Так как точки |
x1 |
и |
y1 |
|
получены |
в результате |
||||
исчерпывающего спуска |
по направлению |
p1 , |
то |
оба |
скалярных |
произведения |
||||
( f (x1 ), p1 ) и ( f ( y1 ), |
p1 ) |
равны нулю, поэтому и (A p2 , |
p1 ) = 0 . ■ |
|
||||||
Утверждение. Система из n |
векторов |
p1 , ..., pn , |
сопряженных относительно |
положительно определенной матрицы A , линейно независима.
□ Предположим противное, т.е. что существует линейная комбинация, равная нулю
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
|
∑γi |
pi = 0, |
|
|
|
|
|
(5.15) |
||
|
|
|
i=1 |
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
||
где не все γi = 0, |
например, γk ≠ 0. |
Умножим обе части равенства (5.15) скалярно |
||||||||||
на вектор Apk . |
Тогда, с |
учетом |
свойства |
A −ортогональности |
(5.14), получим |
|||||||
γk ( A pk , p k ) = 0. |
В |
силу |
положительной |
определенности |
|
матрицы |
A для |
|||||
ненулевого вектора pk последняя |
квадратичная |
форма |
положительна, |
|||||||||
следовательно, γk = 0. Полученное противоречие доказывает утверждение. ■ |
||||||||||||
Таким образом, |
n ненулевых A −ортогональных векторов образуют базис в En . |
|||||||||||
Рассмотрим минимизацию в En квадратичной функции |
f (x) = |
1 |
(Ax, x) + (b, |
x) + c с |
||||||||
2 |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
||
положительно определенной матрицей A , используя итерационный процесс |
|
|||||||||||
|
|
xk = xk −1 +αk |
pk , |
k =1, 2, ... , |
|
|
|
|
(5.16) |
|||
где векторы pk A −ортогональны. |
|
|
|
|
|
|
|
|
Утверждение. Если в итерационном процессе (5.16) на каждом шаге
используется исчерпывающий спуск, то величина шага αk |
будет |
||||
αk = − |
( f (x0 ), pk ) |
, k =1, 2, ... |
(5.17) |
||
(Apk , |
pk ) |
||||
|
|
□ Раскрывая рекуррентную формулу (5.16), получаем
k |
|
|
xk = x0 + ∑αi |
pi . |
(5.18) |
i=1 |
|
|
|
|
Из формулы (5.18), учитывая выражение для градиента квадратичной функцииf (x) = Ax + b , находим
87