Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
195
Добавлен:
13.03.2016
Размер:
187.9 Кб
Скачать

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))/х1x1 + ((х(k))/х2x2 + … + ((х(k))/хnxn. (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 - 322, найдем производную этой функции по  и приравняем ее нулю () = 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,82 - 41,0422,

откуда (2) = 12,8 - 41,042. Приравнивая (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,40443 – 19,402232,

(3) = 0,4044 – 38,80443.

Решая уравнение (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).