Пример 5.21. Использование функции save-facts


 

(clear)

(deftemplate template

(slot a)

(slot b))

(assert (template (a 1) (b 2)))

(assert (simple-factl) (simple-fact2))

(save-facts fl local template simple-factl)

 

Последовательность действий, приведенная в данном примере, сохраняет в файл f1, находящийся в текущем каталоге, все факты, видимые в текущем модуле и связанные с шаблонами template и simple-factl (как вы помните, после добавления факта simple-factl CLIPS определяет неявно созданный шаблон simple-factl). В результате будет получен текстовый файл со следующим содержанием:

Пример 5.22. Содержание файла fl

 

(template (а 1) (b 2) } (simple-factl)

 

В случае успешного выполнения, команда возвращает значение true, a в случае неудачи — соответствующее сообщение об ошибке. Если указан­ный файл уже существует, он будет перезаписан.

Для загрузки сохраненных ранее файлов используется функция load-facts. Функция имеет следующий формат:

Определение 5.15. Синтаксис команды load-facts

 

(load-facts <имя-файла>)

 

Здесь <имя-файла> — имя текстового файла, сохраненного ранее с помощью команды save-facts, содержащего список фактов. Файл со списком фактов можно также создать в любом текстовом редакторе, если вы хорошо разо­брались с представлением фактов в CLIPS. Для загрузки сохраненного в предыдущем примере файла выполните:

Пример 5.23. Использование функции load-facts

 

(load-facts fl)

 

В случае успешного выполнения команда возвращает значение true, а в случае неудачи — false и соответствующее сообщение об ошибке. Обратите внимание, что если в файле содержатся факты, связанные с явно создан­ными с помощью конструктора deftemplate шаблонами, то в момент загруз­ки все необходимые шаблоны должны быть уже определены в системе. Если это условие не будет выполнено, то загрузка фактов закончится неудачно. К счастью, CLIPS также позволяет и загрузку конструкторов из текстового файла, но об этом мы поговорим в следующей главе, после рассмотрения конструктора defrule.

Кроме описанных выше функций и команд работы с шаблонами, фактами и предопределенными фактами, в CLIPS существует еще несколько полез­ных функций и команд, служащих той же цели. Полное описание этих функций и команд приведено в гл. 15 и 16. Далее, имея достаточный объем знаний о фактах в CLIPS и способах работы с ними, приступим к изучению правил.


ГЛАВА 6. Правила.

 

CLIPS поддерживает эвристическую и процедурную парадигму представле­ния знаний. Для представления знаний в процедурной парадигме CLIPS предоставляет такие механизмы, как глобальные переменные, функции и родовые функции, речь о которых пойдет в гл. 7, 8 и 10 соответственно. В этой главе мы рассмотрим такой способ представления знаний, как правила. Правила в CLIPS служат для представления эвристик или так назы­ваемых "эмпирических правил", которые определяют набор действий, вы­полняемых при возникновении некоторой ситуации. Разработчик эксперт­ной системы определяет набор правил, которые вместе работают над решением некоторой задачи. Правила состоят из предпосылок и бедствия. Предпосылки называются также ЕСЛИ-частъю правила, левой частью прави­ла или LHS правила (left-hand side of rule). Следствие называется ТО-частью правила, правой частью правила или RHS правила (right-hand side of rule).

Предпосылки правила представляют собой набор условий (или условных элементов), которые должны удовлетвориться, для того чтобы правило вы­полнилось. Предпосылки правил удовлетворяются в зависимости от нали­чия или отсутствия некоторых заданных фактов в списке фактов (о котором было рассказано в предыдущей главе) или некоторых созданных объектов, являющихся экземплярами классов, определенных пользователем (о кото­рых будет рассказано в гл. 11). Один из наиболее распространенных типов условных выражений в CLIPS — образцы (patterns). Образцы состоят из на­бора ограничений, которые используются для определения того, удовлетво­ряет ли некоторый факт или объект условному элементу. Другими словами, образец задает некоторую маску для фактов или объектов. Процесс сопос­тавления образцов фактам или объектам называется процессом сопоставления образцов (pattern-matching). CLIPS предоставляет механизм, называемый ме­ханизмом логического вывода (inference engine), который автоматически сопоставляет образцы с текущим списком фактов и определенными объектами в поисках правил, которые применимы в данный момент.

Следствие правила представляется набором некоторых действий, которые необходимо выполнить, в случае если правило применимо к текущей ситуа­ции. Таким образом, действия, заданные вследствие правила, выполняются по команде механизма логического вывода, если все предпосылки правила удовлетворены. В случае если в данный момент применимо более одного правила, механизм логического вывода использует так называемую стратегию разрешения конфликтов (conflict resolution strategy), которая определяет, какое именно правило будет выполнено. После этого CLIPS выполняет дей­ствия, описанные вследствие выбранного правила (которые могут оказать влияние на список применимых правил), и приступает к выбору следующе­го правила. Этот процесс продолжается до тех пор, пока список примени­мых правил не опустеет.

Чтобы лучше понять сущность правил в CLIPS, их можно представить в виде оператора if-then, используемого в процедурных языках программиро­вания, например, таких как Ada или С. Однако условия выражения if-then в процедурных языках вычисляются только тогда, когда поток управления программы непосредственно попадает на данное выражение путем последо­вательного перебора выражений и операторов, составляющих программу. В CLIPS, в отличие от этого, механизм логического вывода создает и посто­янно модифицирует список правил, условия которых в данный момент удовлетворены. Эти правила запускаются на выполнение механизмом логи­ческого вывода. С этой стороны правила похожи на обработчики сообще­ний, присутствующие в таких языках программирования, как, например, Ada или Smalltalk.

Без правил не обойдется ни одна экспертная система, так что правила и язык их представления в экспертной системе можно смело назвать самой важной частью любой экспертной оболочки. Успех экспертной системы во многом определяется тем, насколько удачен способ представления знаний в виде правил, и насколько хорошо им владеет разработчик экспертной сис­темы. Вся данная глава посвящена правилам, их синтаксису и способам по­строения, их функционированию и назначению, а также приемам их при­менения.

6.1. Создание правил. Конструктор defrule

Для добавления новых правил в базу знаний CLIPS предоставляет специ­альный конструктор defrule. В общем виде синтаксис данного конструктора можно представить следующим образом:



Дата добавления: 2021-12-14; просмотров: 356;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.011 сек.