4.3. Метод условного градиента
При рассмотрении данного метода будет использоваться следующая теорема [1], [5]:
Теорема 2 (Критерий оптимальности) Пусть U - выпуклое множество, функция
,
- множество точек минимума J(u) на U. Тогда в любой точке
необходимо выполняется неравенство
(35)
при всех
, а в случае
неравенство (35) превращается в равенство
. Если, кроме того, J(u) выпукла на U, то условие (35) является достаточным для того, чтобы
.
Пусть
- очередное приближение к решению гладкой задачи выпуклого программирования:
,
- выпуклое замкнутое множество,
- выпуклая дифференцируемая функция на
. Причем
. Тогда в окрестности точки
функция
представима в виде:
,
и линейная функция
является приближением разности
с точностью до величины
в некоторой окрестности точки
.
Поставим вспомогательную задачу минимизации на множестве
линейной функции
, т.е.
. (36)
Пусть
- решение этой задачи. Следующее приближение
к точке минимума
функции
на множестве
по методу условного градиента находится по формуле
. (37)
В силу выпуклости допустимого множества,
.
Величина
из (37) в различных вариантах метода условного градиента вычисляется по-разному.
Опишем два способа определения
:
1)
, где
найдено из условия наискорейшего спуска по направлению
,
где
.
2) В начале выполнения итерации (37) полагают
, после чего проверяют условие:
. (38)
Если оно нарушается, то
уменьшают (дробят) в 2 раза и повторно проверяют (38). Дробление
производят до выполнения неравенства (38), после чего переходят к следующей итерации (37).
Условие окончания вычислений по методу условного градиента совпадает с аналогичным условием метода проекции градиента.
Отметим, что вспомогательная задача (36) является, вообще говоря, задачей нелинейного программирования. Укажем случай, когда поиск её решения
не представляет затруднений [7], [8].
1. Допустимое множество
задано линейными ограничениями и условием неотрицательности переменных. Тогда (9) – это задача линейного программирования, и её решение можно найти с помощью симплекс-метода [16].
2. Допустимое множество
![]()
является
- мерным параллелепипедом. Тогда
(39)
3. Допустимое множество
![]()
является шаром радиуса
с центром в точке
. Тогда
.
Пример 5. Решить задачу нелинейного программирования
![]()
методом условного градиента, завершая вычисления при выполнении неравенства
.
Решение. В качестве начального приближения выберем, например, точку
.
Шаг 1. Найдём градиент
в точке
.
Составим вспомогательную задачу

Это задача линейного программирования, её можно решить симплекс-методом [16]. Однако, допустимое множество – прямоугольник, поэтому проще воспользоваться соотношением (39), записав его для данной задачи:

Откуда следует
.
Найдём
первым способом. В данном случае

Из условия
находим
. Поэтому
.
Вычислим очередное приближение
по формуле (37):
![]()
Так как
, то требуемая точность не достигнута.
Результаты вычислений на следующих шагах метода условного градиента приведены в таблице 5.
Таблица 5.
Метод условного градиента
|
|
|
|
|
|
|
1 |
(0,8; 1,6) |
1,789 |
(1; 0) |
0,462 |
|
2 |
(0,892; 0,861) |
0,745 |
(1; 2) |
0,212 |
|
3 |
(0,915; 1,103) |
0,213 |
(1; 0) |
0,168 |
|
4 |
(0,929; 0,917) |
0,187 |
(1; 2) |
0,140 |
|
5 |
(0,939; 1,069) |
0,152 |
(1; 0) |
0,121 |
|
6 |
(0,947; 0,940) |
0,129 |
(1; 2) |
0,106 |
|
7 |
(0,952; 1,053) |
0,113 |
(1; 0) |
0,095 |
|
8 |
(0,957; 0,953) |
0,1 |
Точность достигнута |
|
Окончательно
,
.