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

Рекомендуемая литература. Упражнения.

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

Используйте в качестве прототипа приведенную ниже программу.

;; #################################
;; # Поиск неисправностей в револьвере
;; # Smith & Wesson
;; #################################
;; Класс REVOLVER, определение компонентов (defclass revolver
(is-a INITIAL_OBJECT)
(slot barrel Jcreate-accessor read-write))
(slot barrel-pin
(create-accessor read-write))
(slot cyl-stop
(create-accessor read-write))
(slot cyl (create-accessor read-write))
(slot handspring
(create-accessor read-write))
)
;; Экземпляр класса REVOLVER.
;; Предназначен для тестирования программы,
(definstance guns (Ml9 of revolver
(barrel 4499)
(barrel-pin 4499)
(cyl-stop 4499)
(cyl 4499)
(handspring 5022)))
;; МЕТОД. Получение номера детали револьвера
(def mas sage-handler revolver part-no (?part)
(dynamic-get?part))
;; ПОЛЕЗНЫЕ ФУНКЦИИ
;; Приглашение пользователю ввести данные
(deffunction prompt ()
(printout t crlf "USER> "))
;; Распечатка списка деталей.
;; Замечание: приведенный список правил касается
;; только неисправностей со стволом (barrel),
(deffunction parts-list () (printout t crlf
"barrel cylinder ejector trigger hammer
firing-pin cylinder-stop
cylinder-hand yoke
frame sideplate rear-sight front-sight" crlf))
;; Выбор из списка.
(deffunction choose-list ()
(printout t crlf "Please choose from the following list: "
crlf))
;; Правила, которые относятся только к
;; револьверам модели 19.
(deffunction kind-list ()
(printout t crlf "M10 M12 M13 M14 M15 M16 M17 M18 M19 "
crlf))
;; ШАБЛОНЫ РЕШЕНИЯ ПРОБЛЕМЫ
;; Формулировка проблемы включает узлы (part),
;; симптомы (symptom), возможно, детали (subpart),
;; входящие в состав узлов. С проблемой может
;; быть связано определенное испытание или
;; проверка (check), которые нужно провести,
(deftemplate problem
(field part (type SYMBOL) (default nil))
(field symptom (type SYMBOL) (default nil))
(field subpart (type SYMBOL) (default nil))
(field check(type SYMBOL) (default nil)))
определение процедуры ремонта включает узел (part), операцию с этим узлом (action),
 возможно, детали (subpart), входящие в состав узлов, проверку (check),
 которую нужно провести, и поясняющее примечание, предназначенное для пользователя,
 (deftemplate problem
(field part (type SYMBOL)
(default nil)} (field action (type SYMBOL)
(default nil)) (field subpart (type SYMBOL)
(default nil)) (field check(type SYMBOL)
(default nil)) (field remarkftype STRING)
(default " "))
)
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.