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

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

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

  • (1) Общее описание полуавтоматического огнестрельного оружия с большой емкостью магазина.
  • (2) Перечень дополнительных характеристик.
  • (3) "Любое охотничье ружье с пистолетной рукояткой".
  • (4) Перечень фирм-изготовителей и выпускаемых ими моделей, которые безоговорочно относятся к этой категории.
  • (5) Перечень характеристик, которые позволяют исключить рассматриваемую модель из категории "оружие нападения" даже в том случае, если она удовлетворяет требованиям, перечисленным в предыдущих разделах.

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

Для того чтобы реализовать в программе формирование такого пояснения, придется добавить два новых поля в вектор assault-weapon:

(deftemplate assault-weapon
(field make (type SYMBOL))
(field model (type SYMBOL))
(field just (type SYMBOL) (default NIL))
(field part (type INTEGER) (default 0)))

Правила, которые формируют этот вектор в новом варианте, должны заполнять эти атрибуты. Например:

(defrule Part)
(gun (make?M) (model?N)
(class?C&rifle|shotgun) (action semi)
(capacity?X&:(>?X 5))) ›
(assert (assault-weapon (make?M) (model?N)
(just capacity) (part 1))))

В этом правиле устанавливается, что причиной, по которой данная модель отнесена к категории "оружие нападения", является емкость ее магазина (capacity), причем сделано это на основании раздела 1 (part 1) законодательного акта.

Для завершения разработки программы нужно выполнить следующее.

Модифицировать правило Part2, воспользовавшись в качестве прототипа приведенным выше текстом правила Part1.

Модифицировать правило cobray таким образом, чтобы отразить в нем причину, по которой эта модель отнесена к категории "оружие нападения" (причиной является значение атрибута model).

Аналогично модифицировать и тот вариант правила pistol-grip-shotgun, который вы разработаете, выполняя первую часть этого упражнения.

  • Отредактировать правила rimfire, slide-action и probably-is, включив в них манипуляции с атрибутами just и part.

При выводе поясняющих сообщений оператором printout воспользуйтесь шаблоном, в который требуется подставить значения переменных из атрибутов make, model, part и features. Шаблон должен выглядеть примерно так:

"The MAKE MODEL is (not) an assault weapon
under Part NUMBER of the definition because of the FEATURE"
"Изделие ИЗГОТОВИТЕЛЬ, МОДЕЛЬ (не) является оружием нападения на основании раздела
 НОМЕР определения вследствие ХАРАКТЕРИСТИК."

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

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.