Агенты и многоагентные системы. Использование JACK

Автор: Salman Jamali
Автор перевода: Медгаус С.В.

Источник (англ.): Salman Jamali, Agents and Multi-agent Systems. Experiencing JACK [часть 1, часть 2]

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

Введение

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

Многоагентные системы

Многоагентная система представляет собой ПО, имеющее уникальные свойства, которые отличают его от обычного ПО. Во-первых, агенты не просто реагируют на их Окружение, они способны воспроизводить Поведение, соответствующее их Цели, показывая инициативность. Это свойство называется Проактивностью. Во-вторых, они способны гибко и автономно действовать в Окружении, чтобы выполнить спроектированные Задачи. Простыми словами, агент работе на кого-то для чего-то, руководствуясь своими Задачами и Целями.

С технической точки зрения агенты имеют Роли, Поведения, Функциональности и Цели. Неважно что из себя представляет агент, будь то Робот Знаний (Knowbots), Программный Робот (Softbot) или персональный помощник, все они должны иметь набор вышеупомянутых свойств агента. Роль Агента Покупок – действовать как личный помощник пользователя, Поведение – как он взаимодействует с покупателем, его интерфейсом и представлением, его Функциональность включает в себя сравнение цен товаров в Интернете и использование их, чтобы найти лучшие цены товаров и, наконец, Цель – найти оптимальное (с точки зрения цены и удобства) предложение для того, что хочет найти пользователь.

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

Попробуем заглянуть в будущее. Если всё подключено, значит всё должно быть составляющей определённой системы и, если все компоненты будут принимать решения на своём уровне с двумя мерами предосторожности (Безопасность и Предсказуемость), тогда все компоненты будут агентами. Такая система называется многоагентной системой (МАС). МАС состоит из нескольких агентов, способных на взаимодействие, где каждый агент может быть программным агентом, или роботом, или человеком. Следовательно, мы можем спорить, что не существует одноагентной системы, так как каждый агент взаимодействует с другими агентами, или, по крайней мере, с человеком. На самом деле человеческие организации и цивилизации сами по себе могут быть рассмотрены как пример МАС. Люди так же, как и агенты, по сути самоорганизованные, следовательно, можно сказать что мы являемся МАС в большом масштабе. Программная система представляет решение проблемы в какой-либо предметной области. Условно, она имеет подсистемы, где у каждой системы есть свои компоненты. Можно различить взаимодействия, происходящие в системе. Частые взаимодействия происходят между компонентами подсистем, а редкие взаимодействия происходят между подсистемами.

Декомпозиция системы на подсистемы и компоненты
Рисунок 1 – Декомпозиция системы на подсистемы и компоненты

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

Пересечение сфер влияния агентов в среде
Рисунок 2 – Пересечение сфер влияния агентов в среде

Но дело в том, что неважно, что именно мы выберем – объектную или агентную модель, важнее как мы будем развиваться дальше. Если выберем агентную модель, то мы будем вынуждены заменить все системы на МАС, которые будут организованы внутри и синхронизированы с бóльшими МАС. Системы, объединённые для формирования сообщества систем, где каждый участник, например, агент, работает на общие цели системы. Практическое влияние таких агентных систем заключается в том, что в ближайшее будущее будет в Интернете и персональных вычислениях.

Мы уже имеем планировщиков, которые распределяют наши встречи, персональных помощников, которые напоминают нам о днях рождения наших родственников, инструменты оценки релевантности веб-страниц, автоматические заполнители форм, интеллектуальные менеджеры загрузок и т.д. А теперь представьте поисковую систему, которая никогда не скажет нет, потому что она не может сказать нет, так как у неё всегда есть подходящий ответ. Такая поисковая машина могла бы использовать модель сотрудничества всех поисковых машин, объединяя их индексы веб-страниц. Вы можете провести аналогию между моделью сотрудничества и Монополией, в которой агенты-программы-игроки формируют альянсы с каждым, кто хорошо играет и такие союзы создаются и разрушаются во время игры. Да, вполне возможно программно достичь такого эгоистического поведения, так как это одна из естественных оптимальных стратегий для каждого игрока. Решение – создание возможностей полное использование агента, но у нас есть большое количество программных агентов, которые коммерчески взаимодействуют с наиболее необходимыми свойствами. Такие тенденции можно заметить в веб-сервисах, внутренних базах данных, интерфейсах естественных языков, почтовых клиентов, процессоров обработки данных в реальном времени, компьютерных играх и т.д. Более того, они даже присутствуют в таких требовательных системах реального времени, где нет права на ошибку, такие как автопилот в самолёте или управляемые ракеты.

JACK (Agent Development Environment)

(перевод второй части)

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

  • способности – это многоразовые компоненты агентов, такие же как модули в объектно-ориентированном подходе. Они скрывают причинные составляющие (события, планы и т.д.) для того, чтобы обеспечить определённую возможность любому агенту;
  • планы похожи на функции в объектно-ориентированных классах. Они являются инструкциями, которым следует, чтобы достичь целей и обработать возникающие события;
  • события запускают планы, точно так же, как в .Net есть обработчики событий, так в JACK есть планы и они запускаются, как только определённое событие происходит;
  • наборы убеждений отражают убеждения агента, используя универсальную модель отношений. К ним могут применены запросы и когда происходят какие-либо изменения, события могут быть на них завязаны.

Интерфейс JACK
Рисунок 3 – Интерфейс JACK

Заключение

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

    Полезные сайты

  1. www.jamesodell.com: Founder of Agent Orientation
  2. www.agentland.com: Lists some agents as freeware/shareware downloads
  3. www.fipa.org: Foundation for intelligent Physical Agents
  4. www.jade.tilab.com: A tool for development of Agents
  5. www.agent-software.com: A tool for development of Agents
  6. Литература

  7. Artificial Intelligence: A Modern Approach by Russel Norving
  8. Software Engineering: A Practitioner’s Approach by Pressman
  9. Research Paper on AOSE by Nicholas R. Jennings and Michael Wooldridge
  10. Preliminary stage Document by FIPA, founded by James Odell; Topic: Modeling: Agent Class Diagrams