Transcript ***** 1

ПРИМЕНЕНИЕ
АЛГОРИТМА МУРАВЬИНОЙ КОЛОНИИ
ДЛЯ РЕШЕНИЯ
ЗАДАЧИ МАРШРУТИЗАЦИИ
ТРАНСПОРТНЫХ СРЕДСТВ
Морозовский Тарас Олегович
25.10.2012
Киев, НТУУ “КПИ”
Муравьиные алгоритмы
(оптимизация муравьиной колонией –
англ. Ant Colony Optimization, ACO)
Идея муравьиного алгоритма – моделирование
поведения муравьёв, связанного с их способностью
быстро находить кратчайший путь от муравейника к
источнику пищи и адаптироваться к изменяющимся
условиям, находя новый кратчайший путь.
При своём движении муравей метит путь
феромоном, и эта информация используется другими
муравьями для выбора пути. Это элементарное
правило поведения и определяет способность
муравьёв находить новый путь, если старый
оказывается недоступным.
Рассмотрим
случай, показанный на
рисунке,
когда
на
оптимальном
пути
возникает преграда. В этом
случае
необходимо
определение
нового
оптимального пути. Дойдя
до преграды, муравьи с
равной вероятностью будут
обходить её справа и слева.
То же самое будет происходить и на обратной стороне преграды.
Однако, те муравьи, которые случайно выберут кратчайший путь,
будут быстрее его проходить (туда/обратно), и за несколько передвижений он
будет более обогащён феромоном. Поскольку движение муравьёв
определяется концентрацией феромона, то следующие будут предпочитать
именно этот путь, продолжая обогащать его феромоном до тех пор, пока этот
путь по какой-либо причине не станет недоступен .
Самоорганизация
является
результатом
взаимодействия следующих четырех компонентов:
– случайность;
– многократность;
– положительная обратная связь;
– отрицательная обратная связь
Очевидная положительная обратная связь быстро
приведёт к тому, что кратчайший путь станет единственным
маршрутом движения большинства муравьёв.
Моделирование
испарения
феромона
–
отрицательной обратной связи – гарантирует нам, что
найденное локально оптимальное решение не будет
единственным – муравьи будут искать и другие пути.
Основной класс применения муравьиных алгоритмов –
нахождение кратчайших путей, циклов и т.п. на графах/сетях
(если задачу можно интерпретировать как такую, которая
сводится к графам/сетям).
Общая схема муравьиного алгоритма
Любой муравьиный алгоритм, независимо от
модификаций, можно представить в следующем
виде :
Пока (условия выхода не выполнены)
1. Создаём муравьёв
2. Ищем решения
3. Обновляем феромон
4. Дополнительные действия {опционально}
Недостатки муравьиных алгоритмов
• Теоретический анализ затруднён в связи с тем, что в
процессе решения получают последовательность
случайных (не независимых) решений и тем, что
распределение вероятностей меняется от итерации
к итерации.
• Сходимость алгоритма гарантируется, но время
сходимости не определено.
• Обычно необходимо применение дополнительных
методов, таких, как локальный поиск.
• Эффективность применения сильно зависит от
настроечных параметров, которые подбираются
только исходя из экспериментов.
Постановка рассматриваемого
случая VRP
-
-
VRP, для которой был разработан рассматриваемый муравьиный
алгоритм, имеет следующие особенности:
количество транспортных средств неограничено;
все транспортные средства идентичны;
склад единственный;
только один тип товара, который развозится клиентам только со
склада, где присутствует в неограниченном количестве;
нет ограничений на временные окна;
каждому клиенту заказанный им товар должен быть доставлен в
полном объёме только одним транспортным средством и только за
один раз;
транспортное средство выезжает со склада полностью загруженным и
не возвращается до тех пор, пока не останется ни одного клиента,
которому ещё можно довезти товар;
допускаются транзитные перевозки через пункты размещения
клиентов (проезд через пункт без разгрузки товара в нём) и склад.
-
-
-
Входные данные алгоритма:
n – количество клиентов (пунктов, в которые нужно доставить
какое-то количество товара);
C = {cij}, i = 0..n, j = 0..n – матрица стоимостей прямых переездов
от пункта i к пункту j;
Q = {qj}, j = 1..n – вектор количеств товара, заказанного
клиентами;
P – номинальная вместимость транспортного средства;
α, β – параметры вероятностной формулы муравьиного
алгоритма;
ρ – коэффициент испарения феромона;
количество муравьёв, генерируемых за одну итерацию;
число итераций, достаточное для завершения работы
алгоритма, если за это время текущее рекордное решение
(множество путей минимальной стоимости) не улучшалось;
максимально допустимое количество итераций.
Принцип
работы
алгоритма
будем
рассматривать на примере следующей задачи:
Возле каждой дуги
графа
подписана
соответствующая
стоимость прямого
переезда cij.
Возле
каждой
вершины
–
количество
заказанного
соответствующим
клиентом товара qj.
P – номинальная вместимость
транспортного средства.
Если дуги i–j нет, значит cij = ∞.
Из постановки очевидно, что для множества примеров
невозможно найти допустимые решения без «транзитных»
переездов. В частности, если во входном графе
(соответствующем матрице C) есть висячие вершины, такие как
вершина №13 в рассматриваемом примере:
Для того, чтобы посетить
вершину 13 и после этого
вернуться на склад (0),
необходимо пройти путь
…-12-13-12-…, то есть через
пункт 12 нужно проехать
как минимум два раза.
Поэтому для данной постановки задачи
возможность осуществления транзитных
переездов является необходимой.
Согласно постановке, на вход алгоритм получает матрицу со
стоимостями прямых переездов между каждой из пар пунктов.
Однако, в рамках данной постановки задачи перемещаться между
парами пунктов выгоднее по «кратчайшим» путям (т.е. по путям
наименьшей стоимости). Например, в рассматриваемом примере из
пункта 1 в пункт 2 выгоднее ехать не напрямую, а через пункт 3, так
как 4 (стоимость переезда 1-3) + 3 (стоимость переезда 3-2) = 7 < 8
(стоимость переезда 1-3).
Поэтому
перед
началом
«муравьиных» итераций алгоритм
находит «кратчайшие» пути (пути
наименьшей стоимости) между всеми
парами
пунктов
при
помощи
алгоритма Дейкстры, сохраняя в
памяти эти кратчайшие пути вместе с
их
суммарными
стоимостями
(матрица C’ = {c’ij}, i = 0..n, j = 0..n).
В ходе работы алгоритма при
формировании пути некоторого
транспортного средства все
промежуточные пункты этих «кратчайших»
путей и будут являться транзитными.
Остальные пункты расположения клиентов
в этом пути – это пункты, в которых
транспортное средство, проезжая через
них, выполняет разгрузку товара.
Принцип работы алгоритма
После
нахождения
путей
минимальной
стоимости («кратчайших» путей) между всеми
парами пунктов и инициализацией некоторых
дополнительных параметров начинаются итерации,
собственно, муравьиного алгоритма.
Эти итерации завершаются при выполнении
одного из двух условий: либо на протяжении
некоторого «достаточного» числа итераций текущее
рекордное решение (решение – множество путей, по
которым осуществлялась доставка товара клиентам
транспортными средствами; стоимость решения –
суммарная стоимость всех путей, входящих в решение;
рекордное решение или рекорд – решение с наименьшей
стоимостью среди найденных) не менялось; либо общее
количество выполненных итераций
максимально разрешённое.
превысило
Итерации
На протяжении одной итерации алгоритма
выполняется
последовательный
прогон
независимых друг от друга «муравьёв»
(количество муравьёв на одну итерацию также
задаётся как параметр алгоритма).
После того, как все муравьи прошли,
производится
обновление
матрицы
феромонов, числа в которой перед первой
итерацией инициализируются некоторым
одинаковым значением, соразмерным со
стоимостью «идеального» решения Lmin (за Lmin
принимается сумма констант приведения матрицы C).
Муравьи
Муравей являет собой сущность, которая за
свой «прогон» находит какое-то одно решение.
Поскольку решение VRP – это множество путей, то
одному
муравью
соответствует
множество
транспортных средств (которые, в объединении,
развозят весь заказанный товар всем клиентам), путь
каждого из которых он находит.
В данном варианте алгоритма это реализовано
последовательно: сначала муравей, находясь на
складе, «садится» на первую машину, развозит на
ней товар некоторым клиентам, пока не развезёт
весь, который был в наличии на данной машине,
затем возвращается на склад, «пересаживается» на
вторую машину, …, и так далее до тех пор, пока
заказы всех клиентов не будут удовлетворены.
Выбор следующей вершины
Муравей, развозя товар на текущем
транспортном средстве, каждый раз выбирает
следующий пункт (среди множества пунктов
необслуженных клиентов, запросы которых не превышают
количество товара в наличии), в который товар будет
доставлен, в зависимости от значения
феромона на «ребре» i–j (элемент матрицы
феромонов с соответствующими индексами) и суммарной
стоимости «кратчайшего» пути от пункта i к
пункту j, затем проходит этот «кратчайший»
путь целиком (промежуточные вершины «кратчайшего
пути» проходятся без разгрузки товара в них) и разгружает
товар в выбранном пункте j.
Выбор следующей вершины
Выбор этого пункта j осуществляется случайным
образом согласно следующей формуле:
1 
( f ij )  ( )
c'ij
pij 
1 

( f ij )  ( )

c'ij
jJ

где
,
(1)
i – индекс пункта, в котором транспортное средство находится на данный момент;
J – множество индексов клиентов, заказы которых не превышают товар в наличии;
pij – вероятность выбора пункта j в качестве следующего пункта назначения;
fij – элемент матрицы феромонов с соответствующими индексами;
c’ij – стоимость «кратчайшего» пути от пункта i к пункту j;
α, β – параметры муравьиного алгоритма.
Выбор следующей вершины
Пример: пусть первое транспортное средство развезло товар в пункты 12, 11, 7, 4 и
5 и сейчас находится в пункте 5. Количество товара в наличии p = 14.
Нужно выбрать следующий
пункт назначения,
руководствуясь формулой
(1). Он будет выбираться
среди тех пунктов,
количество требуемого
товара в которых не
превышают количество
товара в наличии (p = 14).
Это пункты 2 (q2 = 12), 8 (q8 = 10)
и 9 (q9 = 12).
Кратчайшие пути к ним от пункта 5 –
«5-4-3-2» (c’52 = 5+3+3 = 11),
«5-6-8» (c’58 = 6+4 = 10) и
«5-6-8-9» (c’59 = 6+4+4 = 14) соответственно.
Выбор следующей вершины
В случае с данной постановкой VRP, феромон влияет не на дальнейшее направление
движения, а на выбор следующего пункта разгрузки, поэтому учитывается именно
феромон на «рёбрах», соответствующих прямому переходу из пункта i в j.
Пусть f52 = 130,
f58 = 270 и f59 = 210.
Пусть параметры
алгоритма α = 0,5 и β = 0,9.
Тогда по формуле (1)
можно определить
вероятности выбора
каждого из этих трёх
допустимых пунктов,
после чего с помощью генератора
псевдослучайных чисел будет принято
решение о том, как продолжить путь
текущего транспортного средства.
Выбор следующей вершины
1 
( f ij )  ( )
c'ij
pij 
1 

( f ij )  ( )

c'ij
jJ

Числители дробей:
1 0, 9
1 0,9
0, 5
( ( f5 j )  ( ) ) p52  (130)  ( )  1,317401821
c'5 j
11
jJ
1 0, 9
1 0,9
0, 5
0, 5
( ( f5 j )  ( ) ) p58  (270)  ( )  2,068625539
c'5 j
10
jJ
1 0, 9
1 0, 9
0, 5
0, 5
( ( f5 j )  ( ) ) p59  (210)  ( )  1,347703683
c'5 j
14
jJ
0, 5
Выбор следующей вершины
1 
( f ij )  ( )
c'ij
pij 
1 

( f ij )  ( )

c'ij
jJ

Знаменатель:
( f
jJ
5j
)
0,5
1 0,9
(
)  1,31740182
1  2,06862553
9  1,34770368
3
c'5 j
 4,73373104
3
Выбор следующей вершины
1 
( f ij )  ( )
c'ij
pij 
1 

( f ij )  ( )

c'ij
jJ

Вероятности выбора пунктов 2, 8 и 9:
1 0,9
)
c'52
1,31740182
1
p52 

 0,27830094
5
1
3
( f 5 j ) 0,5  (
) 0,9 4,73373104

c'5 j
jJ
1 0,9
( f 58 ) 0,5  (
)
c'58
2,06862553
9
p58 

 0,43699684
7
1 0,9 4,73373104
3
0,5
( f5 j )  (
)

c
'
jJ
5j
1
0,5
0,9
( f 59 )  (
)
c'59
1,34770368
3
p59 

 0,28470220
9
1
3
( f 5 j ) 0,5  (
) 0,9 4,73373104

c'5 j
jJ
( f 52 ) 0,5  (
Выбор следующей вершины
p52  0,27830094
5
p58  0,43699684
7
p59  0,28470220
9
Теперь, когда определены вероятности выбора в
качестве следующего пункта назначения для каждого пункта
из множества J, выбор осуществляется случайным образом.
Генератор псевдослучайных чисел выбрасывает число в
пределах от 0 до 1 (сумма всех трёх вероятностей,
0,278300945 + 0,436996847 + 0,284702209, равна единице).
Если данное число < 0,278300945, выбран будет пункт
2. Если число не меньше 0,278300945, но < 0,715297791
(сумма вероятностей выбора пунктов 2 – 0,278300945 – и 8 –
0,436996847) – выбран будет пункт 8. Если же число не
меньше 0,715297791, то будет выбран пункт 9.
Выбор следующей вершины
Допустим, генератор
псевдослучайных
чисел выбросил значение 0,2 –
следовательно, был выбран пункт 2.
К пути текущего
транспортного
средства
добавляется путь
«…-4-3-2» (путь
наименьшей стоимости от
пункта 5 к пункту 2) с пометкой,
что пункты 4 и 3 здесь
являются транзитными
и разгрузка товара в них
не производится; количество товара
в наличии уменьшается на q2 = 12;
i присваивается значение 2
и осуществляется попытка снова найти
пункт для следующей разгрузки товара.
В данном случае транспортное средство с пункта 2 возвратится на склад, так как новое
значение p = 14 – 12 = 2 недостаточно для обслуживания ни одного из оставшихся клиентов.
Рекорд
По такому принципу «прогоняются» все
транспортные средства, «принадлежащие»
текущему муравью, формируя решение
(множество путей) этого муравья.
Таким образом прогоняются все муравьи
текущей итерации, каждый из которых
независимо от других находит некоторое
решение.
Для
каждого
найденного
решения
подсчитывается его суммарная стоимость и,
если она меньше стоимости текущего
рекордного решения, найденное решение
принимается за новый рекорд.
Обновление феромона
Итерации отличаются друг от друга содержанием
матрицы феромонов. Феромоны обновляются в конце
каждой итерации. Происходит это согласно формуле
f ij  (1   )  f ij 
где

kK ij
Lmin
Lk
,
(2)
fij – элемент матрицы феромонов на соответствующей позиции;
ρ – интенсивность испарения феромона (параметр муравьиного алгоритма);
Lmin – суммарная стоимость «идеального» решения;
Kij – множество всех муравьёв текущей итерации, для которых переезд (без
учёта транзитных пунктов) i–j был выбран по формуле (1) либо при
возвращении на склад (j = 0);
Lk – суммарная стоимость множества путей (решения), найденного k-ым
муравьём.
Литература
• 1. M. Dorigo et L.M. Gambardella, Ant Colony System : A
Cooperative Learning Approach to the Traveling Salesman
Problem, IEEE Transactions on Evolutionary Computation,
volume 1, numéro 1, pages 53-66, 1997
• 2. Штовба С.Д., Рудий О.М. Мурашині алгоритми
оптимізації // Вісник ВПІ. – 2004. – № 4. – С. 62–69
• 3. The VRP Web [Електронний ресурс]. – Режим доступу :
http://neo.lcc.uma.es/radi-aeb/WebVRP/