Мультиагентные платформы и их применение в сетевых задачах

Санкт-Петербургский  государственный университет

Математико-механический факультет

Кафедра системного программирования

 «Мультиагентные платформы  и их применение в сетевых  задачах»

Дипломная работа студента 545 группы

Вольфсона Г.И.

Научный руководитель,

профессор       А.Н. Терехов

 

Рецензент,

доктор наук                         М.Б. Ярошевская

 

«Допустить к защите»

Заведующий кафедрой,

профессор                  А.Н. Терехов

Санкт-Петербург

2013 г.

Содержание

Стр.

  1. Введение______________________________________ 3       
  2. Исследование предметной области________________ 5

2.1. Агенты. Основные понятия___________________ 5

2.2. Интеллектуальные агенты____________________ 7

2.3. Понятие мультагентной системы_______________8

2.4. Технологии создания мультиагентной системы__10

2.5. Обзор существующих методов________________11

    3. Разработка  мультиагентной системы______________12 3.1. Выбор мультиагентной платформы____________12 3.2. Особенности платформы JASDK_____________ 14

3.3. API-интерфейсы аглетов_____________________16

3.4. Реализация  мобильности аглетов______________18

    4. Реализация прототипов_________________________21

4.1. Простейший  агент__________________________21

      5. Область применения___________________________23

      6. Заключение__________________________________25

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

      Приложение 1__________________________________27

      Приложение 2__________________________________28       

 

 

 

 

 

 

 

 

 

1. Введение

 

За последние 10 лет развитие телекоммуникационных технологий привело к возникновению концепций кросс-платформенных, распределенных и интеллектуальных программных систем. Такие системы могут быть реализованы разными способами, но именно мультиагентные системы (МАС) концентрируют все необходимые для таких технологий свойства с наибольшей выразительностью и полнотой. Результаты внедрения агентных технологий подтвердили предсказанную этому направлению перспективность [1].

 

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

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

 

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

 

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

 

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

 

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

 

 

 

 

 

 

 

Задачами настоящей работы были:

 

    • Исследование предметной области
      • Обзор и анализ технологий агентного программирования
      • Рассмотрение и анализ существующих методов достижения поставленной цели
    • Выбор мультиагентной платформы
      • Выработка критериев выбора мультиагентной платформы
      • Анализ и оценка наиболее известных мультиагентных платформ по выработанным критериям
      • Осуществление выбора платформы, в наибольшей степени удовлетворяющей целям настоящей работы
    • Разработка прототипов
      • Разработка интеллектуального агента
      • Разработка мобильного агента
    • Применение в коммерческой задаче

 

 

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

 

Практическое значение настоящей  работы состоит в возможности  ее применения в различных проектах, связанных с мониторингом и диспетчеризацией сетей.

 

Данная работа, выполненная на 33 страницах, состоит из введения, 4 глав, заключения и двух приложений. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. Исследование предметной  области

 

    1. Агенты. Основные понятия.

 

Практически во всех работах, где дается определение, что такое агент и каковы его базисные свойства, общим местом стало замечание об отсутствии единого мнения по этому поводу. Фактически, используя понятие “агент”, каждый автор определяет своего агента с конкретным набором свойств. Понятие агента используется в разных областях, например, на производстве агентом может называться робот, а в области телекоммуникаций - программа и т. п. Как следствие, в зависимости от среды обитания агенты обладают разными свойствами. Поэтому в процессе разработки и реализации систем в рамках данного направления появилось множество типов агентов, например: автономные агенты, мобильные агенты, персональные ассистенты, интеллектуальные агенты, социальные агенты и т.д. [2]

 
Таким образом, вместо единственного  определения базового агента, имеется множество определений производных типов. Учитывая вышесказанное, понятие агента целесообразно трактовать как мета-имя или класс, который включает множество подклассов [Nwana, 1996]. Ряд определений агентов, данных разными исследователями, представлен в работе [Franklin, Graesser, 1996]. Можно остановиться на следующей нейтральной концепции:  

Агент - это аппаратная или программная сущность, способная действовать в интересах достижения целей, поставленных пользователем [2].  

Агенты описываются также рядом свойств, которые характеризуют понятие агента. Обычно агент обладает набором из следующих свойств [3]:

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

Свойства агента (объекта) описываются исходной системой, а правила поведения – порождающей системой.

 

Состояние объекта определяется перечнем его свойств с текущими значениями.

 

Как правило, каждый агент (модуль) работает с определенной метафорой, определяющей функции и особенности исполнителя (человека). Идея каждой метафоры – это инструментальная система (прототип), отражающая схему взаимодействия между исполнителями в данной ситуации [3].

 

 

Агенты бывают простые, смышленые  и интеллектуальные. Интеллектуальные агенты отличаются от первых двух типов  тем, что они способны обучаться, а также поддерживают real-time исполнения.

 

В дальнейшем мы будем рассматривать  только интеллектуальных агентов.

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    1. Интеллектуальные агенты. Назначение и свойства.

 

Под интеллектуальным агентом в информатике и искусственном интеллекте

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

 

Интеллектуальные агенты, обладая  развитым внутренним представлением

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

 

Интеллектуальный агент должен обладать следующими свойствами [4]:

 

• автономность – способность функционировать без вмешательства со стороны своего владельца и осуществлять контроль внутреннего состояния и своих действий;

• социальное поведение – возможность взаимодействия и коммуникации с

другими агентами;

• реактивность – адекватное восприятие среды и соответствующие реакции

на ее изменения;

• активность – способность генерировать цели и действовать рациональным

образом для их достижения;

• базовые знания – знания агента о себе, окружающей среде, включая других агентов, которые не меняются в рамках жизненного цикла агента;

• убеждения – переменная часть базовых знаний, которые могут меняться во

времени, хотя агент может об этом не знать и продолжать их использовать для своих целей;

• цели – совокупность состояний, на достижение которых направлено текущее поведение агента;

• желания – состояния и/или ситуации, достижение которых для агента важно;

• обязательства – задачи, которые берет на себя агент по просьбе и/или поручению других агентов;

• намерения – то, что агент должен делать в силу своих обязательств и/или

желаний.

 

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

 

 

 

 

 

 

    1. Понятие мультиагентной системы. Архитектуры МАС.

 

Мультиагентная система (далее  – МАС) – есть совокупность нескольких агентов.

 

В зависимости от концепции, выбранной для организации MAC, обычно выделяются три базовых класса архитектур [1]:

 

• архитектуры, которые базируются на принципах и методах работы со знаниями;

• архитектуры, основанные на поведенческих моделях типа «стимул-

реакция»;

• гибридные архитектуры.

 

 

Архитектуры MAC и их характеристики, широко используемые в настоящее

время, представлены в  таблице [5]:

 

Архитектуры MAC и их характеристики

Архитектура

Представление знаний

Модель  мира

Решатель

Интеллектуальная

Символьное

Исчисление

Логический

Реактивная

Автоматное

Граф

Автомат

Гибридная

Смешанное

Гибридная

Машина вывода


 

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

 

Гибридные архитектуры  позволяют гибко комбинировать  возможности всех

подходов. Вот почему в последнее время явно прослеживается тенденция разработки

и использования именно гибридных МАС-архитектур и систем агентов.

 

При исследовании сложных  систем с использованием технологии МАС реализуются следующие фундаментальные  идеи:

 

1. Агенты. В сложных  системах существуют автономные  агенты, которые взаимодействуют друг с другом при выполнении своих определенных задач.

2. Агенты изменяют  свое поведение на основе полученной информации и реагируют на свою среду.

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

4. Системы с возникающими  структурами часто существуют  на грани порядка и хаоса. Для них характерно промежуточное состояние между упорядоченным состоянием и хаосом.

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

 

 

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

 

При взаимодействии агентов создаются логически связанные структуры. В данном случае реализуются следующие свойства [5]:

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

2. Простые правила  могут генерировать логически  связанное новое явление.

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

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

5. Агенты и их взаимодействующие  структуры могут формировать двунаправленную связь, т.е. взаимное влияние структуры на агентов.

6. Явление возникновения  – это, как правило, устойчивые  связи с меняющимися компонентами.

7. Множество агентов  могут быть гомогенными или гетерогенными. Большинство систем создается на основе гетерогенности, используя действие различных видов агентов.

 

В настоящее время  многоагентные системы рассматриваются  уже не только

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    1. Технологии создания МАС.

 

Для построения MAC необходим  инструментарий, состоящий из двух компонентов:

 

• средств разработки;

• окружения периода исполнения.

 

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

Разработка мультиагентных систем идет по двум основным направлениям: системы на основе распределенного искусственного интеллекта и системы на основе сценариев [6].

 

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

Исследования в этом направлении в настоящее время  идут по пути интенсивных теоретических исследований и прикладных разработок [4].

 

Мультиагентные системы на основе сценариев ориентированы на использование в больших компьютерных сетях с большим разнообразием представляемого сервиса. Агенты данного класса систем разрабатываются с помощью языков сценариев, таких как Tсl, Java Language и др. Эти языки ориентированы на реализацию асинхронного процесса и удаленное исполнение приложений, инициируемых электронной почтой. Разрабатываемые здесь технологии должны поддерживать мобильность агента. Нужно отметить, что MAC на основе сценариев рассматриваются как основной подход для реализации мобильной телекоммуникации через компьютерные сети общего пользования с помощью переносных компьютеров [7].

 

По сути дела мультиагентные системы можно рассматривать как совокупность взаимосвязанных программных модулей (агентов), являющихся фрагментами знаний, доступных другим агентам. Это, можно сказать, некие «программные роботы», удовлетворяющие различным информационным и вычислительным потребностям конечных пользователей. Они координируют свои знания, цели, умения и планы при решении проблем. Таким образом, можно рассматривать MAC как некие программно-исполнительные устройства.

 

Данная работа призвана исследовать основные существующие средства разработки (мультиагентные платформы), а также продемонстрировать прототип создания МАС.

 

 

 

 

 

 

2.5. Обзор существующих методов решения поставленной задачи. Преимущества агентного подхода.

 

 

 

 

Конечно, задача дистанционного управления, в частности, мониторинга, появилась  не вчера. Поэтому существует ряд  программных продуктов, разработанных  в разных странах, которые достаточно эффективно решают данную проблему. Одним из таких продуктов является ClickOnce от Microsoft [8].

 

Однако практически все эти  системы обладают двумя существенными  недостатками.

 

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

 

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

 

Агентный подход решает обе эти  проблемы. Что касается операционной системы – так как я реализовывал агентов на языке Java, за счет переносимости Java-кода мне абсолютно все равно, какая операционная система будет использоваться.

 

Что касается эволюции – как можно  видеть выше, интеллектуальные агенты как раз предполагают изменение своего поведения в зависимости от изменений во внешней среде. О том, как реализуется данная эволюция, мы поговорим чуть ниже.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3. Разработка мультиагентной системы

 

    1. Выбор мультиагентной платформы 

 

 

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

 

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

 

Таблица формировалась на основании  личного опыта автора (работы со всеми нижеперечисленными платформами, находящимися в свободном доступе), а также на основании отчетов, найденных автором в сети Internet.

 

 

Таблица 1. Сравнение мультиагентных платформ.

Название

Язык

Мобильность

Открытость

Поддержка разных ОС

Интерфейс

Помощь

Tryllian

Java

+

-

+

+

-

AgentBuilder

Java

+

+

+

-

+

Mobydget

C++

-

+

-

+

+

JASDK

Java

+

+

+

+

+

Toshiba Bee

Python

+

+

+

-

-


 

 

 

Поясним понятия, упомянутые в таблице:

Язык  – язык программирования, используемый данной платформой,

Мобильность – способность данной мультиагентной платформы поддерживать мобильность  создаваемых агентов (некоторые  платформы ориентированы исключительно  на интеллектуальных агентов, без мобильности),

Открытость  – находится ли платформа в  свободном доступе,

Поддержка разных ОС – зависит ли платформа  от конкретной операционной системы,

Интерфейс – насколько удобен пользовательский интерфейс данной платформы,

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

Итак, из таблицы видно, что всем вышеуказанным  критериям удовлетворяет мультиагентная платформа JASDK (Java Aglets Software Development Kit). Эта мультиагентная платформа ориентирована на создание так называемых аглетов, то есть мобильных агентов.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.2. Особенности  платформы JASDK

Итак, аглет (aglet) - это Java-агент (апплет-агент), который может перемещаться от одного компьютера к другому. Работу аглета можно приостановить на одном компьютере, перенести на другой, удаленный, и продолжить там. При этом переносимость Java-кода гарантирует, что такой агент будет работать на любой машине и в любой операционной системе. Когда аглет перемещается с машины на машину, он переносит свой собственный код, состояние, в котором находился, и все объекты, которые были с ним связаны. Встроенный механизм безопасности защищает компьютер от непроверенных внешних аглетов.

 

Авторы технологии аглетов преследовали следующие цели:

 

  1. Создать простую, всеобъемлющую и расширяемую архитектуру для разработки мобильных агентов (аглетов), не прибегая к изменениям виртуальной машины Java и базовых методов, а опираясь только на возможности Web- и Java-технологий.
  2. Разработать гибкие механизмы совместной работы агентов, которые позволят им легко взаимодействовать друг с другом.
  3. Построить надежные и простые механизмы безопасности, которые обеспечат доверие к передвижным агентам со стороны конечных пользователей.

 

В результате получилась архитектура  аглетов, которая состоит из двух наборов интерфейсов и двух слоев  реализации:

 

-- набор интерфейсов аглета (aglet API);

-- -- -- слой реализации методов   аглета;

-- передача агента по сети  и интерфейс связи между аглетами;

-- -- -- транспортный слой.

 

Слой реализации аглета - это Java-коды программ, вызываемых аглетом через aglet API. Он содержит основные методы для создания, перемещения аглетов и управления ими, а также определяет поведение аглета (класс Aglet) и его связь с виртуальной машиной Java (класс AgletContext). Кроме того, в нем имеются механизмы взаимодействия аглетов друг с другом.

 

Транспортный слой обеспечивает передачу агента по сети в виде последовательности байтов, которая включает в себя определение классов (тоже в последовательном виде). Этот слой также имеет свой набор интерфейсов, называемый методами передачи агента и интерфейсом связи (Agent Transfer and Communication Interface, ATCI). Именно он позволяет   аглетам   обращаться к транспортному слою для перемещения по сети независимо от используемых протоколов. Реализация интерфейсов ATCI обеспечивает передачу и получение аглета, а также позволяет устанавливать связь между различными аглетами. Для передачи аглетов используется протокол передачи агента (Agent Transfer Protocol, ATP), который является протоколом прикладного уровня. Модель ATP основывается на протоколе HTTP и может быть использована для передачи агента независимо от его содержания и состояния, а также от операционных систем отправителя и получателя. Чтобы дать возможность аглетам связываться друг с другом, в ATP предусмотрен механизм передачи удаленных сообщений.

Мультиагентные платформы и их применение в сетевых задачах