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

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

Разработайте правило make-and-model, которое будет запрашивать у пользователя необходимую информацию о модели оружия и формировать вектор gun в рабочей памяти. Используйте в качестве модели следующие правила:

(defrule class-and-action
?G < – (gun (action NIL)) ›
(printout t crlf
"Please enter the class of gun" t crlf "
for example shotgun, rifle, pistol " t crlf "CLASS:" t crlf
;; "Введите класс оружия, "
;; "например, охотничье ружье, карабин,
;; "пистолет и т.д. "
;; "КЛАСС:"
(bind?class (read)) (printout t crlf
"Please enter the action type of the gun" t crlf
"for example bolt, slide, lever, semi,
revolver… " t crlf "ACTION:" t crlf
;; "Введите тип оружия, "
;; "например, с цилиндрическим затвором, со
;; скользящим затвором, с рычажным затвором,
;; полуавтоматический, револьвер…
;; "ТИП:"
(bind?action (read))
(modify?G (class?class) (action?action)))
;; Разработайте правило capacity, которое будет
;; запрашивать емкость магазина модели оружия.
;; В качестве прототипа используйте приведенное
;; ниже правило caliber, которое запрашивает у
;; пользователя значение калибра модели,
(defrule caliber
?G < – (gun (caliber 0.0)) ›
(printout t crlf
"Please enter the caliber of gun" t crlf "CALIBER:" t crlf
;; "Введите калибр оружия, "
;; "КАЛИБР:"
(modufy?G (caliber (read))))
;; Любая полуавтоматическая
;; винтовка (semi-automatic rifle)
;; или охотничье ружье (shotgun) с
;; перечисленными дополнительными признаками.
(defrule Part2
(gun (make?M) (model?N)
(class?CSrifle|shotgun) (action semi)
(features?F&flash-suppressor|barrel-shroud|night-scope)) ›
(assert (assault-weapon (make?M) (model?N))))
;;Разработайте правило pistol-grip-shotgun,
;;которое будет относить любое охотничье ружье
;;с пистолетной рукояткой к категории
;;"оружие нападения".
;;Разработайте правила, которые будут
;;запрашивать у пользователя сведения о
;;дополнительных конструктивных характеристиках
;;модели ранее определенного класса. Например,
;;пистолет, как правило, не имеет защитного
;;кожуха на стволе, поэтому в наборе правил не
;;имеет смысла запрашивать эту характеристику,
;;если ранее определен класс модели pistol.
;;Особые случаи касаются тех моделей, которые
;;явно перечислены в законодательном акте
;;Модель Cobray Mil относится к категории
"оружие нападения", defrule cobray
(declare (salience 20))
(gun (make cobray) (model Mil)
(class pistol)) ›
(assert (assault-weapon (make cobray)
(model Mil))))
;; Модель этого типа не относится
;; к категории "оружие нападения", (defrule rimfire
(declare (salience 10))
?except < – (gun (make?M) (model?N)
(class rifle) (caliber.22))
?mistake < – (assault-weapon) (model?N))
 ›:
(printout t crlf "The "?M " "?N
" is definitely not an assault weapon. " t crlf
;; "Модель "?М " "?N
;; "по определению в законе не относится к
;; категории "оружие нападения"."
(retract?mistake)
(retract?except))
;;Разработайте аналогичное правило
;;slide-action, которое будет исключать
;;любое охотничье ружье со скользящим затвором
;;из категории "оружие нападения".
;;Правила вывода результатов.
;;Разработайте правило probably-is, которое
;;будет извещать пользователя о том, что
;;представленная им модель может быть отнесена
;;к категории "оружие нападения", согласно действующему
;;законодательному акту. В качестве прототипа
;;можете воспользоваться приведенным ниже
;;правилом, которое извещает пользователя об
;;обратном результате экспертизы.
(defrule probably-is-not (declare (salience – 20))
(gun (make?M) (model?N)) (not
(assault-weapon (make?M) (model?N))) ›
(printout t crlf "The "?M " "?N
" is probably not an assault weapon. " t crlf
;; "Модель "?M " "?N
;; ", вероятно, не относится к
;; категории "оружие нападения"."
(halt))
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.