- •А.В. Аттетков, С.В. Галкин, В.С. Зарубин
- •ПРЕДИСЛОВИЕ
- •Задания для самопроверки
- •ОСНОВНЫЕ ОБОЗНАЧЕНИЯ
- •Буквы латинского алфавита
- •Буквы греческого алфавита
- •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
- •Аттетков Александр Владимирович Галкин Сергей Владимирович Зарубин Владимир Степанович
- •МЕТОДЫ ОПТИМИЗАЦИИ
Результаты вычислений, в которых параметр 7^, входящий в (5.1 1 ), определялся в соответствии с формулой (5.8), приведе ны в табл. 5.4, а аналогичные результаты, в которых параметр 7*. определялся в соответствии с (5.9), — в табл. 5.5. Для сравне ния также даны результаты вычислений, в которых параметр 7£ определялся в соответствии с формулой (5.10) (табл. 5.6). Траектории поиска точки минимума ж* = (1, 1) для всех трех вариантов вычислений показаны на рис. 5.6: a — вариант с формулой (5.8); б — вариант с формулой (5.9); в — вариант с формулой (5.10).
Из приведенных результатов видно, что необходимое ко личество итераций N при поиске точки минимума является наименьшим в случае, когда используется формула (5.10), а наихудшим оказался вариант с формулой (5.8). Для сравнения отметим, что для достижения той же точности при использова нии метода наискорейшего спуска требуется N = 96 итераций.
5.3. Метод Ньютона
Если целевая функция /(ж) является дважды дифференци руемой в Мп, то эффективность процесса поиска точки х * ее минимума можно повысить, используя информацию не толь ко о градиенте grad/(ж) этой функции, но и о ее матрице Гессе Н(ж). Алгоритмы такого поиска обычно относят к ме тоду Ньютона. В простейшем варианте алгоритма на каждой к-й итерации целевая функция аппроксимируется в окрестно сти точки х к~ 1 (на первой итерации в окрестности начальной точки ж0) квадратичной функцией <^(ж) и затем определяет ся точка х к минимума функции На следующей, (к+1 )-й итерации строится новая квадратичная аппроксимация уже в окрестности точки х к.
При помощи формулы Тейлора с остаточным членом в фор ме Пеано представим целевую функцию в окрестности точки
х к 1 в виде
f(x ) = / ( ж * - 1 ) + (grad/(®fc_1), х - ж *- 1 ) +
+ ^-[Н(хк~1)(х —х к~1), х —ж *- 1 ) + о(|ж —ж *- 1 |2).
Пренебрегая последним слагаемым в правой части, получаем квадратичную функцию
= Я®*-1) + (grad/ ( ж * - 1 ), х - ж *- 1 ) +
+ \ (Н (хк~1)(х - х к~1), ж - ж * " 1) .
Если матрица Гессе Н (хк~1) целевой функции, вычисленная в точке ж*-1, является положительно определенной, то точка х к минимума функции <^(ж) единственна и может быть найдена из условия, что ее градиент равен нулевому вектору:
grad(pk{x) = grad f{x k~l) + H (xk~l){x - x k~l) = 0n.
Отсюда получаем
x k = x k-1 _ t f - ^ - ^ g r a d / ^ 1), к e N. |
(5.13) |
Отметим, что (5.13) можно трактовать как рекуррентное со отношение итерационной процедуры метода Ньютона, пред назначенного для решения системы grad/(ж) = 0Пнелинейных уравнений [V]. Этим можно объяснить и название метода, при меняемого для минимизации целевой функции /(ж).
Если размерность п пространства Шп велика, то вычисле ние на каждой к-и итерации матрицы Н~~1 (хк~1), обратной к матрице Гессе целевой функции, может оказаться весьма тру доемкой процедурой. В таком случае точку х к целесообразнее искать путем минимизации функции <^(ж), например методом сопряженных направлений или методом градиентов. Подроб нее этот вопрос рассмотрен ниже.
Точку минимума функции ipk(x) можно считать лишь вспо
могательным приближением и, обозначив эту точку |
х к, для |
построения релаксационной последоват ельност и {х к} |
исполь |
зовать рекуррентное соотношение |
|
х к = х к~ 1 + як(хк - х к~1) = х к~1 + XfcP*, A; G N, |
(5.14) |
в котором значение х к> 0 можно выбрать различными способа ми. Вектор рк = х к —х к~ 1 задает на fc-й итерации направление спуска. Если матрица H (xk~l) положительно определенная, то это нью т оновское направление спуска. Действительно, с уче том (5.13) и (5.14) этот вектор можно представить в виде
рк = -H ~ 1 (xk~l)gia,df(xk~l), к е N, |
(5.15) |
так что
(grad/(a3fc_1),p fc) =
= -(gra d /(ж * -1), Я - 1 (аз*- 1 )grad/(ж *-1)) < 0.
Геометрически это означает, что вектор рк образует тупой угол с градиентом целевой функции, вычисленным в точке ж*- 1 (рис. 5.7).
Ясно, что если в (5.14) выбрать щ —1 , то (5.13) и (5.14) будут равносильны. Однако значение щ > 0 можно найти как
точку наименьшего значения функции = f ( x k~l + крк) или же при помощи исчерпывающего спуска в направлении вектора рк (согласно замечанию 4.2, эти значения могут не со впадать). Для выбора значения щ можно также использовать
метод дробления шага.
Если целевая функция является квадратичной вида (5.3) с положительно определенной матрицей Q, то исчерпывающий спуск из произвольной начальной точки х° Е Шп в ньютонов ском направлении приводит в точку х* минимума этой функции за одну итерацию (см. 4.5). Для неквадратичной функции нью тоновское направление в общем случае не проходит через точку ее минимума, хотя часто оказывается к~этой точке ближе, чем направление антиградиента. Если это так, то спуск в нью тоновском направлении за одну итерацию позволяет достичь более существенного убывания минимизируемой неквадратич ной функции и получить более близкое приближение к искомой точке х * минимума по сравнению со спуском в направлении ан тиградиента.
Если график целевой функции имеет овражную структуру, то вектор рк (5.15) может составлять с осью оврага меньший угол, чем антиградиент. Эта особенность при минимизации таких функций делает алгоритмы метода Ньютона более эф фективными, чем алгоритмы метода градиентного спуска.
Пример 5.6. На примере минимизации функции f(x 1,^2) = = (х\ —Х2 ) 2 + {х\ —I)2 сравним алгоритмы метода Ньютона при Xfc = 1 в (5.14) (рис. 5.8, а) и метода наискорейшего спуска
(рис. 5.8, б). Выбраны начальная точка х° = (—1, —2), в кото рой f(x°) = 13, и параметр точности поиска е3 = 10_3
В случае метода Ньютона (см. рис. 5.8, а) получено прибли женное значение точки минимума х* & (0,999, 0,999) за N = 5 итераций, в то время как в случае метода наискорейшего спус
ка (см. рис. 5.8, б) приближенное значение точки |
минимума |
х * « (0,999, 0,998) достигнуто за N = 96 итераций. |
Из резуль- |
Рис. 5.8
татов вычислений видно, что метод Ньютона по сравнению с методом наискорейшего спуска дает значительное уменьшение количества итераций и быстрее обеспечивает заданную точ ность решения задачи.
Обратим внимание на то, что в методе Ньютона /(ж 1) < < f(x 2) (см. рис. 5.8, а), т.е. метод Ньютона привел к после довательности, не являющейся релаксационной. Такое может происходить при xjt = 1 и при больших отклонениях начальной точки от точки минимума. #
Сходимость метода Ньютона существенно зависит от вы бора начального приближения. Можно показать*, что если це левая функция сильно выпуклая и для любых точек ж, у Е Шп
относительно матрицы Гессе Н(ж) целевой функции выполнено неравенство ||#(а?) —Н (у)|< L\х —у|, L > 0, а начальное при ближение выбрано удачно (точка ж0 расположена достаточно
*См.: Васильев Ф .П .
близко к точке ж* минимума), то алгоритм метода Ньютона при значении щ = 1 в (5.14) обладает квадратичной скоростью сходимости, т.е. справедлива оценка
\xk -x*\ sSCI®*-1-® * !2, fc€N, С = const.
Это позволяет для такой функции использовать в качестве условия прекращения итераций выполнение первого неравен ства (4.18) \хк— x k~l\< £i, где е\ — заданное достаточно малое положительное число. Но в случае, когда целевая функция не является сильно выпуклой или же начальное приближение на ходится далеко от искомой точки ж*, метод Ньютона может расходиться.
Квадратичная скорость сходимости, а также возможность контроля за соблюдением достаточного условия минимума це левой функции /(ж) на каждой k-и итерации при помощи ма трицы Гессе Н (хк~1) этой функции способствуют высокой эф фективности рассматриваемого алгоритма. Однако при его практической реализации возникают две проблемы.
Первая из них — это сохранение положительной определен ности матрицы Гессе Н (хк~1) целевой функции на каждой fc-й итерации, так как иначе вектор рк = - Н ~ 1 (хк~г) gradf ( x k~l) может не соответствовать направлению спуска, вдоль которого эта функция убывает. Более того, матрица Н (хк~1) может быть вырожденной и не иметь обратной матрицы. Эту пробле му можно решить, если направление спуска задавать вектором Рк = -{щ1п + Н (хк~г)) grad/(ж *-1), где 1п — единичная ма трица порядка п, а % ^ 0 — параметр, выбираемый так, чтобы в точке ж*- 1 матрица
Нк = щ1п + Н {хк~1), к е N, (5.16)
была положительно определена* В связи с этим более серьезной проблемой является необхо
димость вычисления и обращения на каждой итерации матрицы
*См.: Базара М., Шетти К а также: Реклейтпис Г .у Рейвиндран А .}
Рэгсдел К.
порядка п, что в случае большой размерности пространства Шп является достаточно трудоемкой операцией. На практи ке обычно не вычисляют матрицу, обратную к положительно определенной матрице Я^, а вектор рк находят из решения си стемы линейных алгебраических уравнений (СЛАУ)
Hkpk = — grad/(a3fc-1), к еN. |
(5.17) |
Эту СЛАУ можно решить различными численными метода ми, например прямыми и итерационными [III], [IV]. Можно также решать СЛАУ путем минимизации квадратичной функ ции (НьРк, Рк)/% + (grad/(xfc_1), рк) методами сопряженных направлений или градиентов, поскольку выполнение (5.17) явля ется необходимым и достаточным условием минимума такой функции.
Опишем алгоритм варианта метода Ньютона поиска точки ж* минимума дважды дифференцируемой целевой функции /(ж), х Е Rn, в котором направление спуска определяется путем решения СЛАУ (5.17). Предварительно выбираем начальную точку х° Е Мп и значение £3 > 0 в условии |grad/(cc/c” 1)| < £3 прекращения итераций. Полагаем к = 1 и переходим к основной части алгоритма.
1. В точке х к~ 1 находим gradf{x k~l) и матрицу Гессе Н(хк~1) целевой функции. Если |grad/(xA:“ 1)| < £ 3? то итера ции прекращаем, принимая х * « х к~1 и /(ж*) « f ( x k~1). Ес ли при этом матрица Н (хк~1) положительно определенная, то ж* — точка минимума целевой функции, а иначе необходимо провести дополнительное исследование поведения функции в окрестности точки ж* При |grad/(ж^-1)|^ £3 и положительно определенной матрице Я (ж*-1) полагаем Я * = Я (ж*-1) и пере
ходим к п. 3. В противном случае переходим к п. 2. |
_ |
2. Подбираем значение г]к > 0, при котором матрица |
Hk |
(5.16) будет положительно определенной, и переходим к п. 3. 3. Из решения СЛАУ (5.17) находим вектор рк и затем
точку х к= ж* '1 + р к. Полагаем к := к+1 и возвращаемся к п. 1.