Симонова Е.В.
ФГБОУ ВПО «Самарский государственный аэрокосмический университет имени академика С.П. Королева (национальный
исследовательский университет)»,
к.т.н., доцент Simonova.Elena.V@gmail.com
Обучение распределенному решению сложных задач на основе мультиагентного подхода
Аннотация
В статье предлагается эволюционный подход к решению задачи о восьми ферзях, базирующийся на использовании разработанной мультиагентной платформы для решения сложных задач. Разработанная система предлагается в рамках учебного курса студентам, изучающим информационные технологии, а также начинающим разработчикам мультиагентных систем в качестве методического базиса для создания систем распределенного интеллекта.
1 Мультиагентные технологии как новый этап в развитии информационных технологий.
Новый этап в развитии информационных технологий связывается с мультиагентными технологиями, которые по своему потенциалу призваны в скором времени выйти на уровень нано- и биотехнологий. Мультиагентные технологии получили интенсивное развитие в последние десятилетия на стыке методов искусственного интеллекта, объектно-ориентированного программирования, параллельных вычислений и телекоммуникаций. Мультиагентные технологии реализуют новый подход к решению задач оперативной обработки информации в процессах принятия решений в широком спектре предметных областей. Мультиагентная система (МАС) состоит из автономных программных агентов, способных воспринимать ситуацию, принимать решения и взаимодействовать с себе подобными [1-4].
Решение любой сложной задачи в такой системе может формироваться эволюционным путем, по мере возникновения внешних и внутренних событий, за счет взаимодействия десятков и сотен тысяч агентов, непрерывно конкурирующих и кооперирующихся друг с другом. В таком подходе очень трудно или даже невозможно просчитать заранее все последствия принятия агентом того или иного решения на текущем шаге, например, в силу комбинаторно растущей сложности вычислений. Поэтому обычно принимается решение (делается «проба»), которое позволяет улучшить ситуацию, а далее это решение пересматривается при первой же возможности, поскольку этот процесс меняет условия для других агентов, что приводит к новым ситуациям. Фактически, при таком подходе решение
задачи находится методом «проб и ошибок», что оказывается очень близко подходу людей к решению сложных задач. Такой подход позволяет решать на практике задачи самой высокой сложности, не поддающиеся решению другими способами, например, в области планирования и оптимизации ресурсов в реальном времени [5].
В настоящей статье предлагается использовать задачу о восьми ферзях [6] в качестве методического базиса для практического обучения программистов в учебных приложениях, демонстрирующих возможности применения эволюционных вычислений для решения сложных задач. Вот уже в течение нескольких лет в процессе преподавания учебного курса по мультиагентным системам мы даем эту задачу программистам, которые осваивают мультиагентный подход к решению сложных задач, например, динамического планирования, логистики и даже понимания текстов. При этом для решения задачи о восьми ферзях вместо классического переборного решения предлагается создать агентов ферзей, которые выбирают направление для ухода из-под боя либо случайно, либо в результате переговоров.
В настоящей статье мы опишем данную задачу и предлагаемый нами мультиагентный подход к ее решению, а также представим инструментальную среду программирования для решения таких сложных задач. Далее мы проведем серию экспериментов, показывающих, как привнесение интеллекта и переговоров в логику принятия решения агентами улучшает скорость сходимости решения и дает важные конкурентные преимущества системам рассматриваемого класса.
Важно заметить, что рассматриваемый класс задач и решений может быть расширен на важные задачи многокритериального планирования и оптимизации ресурсов, распознавания образов, понимания текстов, извлечения знаний и многие другие сложные задачи, для которых до сих пор нет никакого общего решения.
2 Задача о восьми ферзях и методы ее решения.
Задача о расстановке 8 ферзей заключается в том, чтобы расставить на шахматной доске размером 8 на 8 клеток фигуры восьми ферзей так, чтобы они не били друг друга. В литературе известны различные классические алгоритмы [6-8], реализующие традиционный комбинаторный перебор для поиска решений этой задачи, - однако, они имеют ряд ограничений, применимы только для восьми фигур ферзей, долго работают для поиска решений, весьма сложны и трудно модифицируемы и т.д.
Мы хотим видоизменить и еще более усложнить постановку задачи и за счет применения мультиагентного подхода при решении данной задачи дополнительно обеспечить для обучаемых следующие важные новые возможности [9]:
- изменять саму постановку задачи и вводить новые классы фигур и схем их взаимодействия, чтобы показать возможности усложнения
постановки задачи без кардинальной перестройки метода решения задачи и перепрограммирования системы;
- прямо в ходе решения задачи, в реальном времени, динамически вводить в игру экземпляры новых фигур или, наоборот, выводить фигуры из игры для показа возможности пользователя вмешиваться в процесс работы системы и изменять ситуацию на доске и условия задачи в реальном времени;
- изменять предпочтения или ограничения любого агента, например, ограничивать возможность перехода выбранных фигур прямо в процессе их расстановки в целях демонстрации возможностей индивидуального подхода к каждому агенту;
- показать, как расширяется спектр взаимодействий системы с пользователем, когда, в отличие от обычной программы, система предлагает решение, которое он может улучшить вручную, на каждый шаг оператора система может отвечать своими ходами, как в игре, достраивая решение;
- ввести ограничение по времени поиска решения, чтобы система запоминала промежуточные успешные решения и, если время вышло, выдавала пользователю, хотя бы, лучшее частичное решение, в данном случае, с минимумом конфликтов;
- показать возможности для программистов наращивать интеллект агентов и изменять логику принятия решений без полной перестройки системы.
Развиваемый нами мультиагентный подход позволяет создавать системы распределенного интеллекта, в которых решение достигается через взаимодействие множества автономных агентов. Для задачи о восьми ферзях при таком подходе к решению также нет одного «командного» центра, который анализирует ситуацию на доске и решает для каждого ферзя, куда ходить. Напротив, от имени и по поручению каждого ферзя действует его автономный программный агент, при этом агенты, являясь машинами состояний (и фактически сопрограммами), по очереди получают от диспетчера управление на каждом шаге работы системы. Агент каждого ферзя сам решает, куда ему пойти. Лучшие решения, получаемые в ходе работы системы, запоминаются, т.е. если истекло время, отпущенное на решение, у оператора остаются варианты, хотя бы, частичного решения задачи.
Такой метод достаточно быстро находит начальное «грубое» решение на основе тех предпочтений, которым следуют агенты, хотя это решение может быть частичным и неполным с точки зрения удовлетворения всех критериев, например, иметь много нерешенных конфликтов. Затем агенты начинают улучшать решение путем выявления и разрешения конфликтов между участниками процесса поиска решения. При размещении шахматных фигур конфликт возникает, когда одна фигура атакует другую. Поэтому задача состоит в том, чтобы, основываясь на некотором начальном
размещении фигур, разрешить все конфликты и определить такое размещение фигур, которое исключит конфликты.
При этом фигуры могут выбирать очередной шаг решения на основе одной из двух стратегий - случайного выбора хода или переговоров между фигурами в случае конфликтов:
Агенты принимают решения случайно: когда фигура обнаруживает конфликт, возникающий в ситуации, если она находится под боем другой фигуры, либо сама бьет другую фигуру (например, ферзь может не бить коня, но находиться под его угрозой), определяются свободные клетки для перехода и фигура случайным образом выбирает одну из этих клеток.
Агенты принимают решения на основе переговоров: каждая фигура определяет, с кем у нее конфликт, после чего принимается решение, кто должен уступить и какой ход следует сделать первой, второй фигуре или даже обеим сразу. При этом также показывается, что если у агентов появляется такого рода интеллект, то это позволяет быстрее получать решения или управлять качеством решения.
В результате, решение строится как набор компромиссов, достигаемых фигурами, с учетом их ограничений и предпочтений, подобно тому, как это происходит при решении любых сложных междисциплинарных задач.
3. Мультиагентная система решения задачи о восьми ферзях.
Рассмотрим особенности реализации мультиагентного подхода к решению задачи о восьми ферзях [9].
3.1 Модель предметной области задачи о расстановке восьми ферзей
Опишем концептуальную модель предметной области задачи, которую в дальнейшем будем задавать онтологией, состоящей из набора классов понятий и отношений между ними [10]. Базовой сущностью нашей онтологии «Queens» является концепт «Chesspiece» (шахматная фигура, у которой имеется 6 наследников: Queen (Ферзь), King (Король), Rook (Ладья), Knight (Конь), Bishop (Слон), Pawn (Пешка). Концепт Chesspiece содержит следующие атрибуты: Name (Имя), Fixed (Возможность перемещения), Horizontal (Позиция по горизонтали), Vertical (Позиция по вертикали), Attacks (логика поведения фигуры), ConflictsCount (Количество конфликтов).
Диаграмма понятий и отношений онтологии приведена на Рис. 1.
Рис. 1. Понятия и отношения онтологии «Queens»
«Chesspiece» представляет собой абстрактную сущность, поэтому логика поведения определена лишь в ее наследниках. У каждого из потомков Chesspiece имеется константа «Attacks», рекуррентно описывающая область атаки фигуры, как определено ниже. Таким образом, поведение каждого агента отделено от кода системы и задается на уровне онтологии. Располагая с помощью системы агентов шахматных фигур в определенных позициях доски, пользователь создает сцену, которую можно запустить на выполнение и в динамике наблюдать, каким образом выполняется расстановка фигур в соответствии с правилами задания ходов, определенными в онтологии.
Логику поведения агентов на уровне онтологии позволяет задать свойство «Attacks», которое используется в методах работы агентов, определяющих стратегию принятия решения об очередном ходе, а также алгоритм выбора клетки для перемещения.
Например, для коня свойство Attacks определено как «12 21», а для ладьи - «01 02 03 04 05 06 07 10 20 30 40 50 60 70». Известно, что конь атакует фигуры, отстоящие от него по горизонтали на одну клетку и на две по вертикали или на две по горизонтали и одну по вертикали. Ладья, в свою очередь, атакует фигуры с совпадающей горизонтальной составляющей и отстоящие по вертикали на 1, 2, 3, 4, 5, 6 либо 7 клеток или с совпадающей вертикальной составляющей и отстоящие по горизонтали на 1, 2, 3, 4, 5, 6 либо 7 клеток шахматного поля.
Таким образом, поведение шахматных фигур можно описать множеством пар расстояний по горизонтали и вертикали от их текущего местоположения. Для коня этим множеством будет {(1, 2), (2, 1)}, для ладьи - {(0, 1), (0, 2), (0, 3), (0, 4), (0, 5), (0, 6), (0, 7), (1, 0), (2, 0), (3, 0), (4, 0), (5, 0), (6, 0), (7, 0)}. Аналогично можно определить логику поведения для моделей других шахматных фигур.
Акт атаки отображается на игровом поле красными линиями в направлении от атакующей фигуры к атакованной. Атака Ферзя, Коня и Ладьи продемонстрирована на Рис. 2.
\
S
П- •А
Q
Рис. 2. Поведение агентов Оказываясь источником либо целью атаки, шахматная фигура должна переместиться в другую клетку. Поиск клетки для перемещения выполняется следующим образом:
1) вначале предпринимается попытка найти такую клетку, при переходе в которую фигура не будет конфликтовать ни с одной другой
фигурой;
2) если найти такую позицию невозможно, фигура перемещается на позицию, в которой наблюдался минимум конфликтов, или сохраняет свою позицию.
3.2. Логика работы агентов фигур
Для реализации логики агентов разных фигур используется всего лишь один тип агентов: ChessmateAgent, с контекстом ChessmateAgent Context. ChessmateAgent при этом может быть обычным агентом фигуры или наблюдателем за сценой, это определяется свойством IsMainObserver контекста. Наблюдатель - это агент, который, в отличие от обычных агентов фигур, не принимает участия в процессе поиска решения, а собирает от обычных агентов информацию о конфликтах и на основе этой информации принимает решение об останове сцены и выдаче результатов пользователю.
И наблюдатель, и обычные агенты, независимо от стратегии разрешения конфликтов, хранят в памяти положение всех других фигур. Хранение сцены непосредственно в памяти агента эффективнее с точки зрения быстродействия, чем использование специального агента сцены, с которым каждой фигуре пришлось бы обмениваться отдельными сообщениями при каждой попытке перемещения. При каждом случайном ходе потребовалось бы одно обращение к агенту сцены. В среднем необходимо 7-8 сообщений, а в наихудшем случае, при отсутствии «безопасных» клеток, требуется 64 сообщения за вычетом количества фигур. Без использования специального агента сцены каждый новый агент при появлении в сцене посылает широковещательное сообщение, на которое получает ответ, т.е., всего (2 * (Количество фигур - 1)) сообщений. В случае перемещения отсылается широковещательное сообщение о новой позиции, на которое ответ не требуется, при этом количество сообщений равно (Количество фигур - 1). Таким образом, в случае 8 ферзей после каждого перемещения отсылается всего 7 сообщений о состоянии.
[ Aflfri!
Hanger аЬ sewer Platform
[ 1
Щ
ftwj)
--I \
I
--К
Id solution found
Slag» q i j
^MceiinqMeii.iqi-i
г-*
1 МДИНЧМ I TUl-L^i I
!——1
31ггЦцу
—Г—
Cflndfc ¡мГа^пГ fch^y»
-*
JUfa 11
Рис. 3. Протокол переговоров агента-наблюдателя
Рис. 4. Прокол переговоров обычного агента фигуры
Протокол переговоров агента-наблюдателя с диспетчером и платформой представлен на Рис. 3. Протокол переговоров обычного агента с диспетчером, системой посылки сообщений, стратегиями фигур и
агентом-наблюдателем приведен на Рис. 4.
В системе реализованы две стратегии разрешения конфликтов. В соответствии со стратегией случайного выбора агент принимает решение о переходе в свободную клетку случайным образом.
Рассмотрим подробнее переговоры, которые осуществляются при использовании стратегии простых переговоров как способе ухода фигуры из-под боя:
1. Агент запускает свою стратегию для принятия решения.
2. Агент составляет список фигур, с которыми имеется конфликт.
3. Случайно выбирается одна из фигур и ей отправляется сообщение о количестве конфликтов (ConflictsCountMessage).
4. Выбранная фигура, получив сообщение, сравнивает полученное количество конфликтов со своим количеством конфликтов. Если собственное количество конфликтов фигуры больше или равно, чем полученное, фигура совершает ход. В противном случае, ход совершает фигура, с которой ведутся переговоры, при этом фигура, инициировавшая переговоры, ход не совершает.
5. Агент фигуры возвращает управление.
Сравнивая две стратегии, как будет подробно показано ниже, пользователь приходит к выводу, что стратегия переговоров по сравнению со случайным выбором позволяет достичь результата за меньшее количество ходов.
3.3 Реализация мультиагентной системы.
В архитектуре мультиагентной системы решения задачи о восьми ферзях можно выделить следующие компоненты (Рис. 5):
• мультиагентная исполняющая система - диспетчер агентов и компоненты, обеспечивающие работу и взаимодействие агентов, включая подсистему сообщений и подсистему поддержки логики работы шахматных фигур;
• хранилище онтологии и хранилище онтологических сцен, объединяющие в себе все знания о классах шахматных фигур и текущем состоянии решаемой задачи;
• база данных для временного запоминания промежуточных и лучших окончательных вариантов расстановок фигур;
• средства отображения и навигирования по онтологии и сценам, позволяющие пользователям просматривать информацию о решаемой задаче (поддерживается отображение онтологии в виде словаря понятий, либо семантической сети);
• средства редактирования онтологий и сцен;
• интерфейс пользователя.
Интерфейс пользователя реализует функции по визуальному конструированию и редактированию онтологий и сцен, запуску сцен в работу и проведению экспериментов для сравнения стратегий разрешения
конфликтов (Рис. 6).
Возможно также редактирование онтологии. При выделении фигуры на палитре фигур в панели свойств отображаются ее свойства, как и для фигуры, выделенной на доске. Изменение этих свойств будет сохранено в онтологии так, что все фигуры данного типа, впоследствии добавленные на доску, будут иметь установленные свойства.
• Agent dispatcher
• Messaging support
• Decision making support
Рис. 5. Архитектура мультиагентной системы
Рис. 6. Интерфейс пользователя
4 Эксперименты со стратегиями
В процессе поиска решения в системе рассматриваются промежуточные расстановки, при которых часть агентов шахматных фигур находятся в состоянии конфликта, а часть - нет. На рис. 7 последовательно показана начальная, промежуточная и конечная расстановка ферзей.
ш--■—И в
\и ■ щ и ш я шж
V—* Щ;- ^йг [
Ш ш
-^
Рис. 7. Расстановка ферзей
Зафиксируем несколько ферзей и, перемещая фигуры, создадим новые конфликтные ситуации. Затем вновь запустим сцену на выполнение. Выделенные ферзи зафиксированы, но свободные ферзи находят новые положения, и решение строится заново.
Вместе с тем, в ряде случаев рассматриваемая задача расстановки шахматных фигур не имеет решения и алгоритм расстановки работает слишком долго, например, если требуется выполнить расстановку 9 ферзей на доске 8 на 8 клеток в данном положении. Для того чтобы и в данном случае получить приемлемое решение за конечный интервал времени, пользователю предоставляется возможность установить ограничение на время поиска решения с помощью задания лимита в панели инструментов. После запуска сцены на выполнение, по истечении временного периода,
в № ш
lj?jit
♦II, J н
В
ш 0
заданного ограничением, на экране отобразится решение, а если за отведенное время точное решение найдено не было - сцена с наименьшим числом конфликтов из всех рассмотренных, т.е., приближенное решение.
При повторном запуске приближенное решение может улучшиться, так как некоторые из вновь рассмотренных сцен могут иметь меньшее число конфликтов, чем приближенное решение, найденное в предыдущей итерации. Получив промежуточное решение, пользователь может затем попытаться улучшить его вручную. Такой метод позволяет избежать зацикливаний алгоритма поиска расстановок шахматных фигур или чрезмерно длительного времени его работы.
В разработанной системе также возможна расстановка других типов фигур, причем с произвольным увеличением числа таких фигур на доске (больше 8 фигур), что также не решается никакими известными классическими комбинаторными алгоритмами. Таким образом, разработанная система может выступать в качестве нового исследовательского инструмента для решения задач подобного класса.
Как было отмечено ранее, пользователь может динамически изменять применяемую для решения стратегию. Сравним две реализованных стратегии: стратегию случайного выбора и стратегию простых переговоров.
Эксперименты проводились на аппаратной конфигурации следующего вида:
• CPU: Intel Core 2 Duo T5450 @ 1.66 GHz,
• RAM: 2 Gb DDR2-667,
• OS: Windows 7 RC1.
В табл. 1 приведены результаты измерения времени для двух стратегий разрешения конфликтов и 7 различных расстановок 8 ферзей. Эксперименты проводились для начальных сцен, выбранных случайным образом. Для каждой сцены измерялось число конфликтов в ходе решения и общее время работы системы до достижения финального состояния. Стратегия переговоров во всех проведенных экспериментах давала результат примерно в 4 раза быстрее, чем стратегия случайного выбора. На основании полученных результатов можно сделать вывод о том, что за счет введения интеллекта и самых простых переговоров в стратегию поиска решения, мы улучшили скорость получения расстановки фигур в среднем в 4 раза. Кроме того, стратегия случайного выбора показала высокую неустойчивость процесса поиска решения, выражавшуюся в неожиданных замедлениях на некоторых конфликтах, т.к. эта стратегия зависит от многих случайных факторов.
Табл. 1. Результаты экспериментов по сравнению стратегий _принятия решений агентами фигур
№ сцены (испытания) Стратегия случайного выбора Стратегия переговоров
1 2449 562
2 8127 390
3 1762 343
4 11419 327
5 3120 405
6 2792 795
7 2184 780
5. Обсуждение результатов и выводы
Мультиагентная система для решения задачи о расстановке восьми ферзей предназначена для демонстрации важных преимуществ эволюционного подхода, реализуемого на основе мультиагентных технологий. Классическая постановка задачи о восьми ферзях при этом была расширена рядом следующих важных возможностей: усложнение постановки задачи путем добавления новых классов фигур и методов их взаимодействия без перестройки системы; динамическая модификация сцены на шахматной доске за счет добавления и удаления новых фигур в реальном времени; индивидуальная установка свойств каждого агента;
учет ограниченности времени решения; пользователю предлагается результат даже в том случае, если точное решение не найдено; программисты могут продолжать наращивать интеллект агентов и изменять логику принятия решений без полной перестройки системы.
Разработанная система может применяться для обучения студентов любых компьютерных специальностей, для повышения квалификации разработчиков МАС, а также использоваться как интересный поясняющий или презентационный материал для потенциальных клиентов, сложные и трудоемкие задачи которых требуют поиска новых инновационных подходов и решений в реальном времени.
На первом этапе обучения разработанная система предлагается в готовом виде для экспериментов с двумя реализованными стратегиями. На втором этапе более продвинутым разработчикам даются библиотеки системы, позволяющие создавать новые стратегии и проводить другие эксперименты. Работа с компонентами позволяет обучаемым создавать и свои варианты приложений.
Показана важная роль переговоров при создании систем распределенного интеллекта, которые в ряде случаев позволяют получить решение лучше и быстрее по сравнению с известными классическими методами. Предлагаемый эволюционный подход к решению данной задачи представляется применимым также для решения таких сложных, актуальных и значимых задач, как задачи динамического планирования и оптимизации ресурсов, конфигурирования сложных объектов,
распознавания образов, кластеризации данных и понимания текстов и многих других [11].
Литература
1. Тарасов В.Б. Агенты, многоагентные системы, виртуальные сообщества: стратегическое направление в информатике и искусственном интеллекте // Новости искусственного интеллекта. 1998, № 2. С. 5-63.
2. Гаврилова Т.А., Хорошевский В.Ф. Базы знаний интеллектуальных систем // учебник для вузов. СПБ: Питер, 2001. 384 с.
3. Андреев В.В., Минаков И.А., Пшеничников В.В., Симонова Е.В., Скобелев П.О. Основы построения мультиагентных систем: учебное пособие. Самара: Изд-во ПГАТИ, 2007. 151 с.
4. Абрамов Д.В., Андреев В.В., Симонова Е.В., Скобелев П.О. Открытые мультиагентные системы для принятия решений в задачах динамического распределения ресурсов: учебное пособие. Самара: Изд-во ПГАТИ, 2008. 290 с.
5. Иващенко А.В., Лада А.Н., Симонова Е.В., Скобелев П.О. Мультиагентная технология управления мобильными ресурсами в режиме реального времени: учебное пособие. Самара: Изд-во ПГУТИ, 2011. - 180 с.
6. Расстановки ферзей //URL: http://algolist.manual.ru/maths/combinat/queens.php
7. Eight queens puzzle // URL: http://en.wikipedia.org/wiki/8_queens_problem.
8. The N Queens Problem: a study in optimization // URL: http://jsomers.com/nqueen_demo/nqueens.html.
9. Симонова Е. В., Скобелев П. О. Мультиагентная система решения задачи о расстановке восьми ферзей: методические указания. Самара: Изд-во ПГУТИ, 2010. 34 с.
10. Боргест Н.М., Симонова Е.В. Основы построения мультиагентных систем, использующих онтологию: учебное пособие. Самара: Изд-во СГАУ, 2009. 76 с.
11. Скобелев П. О. Мультиагентные технологии в промышленных применениях: к 20-летию основания Самарской научной школы мультиагентных систем // Мехатроника, автоматизация, управление. 2011, № 12. С. 33-46.