Был весьма удивлен не найдя ни слова про мультиагентные системы (МАС), поэтому решил восполнить этот пробел.
Разберём сначала основные понятия, затем посмотрим немного в сторону практики, и на последок ненмого полезных ссылок для заинтересовавшихся.
Основываясь на собственном опыте, хочу начать с примера.
Предположил у нас есть задача распознавания образа на картинке. Не вдаваясь в реализацию конкретного механизма распознавания можно сказать, что на вход некоторому алгоритму подается наше изображение, который и работает с этим изображением, а за тем, по завершении работы, выдает нам результат. Этот подход является классическим.
А теперь давайте представим себе, что мы разбили первоначальное изображение на несколько частей и для каждой части запустили наш алгоритм. Что нам это дало? Во-первых, с учетом параллельной работы у нас уменьшается время обработки, во-вторых, мы можем упростить структуру самого алгоритма. Уже не плохо. Что ещё? Ещё это требует от нас введение некоторой сущности, которая будет выступать в роли менеджера – т.е. собирать данные от различных процессов распознавания, а так же создавать новые процессы. Данный подход является мультиагентным.
Теперь разберемся с терминологией. Базовое понятие, лежащее в основе мультиагентной теории является понятие агента – в общем смысле это любой объект способный действовать и воспринимать. В соответствии с этим, каждому агенты присущи наборы сенсоров – то, с помощью чего агент воспринимает и актуаторов – то, чем агент воздействует. На что же может воздействовать агент? На других агентов и внешнюю среду – все что, окружает агента.
Любой агент обладает следующими свойствами:
Как было отмечено выше, у каждого агента существует цель, группа агентов имеющих одинаковую цель объединяют в класс агентов.
Думаю, что с основными понятиями мы разобрались (на самом деле существует ещё очень много тонкостей относительно внутренней структуры агентов, типов сред, но все в одну статью вместить невозможно).
Где можно применять мультиагентные системы.
Благодаря тому, что структура мультиагентных систем очень близка структурам реального мира, область применения МАС очень широка:
Теперь отвлечемся от теории и обратимся к практическому аспекту, а именно разработке МАС.
Здесь не все так хорошо, как хотелось бы видеть. Существует несколько международных стандартов относительно систем для разработки МАС, однако часть из них являются устаревшими, часть – не полными.
Вообще, существует два варианта разработки МАС – либо с использованием агентных платформ (АП) (читай framework), либо с использованием среды разработки. Со вторым все намного хуже, чем с первым и ничего заслуживающего внимания я не видел.
Относительно агентных платформ существует несколько достаточно хороших решений. Приведу небольшую таблицу со сравнением существующих АП:
Вот, так сказать, галопом по Парижу, основа мультиагентного подхода.
Если кого-нибудь заинтересовала эта тематика, то вот список литературы (ссылки предоставляются as-is):
UPD.1 НЛО — благодарю за инвайт
Разберём сначала основные понятия, затем посмотрим немного в сторону практики, и на последок ненмого полезных ссылок для заинтересовавшихся.
Основываясь на собственном опыте, хочу начать с примера.
Предположил у нас есть задача распознавания образа на картинке. Не вдаваясь в реализацию конкретного механизма распознавания можно сказать, что на вход некоторому алгоритму подается наше изображение, который и работает с этим изображением, а за тем, по завершении работы, выдает нам результат. Этот подход является классическим.
А теперь давайте представим себе, что мы разбили первоначальное изображение на несколько частей и для каждой части запустили наш алгоритм. Что нам это дало? Во-первых, с учетом параллельной работы у нас уменьшается время обработки, во-вторых, мы можем упростить структуру самого алгоритма. Уже не плохо. Что ещё? Ещё это требует от нас введение некоторой сущности, которая будет выступать в роли менеджера – т.е. собирать данные от различных процессов распознавания, а так же создавать новые процессы. Данный подход является мультиагентным.
Теперь разберемся с терминологией. Базовое понятие, лежащее в основе мультиагентной теории является понятие агента – в общем смысле это любой объект способный действовать и воспринимать. В соответствии с этим, каждому агенты присущи наборы сенсоров – то, с помощью чего агент воспринимает и актуаторов – то, чем агент воздействует. На что же может воздействовать агент? На других агентов и внешнюю среду – все что, окружает агента.
Любой агент обладает следующими свойствами:
- активность – т.е. каждый агент способен к организации и реализации действии ( в соответствии с внутренним алгоритмом функционирования);
- автономность – относительная независимость от окружающей среды;
- целенаправленность – наличие собственных источников мотивации (у каждого агента есть некоторая цель, для достижения которой он функционирует).
Как было отмечено выше, у каждого агента существует цель, группа агентов имеющих одинаковую цель объединяют в класс агентов.
Думаю, что с основными понятиями мы разобрались (на самом деле существует ещё очень много тонкостей относительно внутренней структуры агентов, типов сред, но все в одну статью вместить невозможно).
Где можно применять мультиагентные системы.
Благодаря тому, что структура мультиагентных систем очень близка структурам реального мира, область применения МАС очень широка:
- робототехника;
- логистика;
- исследование социальных и биологических систем;
- поиск информации;
- …
Теперь отвлечемся от теории и обратимся к практическому аспекту, а именно разработке МАС.
Здесь не все так хорошо, как хотелось бы видеть. Существует несколько международных стандартов относительно систем для разработки МАС, однако часть из них являются устаревшими, часть – не полными.
Вообще, существует два варианта разработки МАС – либо с использованием агентных платформ (АП) (читай framework), либо с использованием среды разработки. Со вторым все намного хуже, чем с первым и ничего заслуживающего внимания я не видел.
Относительно агентных платформ существует несколько достаточно хороших решений. Приведу небольшую таблицу со сравнением существующих АП:
|
Jade |
Coguaar |
Aglobe |
Jason |
breve |
область применения |
мобильные сети, web, планирование и логистика, исследования технологии агентов |
мобильные сети, web, промышленное применение, военное применение, огромные распределенные системы |
промышленное применение, моделирование инженерных систем |
Исследовательские проекты |
Виртуальные миры, искусственная жизнь |
технологии |
Java SE, Java, поддерживает стандарты FIPA |
Java SE, Java ME |
Java SE |
Java SE |
|
расширяемость |
возможность расширения на всех уровнях |
возможность расширения на всех уровнях |
нет |
есть |
есть |
наличие плагинов |
большое количество |
большое количество |
нет |
есть |
нет |
интеграция |
Java EE (JMS, Web...), CORBA, |
Java EE (JMS, Web...), CORBA, |
Отсутствует |
Saci, Jade |
— |
наличие дополнительной документации |
+ |
— | + |
+ |
|
лицензия |
LGPL |
open-source (BSD-based) License |
CPL |
LGPL |
open-source License |
методология |
— | — | — | — | — |
наличие средств визуализации |
— | — | + |
— | + |
инструментарий разработчика |
поддерживаются основные этапы разработки |
поддерживаются основные этапы разработки |
минимальный |
поддерживаются основные этапы разработки |
минимальный |
Вот, так сказать, галопом по Парижу, основа мультиагентного подхода.
Если кого-нибудь заинтересовала эта тематика, то вот список литературы (ссылки предоставляются as-is):
- Агенты и мультиагентные системы (http://aivanoff.blogspot.com/2007/12/blog-post_18.html)
- Агентные платформы: кто в лес, кто по дрова ( http://aivanoff.blogspot.com/2007/12/blog-post.html)
- Городецкий, В.И. Многоагентные системы
- Рассел, С. Искусственный интеллект: современный подход
- Тарасов, В. Б. Агенты, многоагентные системы, виртуальные сообщества: стратегическое направление в информатике и искусственном интеллекте
- Мой диплом :)
UPD.1 НЛО — благодарю за инвайт