Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИИС 2 / Алгоритмы ИИС.doc
Скачиваний:
326
Добавлен:
15.06.2014
Размер:
1.62 Mб
Скачать

Алгоритм муравья

Цель работы. Изучение методики описания и технологии разработки алгоритма муравья на примере решения задачи коммивояжера.

Домашнее задание

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

  2. Охарактеризуйте основные этапы работы алгоритма муравья.

  3. Приведите способы оптимизации алгоритма муравья.

Краткие сведения из теории

В основу алгоритма муравья положена идея естественной мотивации самих муравьев. Муравьи умеют находить самый оптимальный путь между муравейником и внешними точками. Чем больше муравьев используют один и тот же путь, тем выше концентрация ферментов на этом пути. Чем ближе внешняя точка к муравейнику, тем больше раз к ней перемещались муравьи. Более удаленные точки от муравейника муравьи посещают реже, поэтому по дорогам к ним они применяют более сильные ферменты. Чем выше концентрация ферментов на пути, тем предпочтительнее он для муравьев по сравнению с другим доступным путем. Таким образом, муравьиная «логика» позволяет выбирать более короткий путь между двумя точками. Представим муравья в алгоритме как программного агента, являющегося членом большой колонии. Предположим, что окружающая среда для муравьев представляет собой замкнутую двумерную сеть, состоящую из группы узлов, соединенных посредством граней. Двумерную сеть назовем графом. Каждая грань имеет вес, определяемый как расстояние между узлами, которые она соединяет. Граф является двунаправленным, поэтому муравей может путешествовать по грани в любом направлении (рис. 1).

Рис. 1. Граф с вершинам

Грани E = {(1,2), (1,3),(1,4),(2,3),(2,4),(3,4)}

Муравей снабжается набором простых правил. Он поддерживает список табу, то есть список узлов, которые уже посетил. Через каждый узел муравей должен проходить только один раз. Путь между узлами графа, по которому муравей прошел каждый узел только один раз, получил название путь Гамильтона. Узлы в списке текущего путешествия располагаются в том порядке, в котором муравей посещал их. В дальнейшем этот список используется для определения протяженности пути между узлами. Для создания начальной популяции муравьев согласно алгоритму необходимо равное разделение муравьев между узлами с тем, чтобы все узлы имели одинаковые шансы стать отправной точкой. Если все муравьи начинают движение из одной точки, то это будет означать, что данная точка является оптимальной для старта. Движение муравья по узлам сети основывается на уравнении, определяющем вероятность выбора следующей грани пути, ведущей к еще не посещенному муравьем узлу:

где τ (r, u) - интенсивность фермента на грани между узлами r и u; η (r,u) - функция, являющаяся средством измерения пути; α - вес фермента; β - коэффициент эвристики; k – переменная, представляющая грани, которые еще не были посещены муравьем. После завершения текущего путешествия по всем узлам сети находится длина пути L, равная сумме всех граней, по которым путешествовал муравей. Количество фермента, оставленного на каждой грани пути для каждого муравья определяется выражением:

гдеQ – константа, относящаяся к количеству фермента, которое было оставлено на пути. Полученный результат расчета по выражению является средством измерения пути, а именно: короткий путь характеризуется высокой концентрацией фермента, а более длинный путь – более низкой. Количество фермента, которое будет применено вдоль каждой грани пройденного муравьем пути, определяется выражением:

где - параметр, определяющий концентрацию фермента, которая сохранится на гранях (значение константы находится между 0 и 1);N – количество муравьев, проходящих вдоль грани между узлами i и j в течение одного цикла. Ко всем граням сети алгоритмом муравья применяется процедура испарения фермента. Если в начале пути у каждой грани есть шанс быть выбранной, то постепенно грани, определяющие худшие пути сети, с помощью этой процедуры удаляются. Для учета испарения фермента на гранях сети используется обратный коэффициент обновления пути (1-p). Новое количество фермента, оставшееся на гранях после испарения, рассчитывается по формуле:

После того как путь муравья завершен, грани обновлены в соответствии с длиной пути и произошло испарение фермента на всех гранях, алгоритм запускается повторно. Список табу очищается, и длина пути обнуляется. Муравьям разрешается перемещаться по сети, основывая выбор грани на вероятностном уравнении движения муравья. Этот процесс может выполняться для постоянного количества путей или до момента, когда на протяжении нескольких запусков не было замечено повторных изменений. Затем определяется лучший путь, который и является решением.

Работу алгоритма рассмотрим на простом примере. Пусть имеются две грани между двумя узламиV1 и V2 и два муравья, обозначенные метками A1 и A2, которые находятся в узле V1 и перемещаются к узлу V2 вдоль разных граней. Требуется определить: какой из путей до узла V2 для муравьев A1 и A2 окажется наиболее оптимальным. Известно, что муравей A1 достиг узла V2 за 20 шагов, а муравей A2 - только за 10. В алгоритме муравья используем следующие значения параметров

В начале цикла уравнение выбора пути не принимается во внимание, так как вероятность выбора любого пути одинакова. Для муравьев A1 и A2 количество фермента, оставленного на каждой грани, составляет

Количество фермента, которое было применено на гранях, будет

Новое количество фермента для каждого пути, которое останется на каждой грани после испарения, соответственно будет

Теперь переместим муравьев обратно в узел V1 и применим уравнение выбора пути. Вероятность выбора пути с количеством фермента 0, 12 составляет

Вероятность выбора пути с количеством фермента 0,24 будет

Таким образом, при сопоставлении двух вероятностей оба муравья выберут путь с количеством фермента 0,24 наиболее оптимальным.

Алгоритм муравья можно оптимизировать путем изменения значений параметров. Наиболее известные комбинации параметров α и β приведены в табл. 2.

Таблица 2.

0,5

1,0

1,0

1,0

5,0

1,0

2,0

5,0

Параметр ρ представляет коэффициент, который применяется к распыляемому на пути ферменту, а (1 - ρ) представляет коэффициент испарения для существующего фермента. Оптимальными для работы алгоритма являются значения коэффициента

Рабочее задание

  1. Дать описание исходного кода, реализующего алгоритм муравья на примере решения задачи коммивояжера, которая заключается в нахождении кратчайшего Гамильтонова пути в графе, где в качестве узлов выступают города, а в качестве граней – соединяющие их дороги. При решении задачи использовать следующие параметры алгоритма: N=10; Q=10, α = 1,0; β = 5,0; ρ = 0, 6.

  2. Местоположение городов с указанием их порядкового номера приведено на карте (рис. 2) и принимается в соответствии с вариантом задания (табл. 1) (по указанию преподавателя).

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

  4. Составить полный листинг программы решения задачи коммивояжера.

  5. Создать в среде Delphi программу - исполняемый файл, который может загружаться и выполняться под управлением Windows на основе пункта 2 рабочего задания. Указать возможность ввода исходных данных в программу (координат узлов сети, определяющих местоположение городов, или расстояний между городами) ручным способом и открытием отдельно созданного файла, используемого для их хранения.

  1. Привести демонстрационный пример решения задачи коммивояжера для числа городов N=10, указав на карте пунктиром график Гамильтонова пути и любой город варианта задания, выбранный для старта.

  2. Выполнить оптимизацию алгоритма муравья, используя исходные данные демонстрационного примера пункта 4 рабочего задания.

  3. Привести демонстрационный пример решения задачи коммивояжера для числа городов N=10, указав на карте пунктиром график Гамильтонова пути и любой город варианта задания, выбранный для старта.

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

Рис. 2. Карта расстояний между городами.

Таблица 1

Вариант

задания

Порядковые номера

для 10 городов

1,2,3,4,8,9,10,12,15,18

4,5,7,11,12,14,16,17,19,20

3,5,6,10,12,14,16,17,18,19

1,2,7,9,10,11,14,16,18,20

4,6,7,9,13,14,16,17,19,20

1,3,5,9,10,12,14,15,17, 18

2,4,6,8,11,12,13,15,17,19

3,4,5,9,10,11,14,16,18,20

4,5,7,11,13,15,17,18,19,20

2,3,4,7,8,9,10,15,12,18

1,2,3,6,8,9,10,12,13,14

3,5,6,7,9,11,12,14,16,18

1,5,8,10,11,13,14,15,17,19

5,6,7 ,9,12,13,15,18,19,20

3,8,9,11,13,15,16,17,18,19

1,2,3,6,8,9,12,15,16,17

4,7,8,9,11,12,13,14,15,18

2,3,4,7,9,10,14,16,18,20

1,4,5,9,14,15,17,18,19,20

3,4,6,8,10,11,12,13,15,19

Вопросы к защите

  1. Какова структура данных для поиска оптимальных решений задачи коммивояжера?

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

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

  4. Опишите функцию в алгоритме муравья, которая позволяет выбрать новый город для составления пути.

  5. Опишите функцию, рассчитывающую движение муравья по графу.

Литература

  1. Т. Джонс. Программирование искусственного интеллекта в приложениях./ Пер. с англ. Осипов А.И. – М.: ДМК Пресс. 2004. С. 63 - 84.

  2. Алгоритм муравья на примере решения задачи коммивояжера. Исходный код программы содержится в папке software/ch4. Загрузка с сайта издательства «ДМК Пресс» www. dmk.ru.

Соседние файлы в папке ИИС 2