Интеллектуальные агенты. Конкретные архитектуры интеллектуальных агентов. Языки программирования агентов., страница 25

1.5  Языки программирования агентов.

Так как технологии агентов становятся все более устоявшимися, можно ожидать появиться различное программные приспособления для дизайна и конструирования агенто-основанных систем; необходимость в средствах программной поддержки в этой области стала очевидной с середины 1980 годов. В этом разделе мы обсудим два из наиболее хорошо известных языков программирования агентов, обращая внимание в частности на систему Йова Шохама AGENT0.

1.5.1  Агенто-ориентированное программирование.

Йов Шохам предложил «новую программную парадигму основанную на социальном взгляде на вычисления» которая также называется агенто-ориентированным программированием. Ключевой идеей заключенной в АОП является прямое программирование агентов в терминах менталистических представлений (таких как убеждение, желание, и намерения) которые теоретики разработали для представления свойств агентов. Мотивацией для такого предложения является то что люди используют такие концепции как некий абстрактный механизм для представления свойств сложных систем. Таким же образом мы используем эти менталистические представления для описания и объяснения поведения людей, так что это может быть полезно использовать их при программировании агентов.

Первой реализацией агентно-ориентированного программирования был язык программирования AGENT0. В этом языке агент описан в терминах набора способностей (вещи которые агент может делать), набора начальных убеждений (играющих роль убеждений в архитектуре BDI) и набора правил принятия обязательств. Основным компонентом который определяет как действует агента является набор правил принятия обязательств. Каждое такое правило содержит условие сообщения, интеллектуальное условие и действие. Для того чтобы это правило выполнилось необходимо определить соответствует ли условие сообщения тому что агент получил и соответствует ли интеллектуальное условие убеждениям агента. Если правило выполняется то агент совершает действие. Действия может быть частным (private) т.е. соответствующим внутренне выполняемым процедурам, или коммуникационными т.е. связанные с отправление сообщений. Сообщения ограничены тремя типами: запросы или отказы для выполнения или воздерживания от действия и информационные сообщения которыми передается информация – Шохам указывает что он взял эти типы сообщений из теории речевых действий.Результатами сообщения запросов и отказов обычно бывают изменения в обязательствах агента; информационные сообщения вызывают изменения в убеждениях агента.

Вот пример правила обязательства AGENT0:

COMMIT(

   (agent, REQUEST, DO(time, action)

   ), ;;; msg condition

   (B,

                   [now, Friend agent] AND

                   CAN(self, action) AND

                   NOT [time, CMT(self, anyaction)]

   ), ;;; mental condition

   self,

   DO(time, action))

Это правило может быть перефразировано следующим образом:

Если я получил форму сообщения агента которая запрашивает меня выполнить действие в какое-то время и я убежден что

агент на данный момент является дружественным

я могу выполнить это действие

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

то принять выполнение действие в запрошенное время.

Эта операция агента может быть описана следующим циклом (см. рисунок 1.9):

1.  Прочитать все текущие сообщения, обновляя убеждения и следовательно обязательства , где это необходимо;

2.  Выполнить все обязательства на данный цикл в которых условие возможности связное с действие удовлетворяется;

3.  Перейти в (1).

Теперь должно быть понятно как более сложные поведения агента могут быть разработаны и построены в AGENT0. Однако  важно заметить что этот язык по существу является прототипом и не предназначен для построения чего-то подобно крупномасштабных производительных систем. Но по крайней мере от дает почувствовать как такие системы можно построить.