Научная статья на тему 'Применение генетического алгоритма для решения задачи коммивояжера'

Применение генетического алгоритма для решения задачи коммивояжера Текст научной статьи по специальности «Математика»

CC BY
723
81
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ГЕНЕТИЧЕСКИЙ АЛГОРИТМ / ЗАДАЧА КОММИВОЯЖЕРА

Аннотация научной статьи по математике, автор научной работы — Шишкова Нина Алексеевна

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Применение генетического алгоритма для решения задачи коммивояжера»

ФИЗИКО-МАТЕМАТИЧЕСКИЕ НАУКИ

ПРИМЕНЕНИЕ ГЕНЕТИЧЕСКОГО АЛГОРИТМА ДЛЯ РЕШЕНИЯ ЗАДАЧИ КОММИВОЯЖЕРА Шишкова Н.А.

Шишкова Нина Алексеевна - студент магистратуры, факультет прикладной математики и информатики, Московский авиационный институт, УЦ «Интеграция», г. Серпухов

Аннотация: в статье рассмотрен способ применения генетического алгоритма для решения задачи коммивояжера, выявлены плюсы и минусы данного применения. Ключевые слова: генетический алгоритм, задача коммивояжера.

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

Рассмотрим основные этапы генетического алгоритма.

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

Следующим шагом является скрещивание или по-другому размножение. На данном шаге две особи, которых называют родителями, скрещивают таким образом, чтобы полученные потомки унаследовали черты от обоих родителей. Далее происходит мутация и собственно сам этап отбора, то есть из получившейся популяции выживут определенные особи, в зависимости от функции принадлежности [1].

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

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

Для каждой особи считаем функцию приспособленности, в данной задаче это длина пути объезда пунктов. Чем она меньше, тем естественно лучше. Наиболее приспособленных особей скрещиваем, однако в задаче коммивояжера это делаем, применяя упорядоченное скрещивание, либо частично отображаемое. Это необходимо из-за того, что в каждом пункте нужно побывать только один раз. После скрещивания получаем новое поколение, в котором ищем опять наиболее приспособленных особей и т.д., пока не будет найдена минимальное значение функции приспособленности. Прелесть генетического алгоритма в том, что размножая особей не нужно выбирать от родителей наилучшее, так как решение само выйдет после нескольких поколений, а иногда и вовсе взяв худшее можно получить лучший результат [1].

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

длины. Чтобы понять удовлетворяет ли нас полученное решение можно использовать fitness-функцию. Чем выше ее значение, тем решение лучше. Возьмем за S средний вес ребра, за N количество заданных пунктов и за R полученный вес гамильтонова цикла, тогда наша функция равна (1):

F = S*N-Ga. (1)

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

На этапе мутации можно использовать несколько операторов, к примеру, разбить хромосому на части и поменять их местами, либо случайно выбрать два гена и поменять местами, также можно поменять местами все гены [2,10]. Для получения направленной эволюции необходимо использовать операторы выбора лучших и худших особей, размера популяции, а также удаление повторяющихся особей.

Генетический алгоритм является комбинированным методом решения задачи коммивояжера. За реализацию переборного метода отвечают скрещивание и мутация особей. Отбор лучших особей реализует метод градиентного спуска [3, 50-55]. Помимо данного достоинства, генетический алгоритм может быть легко распараллелен и даже совмещен с использованием нейронных сетей, что также является его плюсами и доказывает актуальность его практического применения в задаче коммивояжера.

Список литературы

1. Гладков Л.А., Курейчик В.В., Курейчик В.М. // Генетические алгоритмы. М.: Физматлит, 2006.

2. Kumar Rakesh, Kumar Mahesh. Global Journal of Computer Science and Technology / Vol. 10. Issue 11 (Ver. 1.0). October 2010. Р. 8-12.

3. Батищев Д.И. Генетические алгоритмы решения экстремальных задач / Под ред. Львовича Я.Е.: Учеб. пособие. Воронеж, 1995.

ОБЗОР И АНАЛИЗ ПРОГРАММНЫХ ПРОДУКТОВ ДЛЯ ПАРАЛЛЕЛЬНЫХ ВЫЧИСЛЕНИЙ Гоголев Е.С.

Гоголев Евгений Сергеевич - студент магистратуры, факультет прикладной математики и информатики, Московский авиационный институт, УЦ «Интеграция», г. Серпухов

Аннотация: в статье рассмотрены и проанализированы два программных продукта, выявлены их достоинства и недостатки. Это программы CUDA и ROOT/PRooF. Ключевые слова: параллельные вычисления, параллельное программирование, анализ.

CUDA (Compute Unified Device Architecture) - программно-аппаратная архитектура параллельных вычислений, благодаря которой можно увеличить вычислительную производительность из-за применения графических процессоров фирмы NVIDIA [1].

CUDA SDK позволяет программистам реализовывать на специальном упрощённом диалекте языка программирования Си алгоритмы, выполнимые на графических процессорах NVIDIA, и включать специальные функции в текст программы на Си. Архитектура CUDA даёт разработчику возможность по своему

7

i Надоели баннеры? Вы всегда можете отключить рекламу.