Язык агентных коммуникаций

Язык агентных коммуникаций (англ. Agent Communication Language, ACL) — это специализированный язык, предназначенный для обмена информацией, координации и сотрудничества между агентами в мультиагентных системах. Использование таких языков позволяет осуществлять взаимную коммуникацию, делегирование задач, а также коллективное принятие решений агентами[1].

Спецификация коммуникации

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

В случае прямой коммуникации выделяют три типа отправки сообщений:

  1. Адресная передача сообщений — сообщение направляется конкретным агентам;
  2. Вещательная (широковещательная) передача сообщений — сообщение направляется всем агентам;
  3. Селективная передача сообщений — сообщение передаётся определённой группе агентов.

Языки коммуникации в мультиагентных системах основываются на теории речевых актов, происходящей от лингвистического анализа общения на естественных языках. В рамках этой теории предполагается, что участник коммуникации не только произносит некоторое утверждение, но и совершает определённые действия. Речевые акты могут быть следующими:[1]

  • информативные,
  • обязывающие,
  • приказные,
  • экспрессивные,
  • декларативные.

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

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

В обмене сообщениями и данными участвуют различные уровни:[1]

  1. Физический уровень — передача сообщения как последовательности битов, задействуются физический, канальный и сетевой уровни модели OSI.
  2. Транспортный уровень — определение протоколов для кодирования сообщений (транспортный уровень OSI). Примеры протоколов: HTTP, TCP/IP, WAP и другие.
  3. Уровень коммуникационной архитектуры — преобразование сообщений в последовательность байтов; пример — платформы CORBA, Java RMI, UNIX RPC, XML RPC и др.
  4. Уровень агентных языков (ACL) — идентификация отправителя и получателя, а также формализация языка сообщения (например, KQML, FIPA-ACL).
  5. Уровень содержания сообщения — формализация конкретного содержания сообщения. Примеры реализаций: XML, KIF (Knowledge Interchange Format), Lisp, Пролог, SQL и другие.

Архитектура с точки зрения коммуникации

Архитектура мультиагентной системы может быть следующей:[1]

  • Централизованная — имеется один управляющий агент, которому подчиняются остальные;
  • Иерархическая — применяется многоуровневая система управления;
  • Федеративная — используется косвенная коммуникация через посредника;
  • Децентрализованная — распределены и роли, и функции управления.

Эти архитектуры сравнивают по признакам устойчивости (робастности), масштабируемости, сложности реализации и необходимости коммуникаций.

Языки

К наиболее известным языкам в сфере мультиагентного моделирования относят KQML и FIPA-ACL.

KQML

KQML — язык и протокол для обмена знаниями и информацией, разработанный в начале 1990-х в рамках проекта ARPA Knowledge Sharing Effort[3]. Язык ориентирован на поддержку прагматических и семантических аспектов коммуникации между агентами. Он используется для поиска подходящих партнеров, установления соединения и обмена сведениями между агентами. На синтаксическом уровне KQML не привязан к определённому языку описания содержимого сообщений. Язык базируется на двух основных принципах[1]

Первый принцип — определение ограниченного числа так называемых перформативов (коммуникационных глаголов) для выполнения заданных речевых актов. Каждое сообщение состоит из перформатива и его параметров. Содержимое сообщения может быть записано на любом языке и является одним из параметров сообщения.[4]. Перформативы подразделяются на несколько групп, например: информационные (tell, deny, untell и др.), запросы (ask, ask-if, ask-about и др.), ответы (error, sorry и др.), работа с виртуальной базой знаний (insert, delete и др.)[5].

Параметры сообщения KQML[3]
Ключевое слово Описание
content содержимое сообщения
force тип сообщения
in-reply-to код сообщения, на которое даётся ответ
language язык, на котором написано содержимое сообщения
ontology онтология содержимого сообщения
reciever получатель
reply-with код ответа (если требуется ожидаемый ответ)
sender отправитель
    Пример сообщения
    (inform
    :sender (agent-identifier :name i)
    :reciever (agent-identifier :name j)
    :content
    "weather(today,raining)"
    :language Prolog
    )

Второй принцип — косвенная коммуникация с использованием так называемых фасилитаторов (facilitators). Вводится специальный класс агентов. Выделяют три типа фасилитаторов: matchmaker, broker и медиатор[1]

  • Matchmaker — агент, который только ищет подходящих агентов для требуемой услуги; агент-заказчик напрямую связывается с исполнителем услуги;
  • Брокер — агент не только ищет исполнителей, но и заказывает услугу; результат тут же передается заказчику;
  • Медиатор — агент, также заказывает услугу, после чего исполнитель связывается непосредственно с заказчиком для дальнейшего взаимодействия.

FIPA-ACL

Язык FIPA-ACL разработан в конце 1990-х годов организацией FIPA (англ. Foundation for Physical Intelligent Agents), занимающейся стандартизацией в области мультиагентных систем. Он основывается на принципах языка KQML, но подробно определяет семантику и коммуникационные протоколы. В основе языка лежат типизированные виды сообщений, реализующие речевые акты, получившие название "коммуникационные акты". Они концептуально схожи с перформативами, но реализованы иначе.[1]

Параметры сообщения FIPA-ACL[6].
Ключевое слово Описание
performative тип сообщения
sender отправитель
receiver получатель
reply-to идентификатор агента для получения ответа
content содержимое сообщения
language язык сообщения
encoding указание кодировки содержимого
ontology онтология
protocol интеракционный протокол
coversation-id идентификатор диалога
reply-with идентификатор ответа
in-reply-to идентификатор ответного сообщения
reply-by ограничение по времени ожидания ответа

Набор коммуникационных актов строго ограничен, новые акты могут быть составлены лишь из допустимых комбинаций базовых[4]. Эти акты подразделяются на пять групп:

  • передача информации;
  • запрос информации;
  • ведение переговоров;
  • выполнение действия;
  • сообщения об ошибках.
Коммуникационные акты[5]
Коммуникационный акт Значение
confirm Агент подтверждает истинность информации, в которой другой агент сомневался
disconfirm Агент не подтверждает истинность информации
inform Агент сообщает другому об истинности некоей информации
inform if Агент сообщает, верно ли некоторое утверждение
inform ref Агент сообщает состояние объекта, о котором был задан вопрос
cancel Агент информирует, что более не настаивает на выполнении согласованного действия
query if Агент спрашивает, верна ли содержащаяся в сообщении информация
query ref Агент запрашивает информацию о состоянии указанного объекта
subscribe Агент просит информировать его о состоянии объекта и обо всех последующих изменениях
accept proposal Принятие предложения выполнить действие
agree Согласие выполнить действие в будущем
call for proposal Запрос на предложения по выполнению действия
failure Агент сообщает, что выполнение согласованного действия не удалось
not understood Агент сообщает, что не понял предыдущее сообщение (единственный обязательный тип сообщения агентной коммуникации)
propagate Запрос на передачу сообщения через получателя другим агентам
propose Агент предлагает выполнить некое действие на определённых условиях
proxy Агент просит определить группы агентов на основе условий и переслать им сообщение
refuse Агент отказывается выполнить действие, объясняя причину отказа
reject proposal Агент отклоняет предложение в ходе переговоров
request Агент просит другого выполнить действие
request when Запрос выполнить действие при наступлении определённого условия
request whenever Запрос выполнять действие каждый раз при выполнении условия

Другие отличия от KQML:[4]

  • семантика строго формализуется с помощью модальной логики (FIPA Semantic Language, FIPA-SL). Преимущество — формальный и точный язык описания коммуникаций, недостаток — агенты не всегда могут делать выводы в рамках модальной логики;
  • отсутствуют перформативы для обслуживания сетевого взаимодействия и администрирования передачи сообщений.

Примечания

Литература

  • Владимир Марик, Ольга Штепанкова, Йиржи Лажанский и др. Искусственный интеллект. Прага: Academia. ISBN 80-200-0502-1.