русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Метод Франка-Вульфа


Дата добавления: 2013-12-23; просмотров: 4755; Нарушение авторских прав


Пусть требуется найти максимальное значение вогнутой функции

¦(х1, х2, х3,…, хn) (57)

при условиях

n ___

å aijxj £ bi (i = 1, m), (58)

j=1 ___

xj ³ 0 (j = 1, n). (59)

Характерной особенностью этой задачи является то, что ее система ограничений содержит только линейные неравенства. Эта особенность является основой для замены в окрестности исследуемой точки нелинейной целевой функции линейной, благодаря чему решение исходной задачи сводится к последовательному решению задач линейного программирования.

Процесс нахождения решения задачи начинают с определения точки, принадлежащей области допустимых решений задачи. Пусть это точка Х(k) , тогда в этой точке вычисляют градиент функции (57)

Ѧ(Х(k) ) = [¶¦(Х(k) ) / ¶х1, ¶¦(Х(k) ) / ¶х2, …, ¶¦(Х(k) ) / ¶хn] и строят линейную функцию

F = (¶¦(Х(k) ) / ¶х1)·x1 + (¶¦(Х(k) ) / ¶х2)·x2 + … + (¶¦(Х(k) ) /¶хn)·xn. (60)

Затем находят максимальное значение этой функции при ограничениях (58) и (59). Пусть решение данной задачи определяется точкой Z(k). Тогда за новое допустимое решение исходной задачи принимают координаты точки Х(k+1):

Х(k+1) = Х(k) + lk(Z(k) – Х(k) ), (61)

где lk – некоторое число, называемое шагом вычислений и заключенное между нулем и единицей (0 £ lk £ 1). Это lk берут произвольно или определяют таким образом, чтобы значение функции в точке Х(k+1)¦(Х(k+1)), зависящее от lk , было максимальным. Для того необходимо найти решение уравнения

d¦ \ dlk = 0 и выбрать его наименьший корень. Если его значение больше единицы, то следует положить lk = 1. После определения числа lk находят координаты точки Х(k+1), вычисляют значение целевой функции в ней ми выясняют необходимость перехода к новой точке Х(k+2). Если такая необходимость имеется, то вычисляют в точке х(k+1) градиент целевой функции, переходят к соответствующей задаче линейного программирования и находят ее решение. Определяют координаты точки Х(k+2) и исследуют необходимость проведения дальнейших вычислений. После конечного числа шагов получают с необходимой точностью решение исходной задачи.



Итак, процесс нахождения решения задачи (57) – (59) методом Франка-Вульфа включает следующие этапы:

1°. Определяют исходное допустимое решение задачи.

2°. Находят градиент функции (57) в точке допустимого решения.

3°. Строят функцию (60) и находят ее максимальное значение при условиях (58) и

(59).

4°. Определяют шаг вычислений.

5°. По формулам (61) находят компоненты нового допустимого решения.

6°. Проверяют необходимость перехода к последующему допустимому решению. В случае необходимости переходят к этапу 2°, в противном случае найдено приемлемое решение исходной задачи.

 

П р и м е р. Методом Франка-Вульфа найти решение задачи, состоящей в определении максимального значения функции

¦ = 2х1 + 4х2 – х12 – х22 (62)

при условиях

ì х1 + х2 £ 8,

í (63)

î 2х1 – х2 £12,

х1, х2 ³ 0. (64)

Р е ш е н и е. Найдем градиент функции

Ѧ = [ ¶¦ \ ¶х1, ¶¦ \ ¶х2 ] = (2 – 2х1, 4 – 4х2)

и в качестве исходного допустимого решения задачи возьмем точку х(0) = (0, 0), а в качестве критерия оценки качества получаемого решения – неравенство

½¦(Х(k+1) ) - ¦(Х(k) )½ < e, где e = 0,01.

I и т е р а ц и я. В точке Х(0) градиент Ѧ(Х(0) ) = (2, 4). Находим максимум функций

F1 = 2х1 + 4х2 (65)

При условиях (63) и (64)

ì х1 + х2 £ 8,

í (66)

î 2х1 – х2 £12,

х1, х2 ³ 0. (67)

 
 

Задача (65) – (67) имеет оптимальный план Z(0) = (0, 4).

 

Найдем новое допустимое значение исходной задачи по формуле (61):

Х(1) = Х(0) + l1(Z(0) – Х(0) ), где 0 £ l1 £ 1. (68)

Подставив вместо Х(0) и Z(0) их значения, получим

ì х1(1) = 0 + l1×0,

í (69)

î х2(1) = 0 + l1×4.

Определим теперь число l1. Подставив в равенство (62) вместо х1 и х2 их значения в соответствии с соотношениями (69) ¦(l1) = 16l1 - 32l12, найдем производную этой функции по l1 и приравняем ее нулю ¦¢(l1) = 16 - 64l1 = 0. Решая это уравнение, получим l1 = 1/4 = 0,25. Поскольку найденное значение l1 заключено между 0 и 1, принимаем его за величину шага. Таким образом, Х(1) = (0, 1), ¦(Х(1)) = 2,

¦(Х(1)) - ¦(Х(0)) = 2 > e = 0,01.

II и т е р а ц и я. Градиент целевой функции исходной задачи в точке Х(1) есть

Ѧ( Х(1)) = (2, 0). Находим максимум функции F2 = 2х1 при условиях (63) и (64). Решением является Z(1) = (6,4; 0,8).

Определяем теперь Х(2) = Х(1) + l2(Z(1) – Х(1)). Последнее равенство перепишем следующим образом:

ì х1(2) = 6,4 l2,

í (70)

î х2(2) = 1 – 0,2l2.

Подставляя теперь в функцию (62) вместо х1 и х2 их значения в соответствии с соотношениями (70), получаем

¦(l2) = 2 + 12,8l2 - 41,04l22,

откуда ¦¢(l2) = 12,8 - 41,04l2. Приравнивая ¦¢(l2) нулю и решая полученное уравнение, находим l2 »0,16. Таким образом,

ì х1(2) = 1,02,

í

î х2(2) = 0,97,

т.е. Х(2) = (1,02; 0,97), ¦(Х(2)) = 2,9978, ¦(Х(2)) - ¦(Х(1)) = 2,9978 – 2 = 0,9978 > e = 0,01.

III и т е р а ц и я. Градиент функции ¦ в точке Х(2) есть

Ѧ(Х(2)) = (-0,04; 0,12). Находим максимум функции F3 = -0,04х1 + 0,12х2 при условиях (63) и (64). Решением является Z(2) = (0; 4).

Определяем Х(3) = Х(2) + l3(Z(2) – X(2)). Имеем

ì х1(3) = 1,02 + l3(0 – 1,02) = 1,02 – 1,02l3,

í

î х2(3) = 0,97 + l3(4 – 0,97) = 0,97 + 3,03l3;

¦(l3) = 2,9978 + 0,4044l3 – 19,4022l32,

¦¢(l3) = 0,4044 – 38,8044l3.

Решая уравнение ¦¢(l3) = 0, находим l3 » 0,010. Следовательно,

Х(3) = (1,0098; 1,0003), ¦(Х(3)) = 2,99991,

¦(Х(3)) - ¦(Х(2)) = 2,99991 – 2,9978 = 0,00211 < e = 0,01.

Таким образом, Х(3) = (1,0098; 1,0003) является искомым решением исходной задачи. Задав меньшую величину e, можно было бы, совершив дополнительные приближения, еще ближе подойти к точке максимального значения целевой функции.

 



<== предыдущая лекция | следующая лекция ==>
Градиентные методы | Информационная безопасность как часть проблемы интегральной безопасности человека


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.