Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
wiski.docx
Скачиваний:
60
Добавлен:
20.09.2019
Размер:
911.24 Кб
Скачать

15. Методы условной минимизации. Метод проекции градиента.

Будем рассматривать задачу

f(x)→inf; xUEn, (6)

где множество U необязательно совпадает со всем пространством Еn, а функция f(x)C'(U). Непосредственное применение описанного выше градиентного метода в случае U≠Еn может привести к затруднениям, так как точка xk+1 из (3) при каком-то k может не принадлежать U. Однако эту трудность можно преодолеть, если полученную с помощью формулы (3) точку xк  kf '(xк) при каждом к проектировать на множество U.

Определение 1. Пусть U  некоторое множество из Еn. Проекцией точки x из Еn называется ближайшая к х точка множества U, т.е. wU, удовлетворяющая условию

Проекцию точки х на множество U будем через PrU(x) =w.

В результате мы придем к так называемому методу проекции градиента.

Рис. 5.1. Метод проекции градиента.

А именно, пусть x0U — некоторое начальное приближение. Далее будем строить последовательность {uк} по правилу

xк+1 = PrU(xк  kf '(xк)), k= 0, 1, …, (7)

где k  положительная величина. Если U — выпуклое замкнутое множество и способ выбора {k} в (7) задан, то в силу теоремы 4.4.1 [Васильев] последовательность {xk} будет однозначно определяться условием (7). В частности, при U = En метод (7) превратится в градиентный метод.

Если в (7) на некоторой итерации оказалось xk+1 = xk (например, это случится при f '(xk) = 0), то процесс (7) прекращают. В этом случае точка uk удовлетворяет необходимому условию оптимальности

xk = PU(xk  kf '(xk)),

и для выяснения того, является ли в действительности xk решением задачи (6) или нет, при необходимости нужно провести дополнительное исследование поведения функции f(x) в окрестности точки xk. В частности, если f(x)  выпуклая функция, то такая точка xk является решением задачи (6).

В зависимости от способа выбора k в (7) можно получить различные варианты метода проекции градиента. Укажем несколько наиболее употребительных на практике способов выбора k.

1) Введем функцию одной переменной

k() = f(PrU(xk  kf '(xk))), (0)

и определим k из условий

k(k) = , k >0. (8)

Очевидно, при U = En метод (7), (8) превратится в метод наискорейшего спуска. Поскольку величину k из условий (8) удается найти точно лишь в редких случаях (возможно также, что нижняя грань в (8) не всегда достигается), то k на практике определяют приближенно.

2) Иногда приходится довольствоваться нахождением какого-либо k>0, обеспечивающего условие монотонности: f(xk+l)< f(xk). Для этого обычно выбирают какую-либо постоянную  > 0 и в методе (2) на каждой итерации берут k = , а затем проверяют условие монотонности и при необходимости дробят величину k = , добиваясь выполнения условия монотонности.

3) Если функция f(x) принадлежит С1,1(U) и константа Липшица L для градиента f '(x) известна [Васильев], то в (7) в качестве k можно взять любое число, удовлетворяющее условиям

0<0 ≤ k ≤ 2/(L+2), (9)

где 0,   положительные числа, являющиеся параметрами метода.

4) Возможен выбор k из условия

f(xk)  f(PrU(xk  kf '(xk)))  xk  PrU(xk  kf '(xk )), (10)

где  > 0 — параметр метода. Для определения такого k можно взять какое-либо число k =  (например,  = 1) и затем дробить его до тех пор, пока не выполнится условие (10). Если f(x) принадлежит С1,1(U), то можно показать, что выполнения условия (10) можно добиться за конечное число дроблений.

5) Возможно априорное задание величин k из условий

k >0, к = 0,1,…; , (11)

например, k = (k+1)-1 (k = 0, 1, ...). Сходимость метода (7), (11) была исследована в [Васильев].

Заметим, что описанные здесь варианты метода (7) при U = Еn переходят в соответствующие варианты градиентного метода.

На практике для ускорения сходимости вместо (7) часто пользуются более общим вариантом метода проекции градиента

xк+1 = xk + k(PrU(xк  kf '(xк))  xk) =

= k PrU(xк  kf '(xк)) + (1  k)xk, 0<k ≤ 1, k >0, (7')

где параметры k и k могут выбираться различными способами.

Заметим, что в методах (7) или (7') на каждой итерации, кроме выбора параметров k и k, нужно еще проектировать точку на множество U или, иначе говоря, решить задачу минимизации

Fk(x) = x  (xk  k f '(xк))2  inf, xU; (12);

здесь возможно использование функции

Fk(x) = x  xk2 + 2k<f '(xк), x xk>,

отличающейся от предыдущей функции постоянным слагаемым. Задачу (12) можно решать приближенно и вместо точки xk+1U, Fk(xk+1) = = Fk*, определить ее приближение zk+1 из условий

zk+1U, Fk(zk+1) ≤ Fk* + k2. (13)

Конечно, задачи (12), (13) далеко не всегда просто решаются. Поэтому методом проекции градиента обычно пользуются лишь в тех случаях, когда проекция точки на множество легко определяется. Например, когда множество U представляет собой шар в Еn, параллелепипед, гиперплоскость, полупространство или положительный октант, задача проектирования точки решается просто и в явном виде, и реализация каждой итерации метода проекции градиента в этом случае не вызывает особых затруднений. Если же задача проектирования для своего решения в свою очередь требует применения тех или иных итерационных методов, то эффективность метода проекции градиента, вообще говоря, значительно снижается.

Алгоритм метода проекции градиента.

Будем считать, что некоторая начальная точка x0 выбрана так, чтобы выполнялись условия теоремы Вейерштрасса, а именно множество С(x0) = {xRn  f(x)  f(x0)} было замкнуто и ограничено.

Шаг 1. Полагаем k=0 (номер итерации), xk = x0 = 0,  = 0,01.

Шаг 2. Вычисляем h(xk) = f '(xk), а также k = |xk  xk-1 |.

Шаг 3. Если k <, то перейти в шагу 6, иначе перейти к следующему шагу 4.

Шаг 4. Вычислим k>0 из условия.

Введем функцию одной переменной

k() = f(PrU(xk  kf '(xk))), (0)

и определим k из условий

k(k) = , k >0

Шаг 5. Вычисляем следующее приближение

xk+1 = PrU(xk  kf '(xk)).

Полагаем k:= k+1 и переходим к шагу 2.

Шаг 6. В качестве точки минимума возьмем последнее приближение

x* = xk,

а также в качестве минимального значения функции f(x*) = f(xk).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]