Пример 6.24. Применение условного элемента test

(defrule example

(data?x)

(data?y)

(test (>= (abs (-?y?x)) 3))

=>)

Условный элемент test может привести к автоматическому добавлению об­разцов initial-fact или initial-object в левую часть правила. Поэтому не забывайте использовать команду reset (которая создает initial-fact и initial-object), чтобы быть уверенным в корректной работе условного элемента test.

6.5.3. Условный элемент or

Условный элемент or позволяет активировать правило любым из несколь­ких заданных условных элементов. Если какой-нибудь из условных элемен­тов, объединенных с помощью or, удовлетворен, то и все выражение or считается удовлетворенным. В этом случае, если все остальные условные элементы, входящие в левую часть правила (но не входящие в or), также удовлетворены, правило будет активировано. Условный элемент or может объединять любое количество элементов.

Замечание

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

Определение 6.18. Синтаксис условного элемента or

<условный-элемент-ог >::= (or <условный-элемент>+)

Пример 6.25. Применение условного элемента or

(defrule system-fault

(error-status unknown) (or (temp high)

(valve broken)

(pump off))

=>

(printout t "The system has a fault." crlf))

Данное правило сообщит о поломке системы, если в списке фактов будет присутствовать факт error-status unknown и один из фактов temp high, valve broken или pump off. В случае если будут присутствовать два из этих трех фактов, например temp high и pump off, то сообщение будет выведено два раза. Заметьте, что приведенный пример — точный эквивалент следующих трех отдельных правил:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: