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

Системы порождающих правил для решения проблем. Синтаксис представления правил.

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

Предпосылки обычно бывают представлены в форме вектора объект-атрибут – значение, как, например:

(organism-1 (morphology rod) (aerobicity aerobic)).

В данном случае предпосылка состоит в том, что определенный микроорганизм имеет форму палочки и размножается в воздушной среде.

Правило, которое включает такую предпосылку, на языке CLIPS имеет вид, показанный в листинге 5.1.

Листинг 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 не появляется в заключительной части правила, а значит, использование поля имени пациента в предпосылках правила действительно является избыточным.

Листинг 5.2. Правило, в котором используются переменные.

(defrule diagnosis
(patient (name?pat)
(organism?org))
(organism (name?org)
(morphology rod)
(aerobicity aerobic)) › (assert
(organism
(name?org)
(identify enterobacteriaceae) (confidence 0.8)))

При использовании правила интерпретатором вместо всех одноименных переменных подставляется одно и то же значение.

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