Метод приведенного градиента (МПГ) основан на сокращении размерности задачи с помощью представления всех переменных через множество независимых переменных. Впервые его предложил Вульф в (1963) для задач линейного программирования с линейными ограничениями. Позднее этот метод был обобщен на случай нелинейных ограничений. Итак, рассмотрим следующую задачу:
минимизировать (6.7.1)
при условиях
, (6.7.2)
, (6.7.3)
где матрица – матрица порядка
ранга
;
-
-мерный вектор, а функция
непрерывно дифференируема. Сделаем следующее предположение о невырожденности матрицы
. Любые
столбцов
линейно независимы, и каждая крайняя точка допустимой области имеет ровно
положительных переменных и не более чем
нулевых компонент.
Пусть – допустимая точка. По предположению о невырожденности матрица
может быть представлена в виде
, где
– невырожденная матрица
, а вектор
, где
– базисный вектор, а
– небазисный вектор. Пусть
, где
– градиент функции
по базисным переменным.
Вспомним, что направление является возможным направлением спуска для функции
в точке
, если
и
, если
.
Определим возможное направление спуска в данной задаче.
Представим вектор в виде
. Заметим, что равенство
автоматически выполняется, если для любого
положить
Обозначим через
(6.7.4)
приведенный градиент.
Исследуем:
. (6.7.5)
Необходимо выбрать так, чтобы
и
если
. Введем следующее правило. Для каждой небазисной компоненты
положим
, если
и возьмем
, если
. Это обеспечивает выполнение неравенства
, если
. Кроме того,
и строгое неравенство имеет место при
.
Если , то
– возможное направление спуска. Кроме того,
тогда и только тогда, когда
– точка Куна-Таккера. Доказательство этого утверждения можно найти в [2].
Рассмотрим алгоритм приведенного градиента (ПГ) для решения задачи (6.7.1)-(6.7.3).
Предполагается, что любые столбцов
линейно независимы.
Начальный этап. Выбрать точку , удовлетворяющую условиям
. Положить
и перейти к основному этапу.
Основной этап. Первый шаг. Положить , где
и
получены по формулам (6.7.4) и (6.7.5) соответственно. Если
, то остановиться,
– точка Куна-Таккера. В противном случае перейти ко второму шагу. Здесь
– множество индексов
наибольших компонент вектора
,
(6.7.6)
(6.7.7)
(6.7.8)-(6.7.9)
. (6.7.10)
Второй шаг. Решить следующую задачу одномерной оптимизации:
минимизировать (6.7.11)
при условии ,
где (6.7.12)
Здесь -
-е компоненты векторов
соответственно. Положить
равным оптимальному решению и
. Заменить
на
и перейти к первому шагу.
Метод обобщенного приведенного градиента (ОПГ) является развитием метода ПГ и его можно использовать для решения задач НП при нелинейных функциях-ограничениях.
Итак, пусть задача НП задана в виде
минимизировать (6.7.13)
при условиях
, (6.7.15)
.
В методе ОПГ также различают две группы переменных: а) подмножество базисных переменных ; б) подмножество небазисных, или независимых переменных
. Примем для простоты обозначений
. При этом зависимые (т.е. базисные) переменные неявным образом определяются через независимые (небазисные) переменные, следовательно,
– функция
независимых переменных. Введем следующие обозначения:
(6.7.16)
Основная идея метода ОПГ состоит в том, чтобы сократить размерность задачи путем исключения зависимых (базисных) переменных и применить метод ПГ для определения направления спуска и в качестве критерия при установлении оптимальности.
Укажем способ вычисления обобщенного ПГ. Для этого рассмотрим задачу (6.7.13)-(6.7.15) и выразим обобщенный ПГ через компоненты градиента и якобиан для ограничений-равенств (6.7.14)
. (6.7.17)
Исключим из (6.7.17) матрицу . Для этого воспользуемся соотношением
, (6.7.18)
откуда
. (6.7.19)
Подставляя (6.7.19) в (6.7.17), получим выражение для ОПГ
; (6.7.20)
где ;
.
Нетрудно увидеть аналогию между выражением (6.7.20) и соотношением (6.7.4) для ПГ в линейном случае. Действительно, если учесть, что , то
. Подставив их в (6.7.20), получим полное совпадение выражений (6.7.20) и (6.7.4).
Алгоритм метода ОПГ начинает работать с допустимой точки . Если же относительно условий задачи
не является допустимым, то необходимо ввести искусственные переменные, значения которых постепенно сводят к нулю путем введения в целевую функцию штрафного члена.
Если ОПГ ни на одном из этапов вычислительной процедуры не становится равным нулю, то заменяем текущий вектор на
по общей формуле
, (6.7.21)
- определяется путем решения задачи
минимизировать
при условиях .
где – направление оптимизационного поиска на
-й итерации.
Рассмотрим способ определения величин для независимых переменных
. Направления поиска
для них определяют следующим способом:
, если
; (6.7.22)
, если
; (6.7.23)
или ,
где – вектор ОПГ.
Если ограничения линейны, то метод совпадает с методом Вульфа.
Пример 6.7. Минимизировать
при условии .
Пусть – независимая (небазисная) переменная, а
– зависимая. Найдем величины
Согласно формуле (6.7.20) получим следующее выражение для ОПГ:
Итак, двигаясь из любой допустимой точки вдоль ограничения до тех пор, пока
не станет равным нулю, выполняем минимизацию
(рис. 6.18).