Метод приведенного градиента (МПГ) основан на сокращении размерности задачи с помощью представления всех переменных через множество независимых переменных. Впервые его предложил Вульф в (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).