Язык агентных коммуникаций
Язык агентных коммуникаций (англ. Agent Communication Language, ACL) — это специализированный язык, предназначенный для обмена информацией, координации и сотрудничества между агентами в мультиагентных системах. Использование таких языков позволяет осуществлять взаимную коммуникацию, делегирование задач, а также коллективное принятие решений агентами[1].
Спецификация коммуникации
Существует несколько основных типов коммуникации в зависимости от назначения сообщений. Коммуникацию можно разделить на прямую, при которой сообщения отправляются непосредственно другим агентам, и непрямую, когда сообщения размещаются в специально отведённой структуре (например, доске сообщений).
В случае прямой коммуникации выделяют три типа отправки сообщений:
- Адресная передача сообщений — сообщение направляется конкретным агентам;
- Вещательная (широковещательная) передача сообщений — сообщение направляется всем агентам;
- Селективная передача сообщений — сообщение передаётся определённой группе агентов.
Языки коммуникации в мультиагентных системах основываются на теории речевых актов, происходящей от лингвистического анализа общения на естественных языках. В рамках этой теории предполагается, что участник коммуникации не только произносит некоторое утверждение, но и совершает определённые действия. Речевые акты могут быть следующими:[1]
- информативные,
- обязывающие,
- приказные,
- экспрессивные,
- декларативные.
В сфере языков ACL роль играют как теория речевых актов, так и теория построения компьютерных языков, а также компьютерная лингвистика. Проблему агентной коммуникации с этой точки зрения можно разделить на три уровня: синтаксический, семантический и прагматический[2].
- Синтаксический уровень — единая синтаксическая система для всех агентов;
- Семантический уровень — общий онтологический каркас знаний, используемых агентами;
- Прагматический уровень — механизмы поиска агента и установления коммуникации между ними.
В обмене сообщениями и данными участвуют различные уровни:[1]
- Физический уровень — передача сообщения как последовательности битов, задействуются физический, канальный и сетевой уровни модели OSI.
- Транспортный уровень — определение протоколов для кодирования сообщений (транспортный уровень OSI). Примеры протоколов: HTTP, TCP/IP, WAP и другие.
- Уровень коммуникационной архитектуры — преобразование сообщений в последовательность байтов; пример — платформы CORBA, Java RMI, UNIX RPC, XML RPC и др.
- Уровень агентных языков (ACL) — идентификация отправителя и получателя, а также формализация языка сообщения (например, KQML, FIPA-ACL).
- Уровень содержания сообщения — формализация конкретного содержания сообщения. Примеры реализаций: XML, KIF (Knowledge Interchange Format), Lisp, Пролог, SQL и другие.
Архитектура с точки зрения коммуникации
Архитектура мультиагентной системы может быть следующей:[1]
- Централизованная — имеется один управляющий агент, которому подчиняются остальные;
- Иерархическая — применяется многоуровневая система управления;
- Федеративная — используется косвенная коммуникация через посредника;
- Децентрализованная — распределены и роли, и функции управления.
Эти архитектуры сравнивают по признакам устойчивости (робастности), масштабируемости, сложности реализации и необходимости коммуникаций.
Языки
К наиболее известным языкам в сфере мультиагентного моделирования относят KQML и FIPA-ACL.
KQML — язык и протокол для обмена знаниями и информацией, разработанный в начале 1990-х в рамках проекта ARPA Knowledge Sharing Effort[3]. Язык ориентирован на поддержку прагматических и семантических аспектов коммуникации между агентами. Он используется для поиска подходящих партнеров, установления соединения и обмена сведениями между агентами. На синтаксическом уровне KQML не привязан к определённому языку описания содержимого сообщений. Язык базируется на двух основных принципах[1]
Первый принцип — определение ограниченного числа так называемых перформативов (коммуникационных глаголов) для выполнения заданных речевых актов. Каждое сообщение состоит из перформатива и его параметров. Содержимое сообщения может быть записано на любом языке и является одним из параметров сообщения.[4]. Перформативы подразделяются на несколько групп, например: информационные (tell, deny, untell и др.), запросы (ask, ask-if, ask-about и др.), ответы (error, sorry и др.), работа с виртуальной базой знаний (insert, delete и др.)[5].
| Ключевое слово | Описание |
|---|---|
| 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 разработан в конце 1990-х годов организацией FIPA (англ. Foundation for Physical Intelligent Agents), занимающейся стандартизацией в области мультиагентных систем. Он основывается на принципах языка KQML, но подробно определяет семантику и коммуникационные протоколы. В основе языка лежат типизированные виды сообщений, реализующие речевые акты, получившие название "коммуникационные акты". Они концептуально схожи с перформативами, но реализованы иначе.[1]
| Ключевое слово | Описание |
|---|---|
| performative | тип сообщения |
| sender | отправитель |
| receiver | получатель |
| reply-to | идентификатор агента для получения ответа |
| content | содержимое сообщения |
| language | язык сообщения |
| encoding | указание кодировки содержимого |
| ontology | онтология |
| protocol | интеракционный протокол |
| coversation-id | идентификатор диалога |
| reply-with | идентификатор ответа |
| in-reply-to | идентификатор ответного сообщения |
| reply-by | ограничение по времени ожидания ответа |
Набор коммуникационных актов строго ограничен, новые акты могут быть составлены лишь из допустимых комбинаций базовых[4]. Эти акты подразделяются на пять групп:
- передача информации;
- запрос информации;
- ведение переговоров;
- выполнение действия;
- сообщения об ошибках.
| Коммуникационный акт | Значение |
|---|---|
| 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.


