Для задачи выпуклого программирования, множество допустимых решений которой обладает свойством регулярности, точка X0 = (
) является оптимальным решением тогда, когда существует такой вектор L0= ( ), что точка (X0, L0) является седловой точкой функции Лагранжа, построенной для исходной задачи.Для задачи определения максимума, условиями седловой точки будут:
(частные производные берутся в седловой точке).
Для задачи нахождения минимума седловая точка определяется соотношениями:
F(
) £ F( )£Условия седловой точки в этой задаче представляются в виде:
, .Градиентными методами можно найти решение любой задачи нелинейного программирования. Однако в общем случае эти методы позволяют найти точку локального экстремума. Наиболее целесообразным является использование этих методов для решения задач выпуклого программирования, где всякий локальный экстремум является глобальным.
Суть метода заключается в том, что начиная от некоторой точки X(k) осуществляется последовательный переход к другим точкам до тех пор, пока не будет получено приемлемого решения исходной задачи. Методы можно разделить на две группы.
Первая группа, когда исследуемые точки не выходят за пределы области допустимых решений (здесь используется метод Франка-Вулфа).
Вторая группа, когда эти точки не обязательно входят только в область допустимых решений, однако в итерационном процессе такие точки будут. (Здесь используется метод штрафных функций и метод Эрроу-Гурвица).
Нахождение решения идет итерационным процессом до тех пор, пока градиент функции f(x1, x2, ..., xn) в очередной точке X(k+1) не станет равным 0, или пока | f(X(k+1)) - f(X(k)) |< e, где e достаточно малое положительное число. Эту величину часто называют точностью полученного решения.
Найти максимум вогнутой функции: f(x1, x2, ..., xn), при условии:
.Здесь имеем линейные неравенства. Эта особенность является основой для замены в окрестности исследуемой точки нелинейной функции линейной, тогда решение исходной задачи сводится к последовательному решению ряда задач линейного программирования.
Начинается процесс решения с определения точки, принадлежащей области допустимых решений. Пусть это точка X(k). В ней вычисляют градиент функции f:
Ñf(X(k)) =
и строят линейную функцию:
F =
.Находят максимум функции F при сформулированных ограничениях. Пусть решение этой задачи Z(k). Тогда за новое допустимое решение принимают:
X(k+1) = X(k) + lk(Z(k) - X(k)),
где lk ‑ некоторое число, называемое шагом вычислений (0 £ lk £ 1). Число lk - произвольное и выбирают его так, чтобы значение функции в точке X(k+1) , зависящее от lk, было максимальным. Для этого надо найти решение уравнения
и выбрать его наименьший корень. Если корни уравнения больше 1, то берется lk = 1. Затем определяют X(k+1) и f(X(k+1)) и выясняют необходимость перехода к точке X(k+2). Если такая необходимость имеется, то в точке X(k+1) вычисляют градиент целевой функции и переходят к соответствующей задаче линейного программирования и решают ее. Определяют координаты точки X(k+2) и необходимость дальнейших вычислений. После конечного числа шагов получают с необходимой точностью решение исходной задачи.Итак, этапы решения задачи методом Франка-Вулфа заключаются в следующем:
1. Определяют одно из допустимых решений.
2. Находят градиент функции f в точке допустимого решения.
3. Строят функцию F и находят ее максимальное значение при условиях исходной задачи.
4. Определяют шаг вычислений.
5. По формуле X(k+1) = X(k) + lk(Z(k) - X(k)) находят следующее допустимое решение.
Проверяют необходимость перехода к следующему допустимому решению. В случае необходимости переходят к этапу 2, если такой необходимости нет, то приемлемое решение найдено.
Пусть имеем вогнутую функцию f(x1, x2, ..., xn). Необходимо найти максимум этой функции при условиях: gi(x1, x2, ..., xn) £ bi, (i = 1, 2, ...,m), xj ³ 0, где gi - выпуклые функции.
Строится функция: F (x1, x2, ..., xn) = f (x1, x2, ..., xn)+H (x1, x2, ..., xn), где функция H(x1, x2, ..., xn) определяется системой ограничений и называется штрафной функцией. Она может быть построена многими способами. Чаще всего эта функция строится в виде:
, где ai ‑ весовые коэффициенты,qi = bi - gi .
Используя H, последовательно переходят от одной точки к другой до тех пор, пока получится приемлемое решение. При этом координаты последующей точки находят по формуле:
(Б.3)Из (Б.3) следует, что если предыдущая точка находится в области допустимых решений, то второе слагаемое в квадратных скобках равно 0, и переход к последующей точке определяется только градиентом целевой функции. Если же предыдущая точка не принадлежит области допустимых решений, то за счет указанного слагаемого на последующих итерациях достигается возвращение в область допустимых решений. При этом, чем меньше i, тем быстрее находится приемлемое решение, но точность определения решения снижается. Поэтому в начале i берут малым, постепенно увеличивая.
Итак, процесс решения включает этапы:
1. Определяют исходное допустимое решение.
2. Выбирают шаг вычислений.
3. Находят по всем переменным частные производные от целевой функции и функций, определяющих область допустимых решений задачи.
4. По (Б.3) определяют координаты точки - возможное новое решение.
5. Проверяют, удовлетворяют ли координаты найденной точки системе ограничений задачи. Если не удовлетворяют, то переходят к следующему этапу. Если координаты найденной точки определяют допустимое решение задачи, то исследуют необходимость перехода к последующему решению. Если такой переход необходим, то переходят к пункту 2, иначе решение найдено.
6. Устанавливаются значения весовых коэффициентов и переходят к этапу 4.