Правила и метаправила
Код каждого порождающего правила является самодостаточным, т.е. весь необходимый контекст активизации правила содержится только в его предпосылках. Не существует способа, который позволял бы одному правилу вызывать другое, как если бы правила были процедурами. Правило R, которое активизируется в цикле Сi, может облегчить последующую активизацию правила R' в цикле Ci+1, но единственный способ сделать это – изменить состояние рабочей памяти.
Иногда, для того чтобы решить, какое правило следует активизировать, желательно использовать конкретные знания, а не следовать общей стратегии разрешения конфликтов. С этой целью в некоторые интерпретаторы правил включены средства, позволяющие программисту сформулировать и ввести в программу метаправила. Эти метаправила определяют правила применения правил, т.е. правила, по которым выполняется отбор тех правил из претендующих на выполнение, которые следует рассматривать в первую очередь или, более того, выполнять обязательно, (Такая возможность отсутствует в интерпретаторе CLIPS.)
Метаправила, таким образом, существенно отличаются от обычных правил, поскольку они направляют ход рассуждений, а не принимают непосредственное участие в процессе формирования суждений. Часто это отличие формулируется в терминах разграничения уровней функционирования правил – метауровня и объектного уровня.
Например, в системе MYCIN набор порождающих правил индексирован по клиническим параметрам, которые упоминаются в его правой части (заключение правила). В результате появляется предпосылка для значительного ускорения процедуры извлечения правил, которые можно использовать для определения величины определенного параметра (лекарственного препарата). Эта информация используется метаправилами, которые применяются по отношению к правилам, с помощью которых достигается определенная подцель.
Пусть, например, сформулирована очередная подцель G, скажем, классифицировать микроорганизм. Для достижения этой подцели в системе при данном состоянии рабочей памяти можно применить множество, например порядка 30 правил. Метаправила позволяют значительно сузить круг кандидатов на основании какого-либо критерия, заложенного программистом в формулировку этого правила.
Ниже представлено простое метаправило сокращения количества кандидатов в системе MYCIN, заимствованное из книги Бучанана и Шортлиффа [Buchanan and Shortliffe, 1984, Chapter 28].
МЕТАПРАВИЛO001 ЕСЛИ культура получена не из стерильного источника, и существуют правила, в предпосылках которых упоминается предыдущий классифицированный организм, который может быть тем же самым, что и текущий, ТО с совершенной определенностью (1.0) можно предположить, что каждое из этих правил в данном случае не применимо.
Это метаправило позволяет исключить из рассмотрения те правила, которые использовались для классификации других организмов из этого же источника.
Другие метаправила могут быть использованы для изменения порядка приоритетов правил. В них фактически заложены знания, рекомендующие: "сначала попробуйте этот способ, а уж потом – тот". Примером может служить приведенное ниже метаправило, также относящееся к системе MYCIN.
МЕТАПРАВИЛO002 ЕСЛИ (1)инфекция относится к классу pelvic-abscess, и (2)существуют правила, в предпосылках которых упоминается enterobacteriaceae, и (3)существуют правила, в предпосылках которых упоминается грамполохительная окраска, ТО есть основания предполагать (0.4), что приоритет следует отдать первым из перечисленных правил.
Обратите внимание на то, что в приведенном метаправиле также присутствует коэффициент уверенности меньше единицы.
Последний пример демонстрирует метаправило, которое относится к общей стратегии решения проблем, а не к конкретным проблемам предметной области.
МЕТАПРАВИЛO003 (1)существуют правила, в предпосылках которых не упоминается текущая цель, и (2)существуют правила, в предпосылках которых упоминается текущая цель, ТО с совершенной определенностью (1.0) можно утверждать, что сначала следует активизировать первые из перечисленных правил.