Последние штрихи

Внимательно взглянув на список правил, мы увидим, что некоторые прави­ла (2, 3 и 13) остались до сих пор не реализованными.

В качестве реализации правила 13 мы будем использовать правило no-repairs, приведенное в примере 9.11.

Пример 9.11. Правило no-repairs

(defrule no-repairs ""

(declare (salience -10))

(not (repair?))

= >

(assert (repair "Take your car to a mechanic."))

)

Обратите внимание на использование приоритета при определении этого правила. Все правила, приведенные в предыдущем разделе, определялись с приоритетом, по умолчанию равным нулю. Использование для правила no-repairs приоритета, равного —10, гарантирует, что правило не будет вы­полнено, пока в плане решения задачи находится, по крайней мере, одно из диагностических правил. Если все активированные диагностические прави­ла отработали и ни одно из них не смогло подобрать подходящую рекомен­дацию по устранению неисправности, то CLIPS запустит правило no-repairs, которое просто порекомендует пользователю обратиться к более опытному механику.

Реализация правил 2 и 3 приведена ниже.

Пример 9.12. Правила normal-engine-state-conclusions и unsatisfactory-engine-state-conclusions

(defrule normal-engine-state-conclusions ""

(declare (salience 10))

(working-state engine normal)

=>

(assert (repair "No repair needed."))

(assert (spark-state engine normal))

(assert (charge-state battery charged))

(assert (rotation-state engine rotates))

)

(defrule unsatisfactory-engine-state-conclusions ""

(declare (salience 10))

(working-state engine unsatisfactory)

=>

(assert (charge-state battery charged))

(assert (rotation-state engine rotates))

)

В этих правилах, наоборот, используется более высокий приоритет, что га­рантирует их выполнение до выполнения любого диагностического правила (естественно, только в случае удовлетворения условий, заданных в левой части правил). Это избавит нашу систему от лишних проверок, а пользова­теля от лишних вопросов.

Наша экспертная система фактически готова к работе. Единственное, чего ей не хватает, — это метода вывода итоговой информации и правила, сооб­щающего пользователю о начале работы. Ниже приведена реализация этих правил.


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



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