
8.2. Метод Франка-Вульфа
Пусть требуется найти максимальное значение вогнутой функции
(х1, х2, х3,…, хn) (8.3)
при условиях
(8.4)
xj 0, j = 1: n. (8.5)
Характерной особенностью этой задачи является то, что ее система ограничений содержит только линейные неравенства. Эта особенность является основой для замены в окрестности исследуемой точки нелинейной целевой функции линейной, благодаря чему решение исходной задачи сводится к последовательному решению задач линейного программирования.
Процесс нахождения решения задачи начинают с определения точки, принадлежащей области допустимых решений задачи. Пусть это точка х(k) , тогда в этой точке вычисляют градиент функции (8.3)
(х(k) ) = (х(k))/х1, (х(k))/х2, …, (х(k))/хn
и строят линейную функцию
F = ((х(k))/х1)·x1 + ((х(k))/х2)·x2 + … + ((х(k))/хn)·xn. (8.6)
Затем находят максимальное значение этой функции при ограничениях (8.4) и (8.5).
Пусть решение данной задачи определяется точкой z(k). Тогда за новое допустимое решение исходной задачи принимают координаты точки х(k+1):
х(k+1) = х(k) + k(z(k) – х(k) ), (8.7)
где k – некоторое число, называемое шагом вычислений и заключенное между нулем и единицей (0 k 1). Это k берут произвольно или определяют таким образом, чтобы значение функции в точке х(k+1)(х(k+1)), зависящее от k , было максимальным. Для того необходимо найти решение уравнения d/dk = 0 и выбрать его наименьший корень. Если его значение больше единицы, то следует положить k = 1. После определения числа k находят координаты точки х(k+1), вычисляют значение целевой функции в ней и выясняют необходимость перехода к новой точке х(k+2). Если такая необходимость имеется, то вычисляют в точке х(k+1) градиент целевой функции, переходят к соответствующей задаче линейного программирования и находят ее решение. Определяют координаты точки х(k+2) и исследуют необходимость проведения дальнейших вычислений. После конечного числа шагов получают с необходимой точностью решение исходной задачи.
Итак, процесс нахождения решения задачи (8.3) … (8.5) методом Франка-Вульфа включает следующие этапы:
1. Определяют исходное допустимое решение задачи.
2. Находят градиент функции (8.3) в точке допустимого решения.
3. Строят функцию (8.6) и находят ее максимальное значение при условиях (8.4) и (8.5).
4. Определяют шаг вычислений.
5. По формулам (8.7) находят компоненты нового допустимого решения.
6. Проверяют необходимость перехода к последующему допустимому решению. В случае необходимости переходят к этапу 2, в противном случае найдено приемлемое решение исходной задачи.
Пример 8.1. Методом Франка-Вульфа найти решение задачи, состоящей в определении максимального значения функции
= 2х1 + 4х2 – х12 – 2х22 (8.8)
при условиях
(8.9)
х1, х2 0. (8.10)
Решение. Найдем градиент функции
= [/х1, /х2] = (2 – 2х1, 4 – 4х2)
и в качестве исходного допустимого решения задачи возьмем точку х(0) = (0, 0), а в качестве критерия оценки качества получаемого решения – неравенство
(х(k+1) ) - (х(k) ) < , где = 0,01.
I и т е р а ц и я. В точке х(0) градиент (х(0) ) = (2, 4). Находим максимум функций
F1 = 2х1 + 4х2 (8.11)
при условиях (8.9) и (8.10)
(8.12)
х1, х2 0. (8.13)
З
х1
+ 2х2
= 8 х2
8
2х1
– х2
=12
4
-8 -4 0
4 8 12 х1
-4
-8
-12
адача
(8.11) … (8.13) имеет оптимальный план (см.
рис. 8.2)z(0)
= (0; 4, т. А).
Рис. 8.2. Оптимальный план z(0)
Найдем новое допустимое значение исходной задачи по формуле (8.7):
х(1) = х(0) + 1(z(0) – х(0)), (8.14)
где 0 1 1.
Подставив вместо х(0) и z(0) их значения, получим
(8.15)
Определим теперь число 1. Подставив в равенство (8.8) вместо х1 и х2 их значения в соответствии с соотношениями (8.15) () = 16 - 322, найдем производную этой функции по и приравняем ее нулю () = 16 - 64 = 0. Решая это уравнение, получим = 1/4 = 0,25. Поскольку найденное значение заключено между 0 и 1, принимаем его за величину шага. Таким образом, х(1) = (0, 1), (х(1)) = 2, (х(1)) - (х(0)) = 2 > = 0,01.
II и т е р а ц и я. Градиент целевой функции исходной задачи в точке х(1) есть (х(1)) = (2, 0). Находим максимум функции F2 = 2х1 при условиях (8.9) и (8.10). Решением является (см. рис. 8.2) z(1) = (6,4; 0,8, т. В). Определяем теперь х(2) = х(1) + 2(z(1) – х(1)). Последнее равенство перепишем следующим образом:
(8.16)
Подставляя теперь в функцию (8.8) вместо х1 и х2 их значения в соответствии с соотношениями (8.16), получаем
(2) = 2 + 12,82 - 41,0422,
откуда (2) = 12,8 - 41,042. Приравнивая (2) нулю и решая полученное уравнение, находим 2 0,16. Таким образом,
т.е. х(2) = (1,02; 0,97), (х(2)) = 2,9978, (х(2)) - (х(1)) = 2,9978 – 2 = 0,9978 > = 0,01.
III и т е р а ц и я. Градиент функции в точке х(2) есть (х(2)) = (-0,04; 0,12). Находим максимум функции F3 = -0,04х1 + 0,12х2 при условиях (8.9) и (8.10). Решением является (см. рис. 8.2) z(2) = (0; 4, т. А).
Определяем х(3) = х(2) + 3(z(2) – х(2)). Имеем
(3) = 2,9978 + 0,40443 – 19,402232,
(3) = 0,4044 – 38,80443.
Решая уравнение (3) = 0, находим 3 0,010. Следовательно,
х(3) = (1,0098; 1,0003), (х(3)) = 2,99991,
(х(3)) - (х(2)) = 2,99991 – 2,9978 = 0,00211 < = 0,01.
Таким образом, х(3) = (1,0098; 1,0003) является искомым решением исходной задачи. Задав меньшую величину , можно было бы, совершив дополнительные приближения, еще ближе подойти к точке максимального значения целевой функции.
Пример 8.2. Определить градиентным методом максимум функции
= 4х1 + 2х2 – х12 – х22 + 5,
начав итерационный процесс с точки х(0) = (4, 5).