Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Алгоритм Флетчера-Кларка




Эвристические методы оптимизации.

Пример.

 

 

Найти минимальный путь из x0 в x6.

1 шаг. Вершине x0 приписывается метка l0 =0. Всем остальным xi приписывается li.

2 шаг. Рассматриваем вершину x1 и дугу x0®x1. Вершине x1 приписываем метку l1¢=l0+l(x0,x1) =0+4=4.

3 шаг. Рассматриваем вершину x3 и дугу x0®x3. Тогда l3¢=l0+l(x0,x3) =0+2=2.

4 шаг. Рассматриваем вершину x2 и дугу x0®x2. Тогда l2¢=l0+l(x0,x2) =0+5=5.

5 шаг. Рассматриваем вершину x5 и дугу x0®x5. Тогда l5¢=l0+l(x0,x5) =0+4=4.

6 шаг. Рассматриваем вершину x4 и дугу x1®x4. Тогда l4¢=l1+l(x1,x4) =4+2=6.

7 шаг. Рассматриваем вершину x6 и дугу x4®x6. Тогда l6¢=l4+l(x4,x6) =6+1=7.

Разметка вершин показана на рисунке кружками. Выбор дуги (xi,xj) при разметке вершины xj осуществляется совершенно произвольно. Единственное ограничение: метка li вершины xi не должна быть равна ¥.

8 шаг. Рассматриваем вершину x2 и стремимся уменьшить её метку. Для этого рассматриваем все дуги, ведущие в x2: выписываем все возможные выражения для метки l2¢: l2¢=l0+l(x0,x2) =0+5=5.

l2¢=l3+l(x3,x2) =2+1=3.

l2¢= min = 3, поэтому заменяем метку вершины x2 на 3.

9 шаг. Аналогично для x4: l4¢=l1+l(x1,x4) =4+2=6.

l4¢=l2+l(x2,x4) =3+2=5.

l4¢= min = 5, поэтому заменяем метку вершины x4 на 5.

10 шаг. Аналогично для x5: l5¢=l3+l(x3,x5) =2+1=3.

l5¢=l4+l(x4,x5) =5+2=7.

l5¢= min = 3, поэтому заменяем метку вершины x5 на 3.

11 шаг. Аналогично для x6: l6¢=l4+l(x4,x6) =5+1=6.

l6¢=l2+l(x2,x6) =3+3=6.

l6¢=l5+l(x5,x6) =3+5=8.

l6¢= min = 6, поэтому заменяем метку вершины x6 на 6.

12 шаг. Для x1 понижение невозможно.

Дальнейшее понижение меток вершин невозможно, поэтому прекращаем разметку.

13 шаг. Ищем минимальный путь из x6 в x0.

(x6 , x4, x2, x3, x0) длина пути: 2+1+2+1=6

(x6 , x2, x3, x0) длина пути: 3+2+1=6

Пример для самостоятельной работы:

 

На практике иногда нужно найти оптимальное решение задачи, для которой метод оптимизации неизвестен.

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

В качестве примера будем рассматривать эвристический метод для задачи о перевозках, которая называется задачей Флетчера-Кларка.

Общая постановка задачи:

Предприятие Р0 снабжает n складов: Р1, Р2, Р3,....Рn. Количество машин, используемых для перевозки, не ограничено. Все машины имеют одинаковую грузоподъёмность, для каждой машины она равна С.

Стоимость перевозки между Pi и Pj равна dij ¹ dji.

Каждая отправляемая с предприятия Р0 машина должна вернуться обратно.

Вместимость склада Pi равна Сi.

При какой минимальной общей стоимости перевозок можно заполнить все склады при условии, что маршруты перевозок представляют собой контуры, попарно пересекающиеся только в точке Р0?

Примечание: можно рассматривать различные обобщения этой задачи, вводя дополнительные ограничения на грузоподъёмность, проходимость дорог, количество заездов на один склад.

Работу метода рассмотрим на примере: задача о перевозках задана таблицами вместимости складов Сi и стоимости перевозок dij. Для удобства на рисунке они совмещены.

 

 

Ci   P0 P1 P2 P3 P4 P5 P6
¥ P0              
  P1              
  P2              
  P3              
  P4              
  P5              
  P6              

C =10 - вместимость одной машины.

В каждой клетке на пересечении Pi и Pj указана стоимость перевозки dij.

На рисунке приведено одно из возможных решений:

С6=2 С2=6

 

 

С5=8 С1=4

 

С4=1 С3=3

Такие перевозки возможны, так как вместимость складов в контурах не превышает 10.

Значение стоимости перевозок по каждому из контуров рисунка:

(Р0210)= d02 + d21 + d10 =6+3+4=13;

(Р0340)= d03 + d34 + d40 =8+8+2=18;

(Р0560)= d05 + d56 + d60 =4+4+5=13;

Общая стоимость перевозок: 13+18+13=44.

Рассмотрим теперь метод Флетчера-Кларка.

Алгоритм:

1. Для каждой пары вершин (Pi, Pj), таких, что i¹j, i¹0, j¹0 определить параметр lij= di0 + d0j - dij и занести его в таблицу.

2. В качестве начального решения выбрать тривиальное решение S вида S={(P0,P1,P0,), (P0,P2,P0,),........, (P0,Pп,P0,)}.

3. Для каждого маршрута в найденном решении S вычислить значение параметров g i, i ¹0 по формуле:

g i= 0, если (Pi, P0) Ï S

1, если (Pi, P0) Î S

4. Все вершины Pm1, Pm2,......., Pmk каждого маршрута из S (исключая P0) объединяются в класс { Pm1, Pm2,......., Pmk } и вычисляется объёмность перевозки

Q { Pm1, Pm2,......., Pmk }= Cm1 + Cm2 +.......+ Cmk,

где Cmi вместимость склада Pmi.

5. Выбрать в таблице значений lij величину lij = maximum > 0 (если таких величин несколько, то выбрать любую). Если для выбранной величины lij склады Pi и Pj принадлежат разным классам, то объединить эти классы в один при выполнении условий:

а). g i =g j =1

б). Q { Pi, Pl, Pk.,......... } + Q { Pj, Pm,. Pv.,.....} £ C,

выделив lij в таблице меткой

Если одно из условий а) или б) не выполняется, то зачеркнуть клетку lij в таблице

6. Найти новое значение g i, i ¹0.

7. Повторять пункты 4 и 5 до тех пор, пока есть возможность выбора величины lij > 0




Поделиться с друзьями:


Дата добавления: 2015-01-03; Просмотров: 605; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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