Оргправило системы MYCIN, записанное на языке CLIPS



Листинг 5.1. Оргправило системы MYCIN, записанное на языке CLIPS

(defrule diagnosis

(patient (name Jones)

(organism organism-1))

(organism (name organism-1)

(morphology rod)

(aerobicity aerobic)) =>
(assert

(organism

(name organism-1)

(identify enterobacteriaceae)

(confidence 0.8)))


На языке CLIPS представление правила имеет следующий формат:

(defrule <наименование правила>
<предпосылка1>

<предпосылка m >
=>

<действие 1>

<действие n>

Перечень предпосылок в таком правиле представляет собой образец вектора, которому должно соответствовать состояние рабочей памяти. Действия, такие как (assert ...) в приведенном выше примере, задают изменения, которые должны быть внесены в состояние рабочей памяти. Например, специфицированное в приведенном выше правиле действие добавит в рабочую память новый вектор

(organism (name organism-1)

(identify enterobacteriaceae)

(confidence 0.8)).

Таким образом, правило diagnosis означает следующее: если у определенного пациента обнаружена связь с определенным микроорганизмом, который имеет перечисленные в правиле свойства, то мы можем с определенным шансом на успех предполагать, что этот микроорганизм принадлежит такому-то классу. Это правило не является общим, поскольку применимо только к конкретному пациенту (Jones) и конкретному микроорганизму (organism-1). Гораздо чаще нам придется применять правила, которые пригодны для любого пациента и любого микроорганизма. В такие правила поле имени пациента вовсе не включается.

Желание сформировать общие правила требует включения в него переменных, которые играют роль местодержателя. В правиле, представленном в листинге 5.2, такие переменные отличаются от прочих членов наличием префикса ? перед именем. Обратите внимание на то, что переменная ?pat не появляется в заключительной части правила, а значит, использование поля имени пациента в предпосылках правила действительно является избыточным.



Содержание раздела