
- •Методы оптимизации Введение
- •1. Функции одной переменной
- •1.1 Поиск методом золотого сечения
- •1.2 Квадратичная интерполяция
- •1.3 Кубическая интерполяция (метод Дэвидона)
- •2. Функции нескольких переменных
- •2.1 Предварительные сведения
- •2.1.1 Общая классификация методов
- •2.1.2 Векторные обозначения
- •2.2 Методы прямого поиска
- •2.2.1 Метод покоординатного спуска (метод релаксации)
- •2.2.2 Метод Хука-Дживса
- •2.2.3 Метод деформируемого многогранника Нелдера-Мида
- •2.3 Методы с использованием производных
- •2.3.1 Метод скорейшего спуска
- •2.3.3 Квадратичные функции и сопряженные направления
- •2.3.4 Метод Флетчера-Ривса
- •2.3.5 Метод Дэвидона-Флетчера-Пауэлла
2.3.4 Метод Флетчера-Ривса
Как было показано в предыдущем разделе, задачу минимизации квадратичной функции N переменных можно решить не более чем за N одномерных поисков, если проводить их вдоль направлений, сопряженных относительно матрицы A. Собственно говоря, минимум квадратичной функции независимо от числа переменных можно найти еще быстрее — за один шаг, решив систему линейных уравнений (16). Метод сопряженных направлений более интересен с точки зрения его применения для минимизации функций общего вида.
Пусть F(x) – произвольная функция N переменных, а x* – точка ее минимума (возможно, локального). Предполагая, что F(x) по меньшей мере дважды непрерывно дифференцируема, приближенно представим ее в окрестности x* с помощью формулы Тейлора:
(29)
где H – матрица вторых производных (матрица Гессе), вычисленная в точке x* (определение H см. в разделе 2.3.2). Выражение (29) не содержит первых производных функции F(x), поскольку в точке минимума x* они равны нулю.
Сравнивая (29) с (14), видим, что в достаточной близости от минимума (когда вклад третьей и более высоких степеней расстояния xx* мал) любая функция может приближенно рассматриваться как квадратичная, причем матрице A из представления (14) соответствует матрица Гессе H. Необходимым условием минимума является положительная определенность матрицы Гессе в точке x*. Два первых слагаемых во второй строке (29) соответствуют скалярной константе c в (16). Третий член в (29) содержит слагаемые, линейные относительно x, причем вектору коэффициентов b из (16) соответствует произведение Hx*.
Поскольку метод сопряженных направлений находит минимум квадратичной функции за конечное число шагов, можно надеяться, что в общем случае он позволит быстро достичь конечного результата после того, как текущая точка приблизилась к минимуму, и формула (29) стала удовлетворительно аппроксимировать поведение F(x). Однако, вариант метода, рассмотренный в предыдущем разделе, вряд ли может быть полезным, поскольку в расчетные формулы входит матрица A, а следовательно, придется вычислять вторые производные. К тому же приближение (29) предполагает, что матрица H рассчитывается в точке минимума x*, которая первоначально неизвестна.
Оказывается, сопряженные направления можно построить, не зная матрицы A. Соответствующий алгоритм был предложен Флетчером и Ривсом (R. Fletcher, C. M. Reeves; 1964).
Во-первых, необходимо отказаться от вычисления коэффициентов k по явным формулам (19), (24), (28) и т. д., а точку минимума вдоль заданного направления находить с помощью непосредственной одномерной оптимизации, применяя методы, описанные в разделе 1 (см. также п. 2.1.2). Во-вторых, выражения для коэффициентов k можно преобразовать следующим образом.
Пусть на k-м шаге алгоритма проводился поиск минимума от точки xk вдоль направления pk=gk+k1pk1, причем в результате получена точка минимума xk+1. На следующем шаге для поиска берется направление pk+1=gk+1+kpk. Направления pk и pk+1 сопряжены, т. е.
(gk+1+kpk)Apk=0. (30)
Точки xk и xk+1 лежат на прямой, параллельной pk, так что в уравнении (30) вектор pk (с точностью до коэффициента k) можно заменить разностью xk+1xk:
(gk+1+kpk)A(xk+1xk)=0.
Далее, так как, согласно (15), gk=Axk+b и gk+1=Axk+1+b, то gk+1gk=Axk+1Axk. Подставляя это соотношение в предыдущее уравнение, имеем:
(gk+1+kpk)(gk+1gk)=0. (31)
Учитывая, что направление поиска и градиент в найденной точке минимума взаимно ортогональны, т. е. pk1gk=0 и pkgk+1=0, то из (31) окончательно получаем:
. (32)
Таким образом, для построения сопряженных направлений поиска достаточно уметь вычислять только градиент минимизируемой функции.