Существо метода условного градиента состоит в том, что, если известна некоторая точка xkÎD, то направление возрастания целевой функции может задаваться некоторой внутренней или крайней точкой xÎD, которая ищется в области D в направлении, задаваемом градиентом Ñf(x). Действительно, пусть hk=1,тогда
x = xk + r(xk), или отсюда r(xk) = x - xk.
С другой стороны из определения (2.2) дифференцируемости функции в точке xk
f(x) = f(xk) + Ñтf(xk)(x - xk) + o(║x - xk║)
или
f(x) - f(xk) > Ñтf(xk)(x - xk).
Отсюда приращение целевой функции f(xk*) - f(xk) при переходе к следующей точке xk* можно максимизировать на основе специального выбора точки, производимого в результате решения следующей задачи
xk* = arg max Ñтf(xk)(x - xk), (7)
xÎD
Таким образом, xk* задает направление максимального приращения целевой функции из точки xk.
Если xk* - граничная точка D, то следующую точку, точку xk+1 целесообразно искать на отрезке, соединяющем xk и xk*, т.е.
xk+1 = hk xk* + (1-hk) xk, где 0 ≤ hk ≤ 1,
или
xk+1 = xk + hk (xk* - xk) = xk + hk r(xk), где 0 ≤ hk ≤ 1.
Величину шага hk следует выбирать из условия максимизации значения целевой функции в точке xk+1, т.е.
hk = m a x f(xk+h(xk* - xk)) (8)
0≤h≤1
Последняя задача представляет собой задачу одномерной оптимизации.
Основные трудности использования метода условного градиента при решении задач нелинейного программирования состоят в решении задачи (7), и, в общем говоря, в ряде случаев задача оптимизации функции градиента на D может быть сравнима по трудоемкости с исходной задачей. Однако для некоторых классов задач, в частности, для задач квадратичного программирования, метод условного градиента дает существенный выигрыш.