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

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

Open(valve221)

Temperature(reactor4726,321)

Pressure(tank776,28)

Не сложно увидеть, что такие формулы могут быть использованы для описания некоторого окружения. База данных  - это информация об окружающей среде, которую имеет агент. База данных для агента играет похожую роль, как убеждения для человека. Так человек может быть убежден, что  вентиль 221 открыт, так и агент может иметь предикат Open(valve 221) в своей базе данных. Конечно, также как  и люди, агенты могут ошибаться. Так я могу верить, что вентиль 221 открыт, когда на самом деле он закрыт; факт того что в базе данных агента записано Open(valve221) не значит что вентиль 221 (или любой другой) открыт. Датчики агента могут быть неисправны, его заключения могут быть неверны, информация может быть устаревшей или интерпретация формулы Open(valve221) может сильно отличаться от задуманной разработчиком.

Пусть L набор изречений логики первого порядка и пусть D=Ã(L) будет набором баз данных L т.е. набор наборов L – формул. Тогда внутреннее состояние агента представляет собой элемент D. Будем писать D1, D2,…  как члены D. Внутреннее  состояние агента тогда является просто членом набора D. Процесс принятия решения агентом тогда моделируется через набор правил дедукции r. Это простые правила вывода логики. Будем писать  если формула f может быть доказана через базу данных D использую только правила дедукции r. Функция восприятия агента see остается неизменной:

see:SàP

Похожим образом функция next будет

next:DxPàD

Она, таким образом, отображает базу данных и восприятие на новую базу данных. Однако, функция выбора действия агента имеет следующее написание

action:DàA


и определена в терминах дедуктивных правил. Определение этой функции в псевдокоде будет следующим.

Смысл в том, что программист агента закодирует дедуктивные правила и базу данных таким образом, что если формула Do(a) может быть выведена, где a это терм, который определяет действие, тогда a это лучшее действие для выполнения. Таким образом, в первой части функции (строки 3-7) агент перебирает все возможные действия a по-очереди и пробует доказать форму формулы Do(a) из своей базы данных (переданной как параметр данной функции)  используя дедуктивные привила r. Если агенту удается доказать Do(a), то a возвращается как действие для выполнения.

Что же происходит если агент не сможет доказать Do(a) не удается для всех действий aÌA? В этом случае он пытается найти действие, которое не противоречит правилам и базе данных, т.е. то, которое не запрещено явно. Таким образом в строках 8-12 агент пытается найти действие aÌA такое, что ØDo(a) не может быть выведено из его базы данных посредством дедуктивных правил. Если он сможет найти такое действие, тогда оно возвращается как действие для выполнения. Если все же агент не смог найти действие, которое по крайней мере не противоречит, тогда функция возвращает специальное действие null (или noop), означающее что действие не может быть выбрано.

Таким образом поведение агента детерминировано посредством дедуктивных правил (его «программы») и его текущей базы данных (представляющей собой информацию, которую агент имеет об окружающей среде).