Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

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



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

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

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

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

Предприятие Р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-13; Прочитано: 719 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.009 с)...