Иллюстрированный самоучитель по введению в экспертные системы


Объектно-ориентированные средствв CLIPS - часть 5


В противном случае он вернет FALSE (после того, как выведет на экран click).

(def message-handler pistol fire () (if (and

(eq (dynamic-get chamber) 1) (eq (dynamic-get safety) off)

)

then (printout t crlf "BANG!" t crlf)

TRUE

else (printout t crlf "click" t crlf) FALSE

)

Пусть вас не смущает, что в обработчике сообщения анализируется условие, которое уже было проанализировано правилом, отославшим сообщение (в данном случае речь идет об условии safety off). Дело в том, что одно и то же сообщение может отсылаться разными правилами и нет никакой гарантии, что в каждом из них будет проверяться это условие.

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

(defrule unready

(object (name [PPK]) (safety off))

(range-test (fired yes)) =>

(send [PPK] safety on) )

Следующая операция — вынуть обойму. Обратите внимание, что в нем мы вновь обращается к обработчику сообщения drop.

(defrule drop

(object (name [PPK]) (safety on))

(range-test (fired yes)) =>

(send [PPK] drop) )

Последнее правило выбрасывает патрон из патронника, вызывая обработчик сообщения clear.

(defrule unload

(object (name [PPK]) (safety on) (magazine out))

(range-test (fired yes)) =>

(send [PPK] clear) )

В этом примере было продемонстрировано, как в рамках единой CLIPS программы "уживаются" правила и объекты. Правила управляют ходом вычислений, но некоторые операции объекты выполняют и самостоятельно, получив "указание" (сообщение) от правил. Объекты не являются резидентами рабочей памяти, но члены левой части правил (условий) могут быть сопоставлены с содержимым их слотов. Состояние объектов может измениться и вследствие побочных эффектов активизации правил, но я считаю, что лучше предоставить объектам возможность самостоятельно выполнять манипуляции с хранящимися в них данными в ответ на поступающие от правил сообщения.Объекты не могут самостоятельно активизировать правила, но их обработчики сообщения могут возвращать определенную информацию о результатах, которая используется для управления логикой выполнения действий в правой части правил.




Начало  Назад  Вперед



Книжный магазин