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


Рисунок 1.9 Поток контроля в AGENT0.

1.5.2  Параллельный MetateM

Язык параллельный MetateM разработанный Фишером основан на прямом выполнении логических формул [21]. Систем параллельного MetateM содержит ряд одновременно выполняющихся агентов, каждый из которых способен общаться со своим партнерами через передачу асинхронных широковещательных сообщений. Каждый агент запрограммирован посредством придания ему специфики временной логики поведения на то что агента должен проявлять. Спецификация агента прямо выполняется для выработки его поведения. Выполнения агента заключается в итеративном построении логической модели для спецификации временной логики агента. Можно доказать что процедура использованная для выполнения агента корректна т.е. если возможно удовлетворить спецификации, то агента это сделает[3].

Логическая семантика параллельного MetateM тесно связана со спецификацией самой временной логики. Это означает что среди всего прочего, спецификация и контроль в системе параллельного MetateM являются реалистичным предложением [22].

Программа агента параллельного MetateM  имеет форму

где Pi  формула временной логики относящаяся только к настоящему или прошлому и Fi это формула временной логики относящаяся к настоящему или будущему. PiÞFi формула называется правилом. Базовая идея выполнения такой программы может быть выражена следующим слоганом: на основе прошлого делать будущее.


Таким образом каждое правило постоянно сопоставляется внутренней записанной истории и если совпадение найдено то правило выполняется. Если правило  выполняется то все переменные в части выражения относящейся к будущему получают значение и эта часть становиться обязательством которому агент последовательно пытается удовлетворить. Удовлетворение обязательства обычно означает установку некоторого внутреннего предиката в состояние истина. Вот простой пример определения агента параллельного MetateM:

Агент в этом примере является контролером ресурса который неограниченно обновляем, но который может быть предоставлено только одному агенту в каждый конкретный момент времени. Контролер таким образом обязан принуждать к взаимному исключения над этим ресурсом. Первая строчка программы определяет интерфейс агента: его имя rc (контролер ресурса) и он принимает сообщения ask и отсылает сообщения give. Следующие три строки составляют саму программу. Предикат ask(x) означает что агент x запрашивает ресурс. Предикат give(x) означает что контроллер ресурса предоставляет его агенту x. Предполагается что контролер ресурса может только давать его. Однако несколько агентов могут запросить ресурс одновременно. Следующие три правила определяют поведение агента которое можно суммировать следующим:

Правило 1: если кто-то запросил ресурс, то предоставить его;

Правило 2: не давать , пока кто-то не запросит после последнего запроса;

Правило 3: если даешь двум людям то это должен быть один и тот же человек (т.е. не давать более чем одному человеку одновременно).

Параллельный MetateM является хорошей иллюстрацией как чистый логико-основанный подход может работать при программировании агентов, даже с достаточно ярко выраженной логикой.