Определение 2.2.6. Синтаксис команды duplicate 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Определение 2.2.6. Синтаксис команды duplicate



(duplicate     <определение-факта>

<новое-значение-слота>+)

Аргумент <определение-факта> может быть либо переменной, связанной с адресом факта с помощью правила, либо индексом факта без префикса. После определения факта следует список из одного или более новых значе­ний слотов указанного шаблона. Продемонстрируем работу данной функ­ции на следующем примере:

Пример 2.2.11. Создание копии существующего неупорядоченного факта

(deftemplate car

(slot name)

(slot producer)

(slot type)

(slot max-speed))

(assert (car

(name scorpio)

(producer ford)

(type sedan)

(max-speed 180)))

(duplicate 0

(type off-road)

(max-speed 130))

В приведенном примере определяется шаблон, описывающий свойства ав­томобиля, и добавляется факт — автомобиль Ford Scorpio с типом кузова седан и максимальной скоростью 180 (км/ч). После этого с помощью функ­ции duplicate добавляется факт с информацией об еще одном автомобиле с похожими характеристиками — это внедорожник Ford Scorpio с макси­мальной скоростью 130 (км/ч). Duplicate просто облегчает нам жизнь, из­бавляя от излишнего ввода значений данных совпадающих слотов.

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

 

ГЛАВА 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-03-10; просмотров: 40; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.220.136.165 (0.006 с.)