Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Удовлетворяет предпосылку в правиле

Поиск

(patient (name?pat) (organism?org))

Подстановкой Jones вместо?pat и Organism-1 вместо?org.

Обратите внимание на то, что мы опускаем при анализе соответствия пары, которые отсутствуют в предпосылке правила. Поскольку другая предпосылка в этом же правиле также удовлетворяется при указанной подстановке, то новый вектор

(organism (name organism-1)

(identify enterobacteriaceae) (confidence 0.8))

Добавляется интерпретатором в рабочую память.

Поскольку для заключения правила значение?pat безразлично, поле имени пациента можно в условии вообще игнорировать.

Теперь рассмотрим набор правил, представленный в листинге 5.3, вместе с множеством векторов в рабочей памяти. Этот пример основан на планировщике STRIPS, о котором шла речь в главе 3. Программа состоит из выражений трех типов:

деклараций (или шаблонов), которые определяют формат векторов в рабочей памяти;

определений фактов, которыми задается начальное состояние проблемы;

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

Строки, которые начинаются символами ";;", являются комментариями.

Листинг 5.3. Набор правил для проблемы в системе STRIPS

;; Шаблоны

;; Цель (goal) представляет собой вектор, состоящий из

;; четырех компонентов:

;; действие, которое нужно выполнить,

;; объект, над которым должно быть выполнено действие;

;; исходное положение;

;; положение, в которое нужно перейти.

(deftemplate goal

(field action (type SYMBOL))

(field object (type SYMBOL))

(field from (type SYMBOL))

(field to (type SYMBOL))

)

;; Вектор 'in' указывает, где находится объект, (deftemplate in

(field object (type SYMBOL))

(field location (type SYMBOL)))

ФАКТЫ

;;Функция 'deffacts' вводит в рабочую память

;;описание исходного состояния.

;;Функция вызывается при перезапуске системы.

;;Исходное состояние объектов следующее.

;;Робот находится в комнате А,

;;ящик находится в комнате В,

;;цель - вытолкнуть ящик в комнату А.

(deffacts world

(in (object robot)

(location RoomA))

(in (object box)

(location RoomB))

(goal (action push)

(object box)

(from RoomB) (to RoomA))

)

;; ПРАВИЛА

;; Это правило утверждает:

;; Прекратить процесс, когда цель будет достигнута.

(defrule stop

(goal (object?X) (to?Y))

(in (object?X) (location?Y)) =>

(halt))

;; Если робот отсутствует в том месте, где находится

;; объект, который нужно передвинуть,

;; переместить туда робот.

(defrule move

(goal (object?X) (from?Y))

(in (object?X) (location?Y))

?robot-position <- (in (object robot)

(location?Z&~?Y)) =>

(modify?robot-position (location?Y))

;; Если робот и объект не в том помещении,

;; которое указано в цепи,

;; переместить туда робот и объект.

(defrule push

(goal (object?X) (from?Y) (to?Z))

(in (object?X) (location?Y))

?object-position <- (in (object?X) (location?Y))

?robot-position <- (in (object robot) (location?Y))

=>

(modify?robot-position (location?Z))

(modify?object-position (location?Z))

Это законченная программа на языке CLIPS, которую можно запустить на выполнение в среде разработки CLIPS 6.O. В этой программе не нужно было специально предусматривать какие-либо варианты разрешения конфликтных ситуаций, поскольку стратегия, предложенная по умолчанию, всегда обеспечит решение задачи (см. раздел 5.3). Введите в систему текст этой программы и запустите на выполнение:

Введите (reset),

Затем введите (run).

С помощью команды watch посмотрите, в каком порядке будут использоваться специфицированные в программе правила. Во врезке 5.2 представлены трассировка выполнения этой программы и краткие пояснения.

Трассировка программы управления роботом

Представленная ниже карта трассировки будет сформирована при запуске про-граммы в режиме трассировки.



Поделиться:


Последнее изменение этой страницы: 2021-07-18; просмотров: 58; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.152.168 (0.008 с.)