Муравьиные алгоритмы в решении задач оптимизации
Оптимизация по принципу муравьиной колонии. Обеспечение эффективной работы программы на компьютере с четырьмя процессорами Intel Xeon E7-8890 v4. Проблема поиска оптимального маршрута в транспортной сети. Блок-схема архитектуры реализации алгоритма.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | русский |
Дата добавления | 01.05.2018 |
Размер файла | 1,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ
Старооскольский технологический институт им. А.А. Угарова
(филиал) федерального государственного автономного
образовательного учреждения высшего образования «Национальный исследовательский университет «МИСиС»
Кафедра АИСУ
Реферат на тему:
«Муравьиные алгоритмы в решении задач оптимизации»
Проверил:
Д.т.н. Еременко Ю.И.
Старый Оскол - 2017г.
ОГЛАВЛЕНИЕ
- ВВЕДЕНИЕ
- 1. РЕШАЕМАЯ ЗАДАЧА
- 2. О МУРАВЬИНОМ АЛГОРИТМЕ
- 3. БАЗОВАЯ РЕАЛИЗАЦИЯ АЛГОРИТМА
- 4. РЕЗУЛЬТАТЫ ИСПЫТАНИЙ БАЗОВОЙ ВЕРСИИ
- 5. ОПТИМИЗАЦИЯ №1
- 6. РЕЗУЛЬТАТЫ ОПТИМИЗАЦИИ №1
- ЗАКЛЮЧЕНИЕ
- СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
ВВЕДЕНИЕ
Алгоритмы муравья или оптимизация по принципу муравьиной колонии (это название было придумано изобретателем алгоритма, Марко Дориго), обладает специфическим свойствами, присущими муравьям, и используют их для ориентации в физическом пространстве.[1] Колония муравьев может рассматриваться как многоагентная система, в которой каждый агент (муравей) функционирует автономно по очень простым правилам. В противовес почти примитивному поведению агентов, поведение всей системы получается на удивление разумным. Муравьиные алгоритмы серьезно исследуются европейскими учеными с середины 90-х годов. На сегодняшний день уже получены хорошие результаты для оптимизации таких сложных комбинаторных задач, как задача коммивояжера, задача оптимизации маршрутов грузовиков, задача раскраски графа, квадратичная задача о назначениях, задача оптимизации сетевых графиков, задача календарного планирования и многие другие.
1. РЕШАЕМАЯ ЗАДАЧА
Цель задачи добиться эффективной работы программы на компьютере с четырьмя процессорами Intel Xeon E7-8890 v4. Система оснащена 512 Гб оперативной памяти, на ней установлена Linux 3.10.0-327.el7.x86_64, код компилировался с помощью Intel Parallel Studio XE 2016 U2.
Проблема поиска оптимального маршрута в транспортной сети известна как «задача коммивояжёра». На практике это, например, нахождение оптимальных путей перевозок товаров. Изначально «эффективность» в задачах такого рода означала выбор наиболее дешёвого пути, но за последние несколько десятилетий понятие «стоимость маршрута» расширилось. Теперь сюда включают и воздействие на окружающую среду, и цену энергоресурсов, и время. В дополнение к этому, глобализация бизнеса и цепочек поставок привели к тому, что размеры и сложность транспортных сетей, а значит - и моделей, на которых базируются расчёты, значительно выросли. Теперь типичные задачи оптимизации маршрутов классифицируют как НП-трудные. Обычно для решения таких задач не подходят детерминированные методы.
С развитием распределённых и многоядерных вычислительных систем были разработаны и успешно применены эвристические методы решения задач, в частности - так называемый муравьиный алгоритм (Ant Colony Optimization, ACO). Рассмотрим процесс анализа базовой реализации ACO и улучшении кода.
2. О МУРАВЬИНОМ АЛГОРИТМЕ
Алгоритм в программе основан на поведении колонии муравьёв. Насекомые ищут источники питания, помечая пройденные пути феромонами, которые привлекают других муравьёв. Со временем феромоны испаряются, то есть, более длинные пути становятся менее привлекательными, чем более короткие, или те, по которым можно пройти быстро. В результате, чем короче или быстрее путь, тем больше муравьёв он способен заинтересовать, при этом, каждый из них, проходя по пути, делает его ещё привлекательнее.
На рисунке ниже показан пример транспортной сети. Сплошными линиями отмечены прямые маршруты между узлами, точечными - непрямые маршруты.
Пример транспортной сети
Простые компьютерные агенты способны, используя вероятностный подход, находить решения транспортных задач с использованием муравьиного алгоритма. Параллельные реализации этого алгоритма, отличающиеся, однако, некоторыми ограничениями, уже были исследованы в прошлом.
Так, в 2002-м году Маркус Рэндалл с соавторами опубликовал материал (A Parallel Implementation of Ant ColonyOptimization, Journal of Parallel and Distributed Computing 62), в котором показан подход к распараллеливанию задачи, приведший к приемлемому ускорению вычислений. Однако, в данной реализации для поддержания матрицы феромонов требовалось большое количество взаимодействий между «муравьями», которые действовали параллельно, при этом каждый из них был самостоятельной единицей модели. В результате производительность решения оказалась ограничена интерфейсом передачи сообщений (Message Passing Interface, MPI) между «муравьями».
В 2015-м был опубликован материал (Veluscek, M., T. Kalganova, P. Broomhead, A. Grichnik, Composite goal methods for transportation network optimization, Expert Systems with Applications 42), в котором описана методика оптимизации транспортной сети с использованием технологии OpenMP и общей памяти. Однако, такой подход хорошо подходит лишь для систем со сравнительно небольшим числом вычислительных ядер и потоков.
компьютер муравьиный алгоритм
3. БАЗОВАЯ РЕАЛИЗАЦИЯ АЛГОРИТМА
Вот блок-схема базовой архитектуры параллельной реализации муравьиного алгоритма. Именно с неё начались эксперименты.
Схема неоптимизированной реализации муравьиного алгоритма
На этой схеме показано, как каждый «месяц» запускается множество итеративных процессов. В каждом из них в сеть «выпускают» группу «муравьёв», которые строят матрицы феромонов. Каждый итеративный процесс полностью независим, он исполняется в собственном потоке.
Здесь используется статическое распределение заданий, каждый поток OpenMP выполняет свою часть работы, находя локальное решение. После того, как все потоки завершат исполнение, главный поток сравнивает найденные ими локальные решения и выбирает лучшее, которое становится глобальным.
4. РЕЗУЛЬТАТЫ ИСПЫТАНИЙ БАЗОВОЙ ВЕРСИИ
Один из самых быстрых способов выяснить, эффективно ли масштабируется приложение при увеличении числа доступных ему вычислительных ядер, заключается в следующем. Сначала получают базовый показатель производительности на одном процессоре . Затем этот показатель сравнивают с результатами измерения производительности при запуске на нескольких процессорах, причём, как с применением технологии Hyper-Threading, так и без неё. В идеальном сценарии, если предположить, что производительность зависит лишь от числа вычислительных ядер, система с двумя сокетами должна показать производительность, которая вдвое больше, чем производительность системы с одним. Соответственно, четыре сокета должны дать четырёхкратный рост производительности.
На рисунке ниже можно увидеть результаты испытаний базовой версии приложения. Сейчас наш код далёк от идеала. После того, как число сокетов превысило два (48 ядер), программа масштабируется не слишком хорошо. На четырёх же сокетах с включенной технологией Hyper-Threading (192 логических ядра) производительность даже ниже чем при использовании одного сокета.
Испытание базовой неоптимизированной реализации алгоритма
Анализ базовой реализации алгоритма с помощью VTune Amplifier XE
Для того, чтобы выяснить, что же мешает приложению нормально работать на нескольких процессорах, мы воспользуемся Hotspot-анализом VTune Amplifier XE 2016. Будем искать наиболее нагруженные участки программы. При проведении замеров в VTune Amplifier использовалась уменьшенная рабочая нагрузка (384 итеративных процесса) для того, чтобы ограничить размер собираемых данных.
На рисунке ниже показан отчёт VTune. В частности, нас интересуют показатели в группе Top Hotspots и показатель Serial Time, который позволяет узнать время, приходящееся на последовательное исполнение кода.
Отчёт Top Hotspots
Из отчёта видно, что приложение тратит много времени на последовательное исполнение кода, что напрямую воздействует на параллельное использование ресурсов системы. Самый нагруженный участок программы - это модуль выделения памяти из стандартной библиотеки для работы со строками, который не масштабируется достаточно хорошо при большом числе ядер. Это важная находка. Дело в том, что OpenMP использует один разделяемый максимальный кусок памяти, поэтому огромное количество параллельных обращений из разных потоков к конструктору строк или к модулю выделения памяти для объектов, делают память узким местом. Если посмотреть на показатель СPU Usage, приведённый ниже, можно обнаружить, что приложение, хотя и использует все 96 доступных ядер, делает это неэффективно, нагружая их лишь в коротких промежутках времени.
Использование процессора
Если же взглянуть на то, чем заняты потоки, мы увидим, что нагрузка на них не сбалансирована.
Несбалансированная нагрузка
Так, главный поток (Master) в конце каждого «месяца» выполняет вычисления, а остальные потоки ничего полезного в это время не делают.
Теперь, после анализа кода, займёмся его оптимизацией.
5. ОПТИМИЗАЦИЯ №1.
Для того, чтобы избавиться от большого набора потоков OpenMP, который присутствует в базовой реализации, мы использовали стандартный подход «главный-подчинённый» и добавили в наше приложение ещё один уровень параллелизма. А именно, теперь за вычисления в рамках отдельных итераций отвечают MPI-процессы, исполняемые параллельно, каждый из которых, в свою очередь, содержит некоторое количество OpenMP-потоков. Теперь нагрузки, связанные с выделением памяти под строки и объекты, распределены по MPI-процессам. Такая гибридная MPI-OpenMP реализация алгоритма ACO показана на блок-схеме ниже.
Оптимизированная реализация №1
Протестируем то, что у нас получилось, с использованием VTune Amplifier. Мы исследуем оптимизированный вариант приложения по той же методике, по которой изучали его базовую версию. На рисунке ниже показан отчёт Top Hotspots, по которому можно судить о том, что теперь программа тратит меньше времени на операции по выделению памяти для строк.
Отчёт Top Hotspots
А вот - гистограммы использования процессора в базовой (слева) и оптимизированной версии программы.
Гистограммы использования процессора
Вот как теперь выглядит загрузка потоков. Видно, что она сбалансирована значительно лучше, чем ранее.
Сбалансированная нагрузка
На рисунке ниже можно видеть, что все доступные 96 ядер загружены практически полностью.
Использование процессора
6. РЕЗУЛЬТАТЫ ОПТИМИЗАЦИИ №1
Гибридная MPI-OpenMP версия программы показала гораздо лучшие результаты в плане балансировки нагрузки между MPI-процессами и потоками OpenMP. Так же она продемонстрировала гораздо более эффективное использование большого числа ядер, доступных в системах с процессорами Intel Xeon E7-8890. Вот как выглядят результаты тестирования текущего варианта программы в сравнении с базовым.
Сравнение результатов базовой и оптимизированной версий программы
Здесь можно видеть, что программа значительно лучше масштабируется при росте числа доступных ядер. Рост производительности наблюдается и при включении Hyper-Threading.
ЗАКЛЮЧЕНИЕ
Исследование базовой параллельной реализации муравьиного алгоритма позволило выявить проблемы с масштабированием, связанные с механизмами выделения памяти для строк и конструкторами объектов.
Первый этап оптимизации, благодаря применению гибридного подхода, использующего MPI и OpenMP, позволил достичь лучшего использования ресурсов процессора, что значительно повысило производительность.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Интеллектуальные системы принятия решений и управления/Еременко Ю.И.-Старый Оскол: ООО Оскольская Типография ,2010.-183 с.
2.Введение в OpenMP [Электронный ресурс]. // URL: https://software.intel.com/ru-ru/blogs/2011/11/21/openmp-c
3. 96 вычислительных ядер и оптимизация кода муравьиного алгоритма поиска маршрутов [Электронный ресурс] URL: https://habrahabr.ru/company/intel/blog/311618/
Размещено на Allbest.ru
...Подобные документы
Математическая модель алгоритма с модификацией муравьиной колонии. Выбор аппаратных и программных средств для разработки программы. Особенность построения оптимального маршрута обхода пациентов. Характеристика тестирования и отладки данного проекта.
дипломная работа [1,9 M], добавлен 17.11.2017Стратегия развития процессоров Intel. Структурная организация современных универсальных микропроцессоров. Особенности многоядерной процессорной микроархитектуры Intel Core, Intel Nehalem, Intel Westmere. Серверные платформы Intel c использованием Xeon.
реферат [36,5 K], добавлен 07.01.2015Особенности и преимущества языка C#. Алгоритмы поиска маршрутов в графе. Разработка вычислительной системы транспортной логистики на языке C#. Выбор среды разработки, визуализация транспортной сети. Задание условий поиска и пример работы алгоритма.
дипломная работа [457,1 K], добавлен 24.06.2015"Рой частиц" как наиболее простой метод эволюционного программирования, основанный на идеи о возможности решения задач оптимизации с помощью моделирования поведения групп животных. Схема работы алгоритма, составление кода программы и блок-схемы.
курсовая работа [38,5 K], добавлен 18.05.2013Оптимизация показателей эффективности функционирования технологического контура системы управления космическим аппаратом, исследование свойств его показателей. Настройка нейронной сети, гибридизация генетического алгоритма с алгоритмами локального поиска.
дипломная работа [4,5 M], добавлен 02.06.2011Методы обработки информации при решении прикладных задач. Математическая модель задачи. Блок-схема алгоритма программы. Компоненты, которые используются для работы в программе: элементы интерфейса; процедуры; операторы. Текст программы с пояснениями.
курсовая работа [954,0 K], добавлен 07.01.2011Решение задачи по методу Адамса. Блок-схема функции main. Блок-схема функции Adams. Листинг программы. Блок-схема функции MMinor. Блок-схема функции MatrixMultiply. Блок-схема функции Determinant. Результат решения задачи на ЭВМ.
курсовая работа [68,9 K], добавлен 16.04.2004Загальна інформація про створення суперкомп’ютера Stampede. Аналіз прискорювача Intel Xeon Phi - карти Intel, архітектури Intel Xeon Phi, апаратної частини. Екскурсія по суперкомп’ютеру Stampede. Опис особливостей мережі. Характеристики сховища даних.
реферат [2,8 M], добавлен 19.06.2015Создание компьютерных программ. Сравнение C# с другими языками программирования. Решение задач транспортной логистики. Теория графов и структуры данных. Алгоритмы поиска маршрутов в графе. Выбор среды разработки. Редактирование транспортной сети.
курсовая работа [56,3 K], добавлен 08.10.2015Прискорювач Intel Xeon Phi: карти Intel у суперкоп’ютері Stampede. Архітектура Many Integrated Cores. Скріншот сесії по SSH на дослідному зразку. Апаратна частина Intel Xeon. Тепловий пакет процесора. Stampede: сховище даних. Додаткові вузли збереження.
реферат [1,9 M], добавлен 22.04.2014Классы задач P и NP, их сводимость. Примеры NP-полных и NP-трудных задач. Сущность метода поиска с возвратом. Алгоритмы решения классических задач комбинаторного поиска. Решение задачи о восьми ферзях. Поиск оптимального решения методом ветвей и границ.
презентация [441,5 K], добавлен 19.10.2014Основные аналитические соотношения. Блок схемы и алгоритм решения задачи. Проверка работоспособности алгоритма вручную. Таблица идентификации переменных. Формы входной и выходной печати. Разработка и отладка программы. Инструкция для работы с программой.
курсовая работа [69,8 K], добавлен 13.02.2012Блок-схема алгоритма Флойда. Разработка его псевдокода в программе Microsoft Visual Studio. Программа реализации алгоритмов Беллмана-Форда. Анализ трудоемкости роста функции. Протокол тестирования правильности работы программы по алгоритму Флойда.
курсовая работа [653,5 K], добавлен 18.02.2013Основные типы электронных путеводителей, предназначение их мультимедийной разновидности. Применение электронного путеводителя для ГОУ ВПО "МГТУ им. Г.И. Носова". Выбор алгоритма поиска оптимального маршрута. Функциональные схемы работы программы.
дипломная работа [3,7 M], добавлен 13.04.2014Оптимизация решения задачи с помощью алгоритма отжига. Анализ теории оптимизации как целевой функции. Метод градиентного спуска. Переменные и описание алгоритма отжига. Представление задачи коммивояжера через граф. Сведение задачи к переменным и решение.
курсовая работа [784,0 K], добавлен 21.05.2015Создание и реализация алгоритма решения транспортной задачи методом наименьших стоимостей. Схема алгоритма основной программы. Основные шаги алгоритма решения транспортной задачи. Инструкция по эксплуатации программы и обзор результатов ее выполнения.
курсовая работа [2,0 M], добавлен 12.02.2013Изучение понятия и свойств алгоритма. Определение сущности технологии Robson. Исполнитель, а также блок-схема алгоритма или его графическое представление, в котором он изображается в виде последовательности связанных между собой функциональных блоков.
реферат [155,9 K], добавлен 19.10.2013Программирование игр с использованием визуальных компонентов. Описание операторов, используемых при практической реализации разработанной программы. Работа над созданием программы "Морской бой", постановка задачи, алгоритм реализации работы, блок-схема.
курсовая работа [175,9 K], добавлен 10.05.2010Концептуальная модель программного продукта "Оценка вариантов формирования транспортной сети Азиатской России". Структура базы данных. Возможности программы, схема работы. Модуль работы с проектом и картографическим окружением. Руководство пользователя.
дипломная работа [3,4 M], добавлен 08.12.2013Способ реализации автоматизированной системы расчета маршрута для курьерской компании. Особенности архитектуры ОС Android. Обзор и решение ключевых задач. Прогнозирование времени прохождения маршрута, диспетчеризация. Графический интерфейс системы.
дипломная работа [4,8 M], добавлен 22.06.2012