Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

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





 

(defrule

<имя-правила>

[<комментарии>]

[<определение-свойства-правила>]

<предпосылки >; левая часть правила

=>

<следствие>; правая часть правила

)

Имя правила должно быть значением типа symbol. В качестве имени прави­ла нельзя использовать зарезервированные слова CLIPS, которые были пе­речислены ранее. Повторное определение существующего правила приводит к удалению правила с тем же именем, даже если новое определение содер­жит ошибки.

Комментарии являются необязательными, и, как правило, описывают на­значения правила. Комментарии необходимо заключать в кавычки. Эти комментарии сохраняются и в дальнейшем могут быть доступны при про­сматривании определения правила.

Определение правила может содержать объявление свойств правила, кото­рое следует непосредственно после имени правила и комментариев. Более подробно свойства правила будут рассмотрены ниже.

В справочной системе и документации по CLIPS для обозначения предпо­сылок правила чаще всего используется термин "LHS of rule", а для обозна­чения следствия "RHS of rule", поэтому в дальнейшем мы будем использо­вать аналогичную терминологию — левая и правая часть правила.

Левая часть правила задается набором условных элементов, который обычно состоит из условий, примененных к некоторым образцам. Заданный набор образцов используется системой для сопоставления с имеющимися фактами и объектами. Все условия в левой части правила объединяются с помощью неявного логического оператора and. Правая часть правила содержит список действий, выполняемых при активизации правила механизмом логического вывода. Для разделения правой и левой части правил используется сим­вол =>. Правило не имеет ограничений на количество условных элементов или действий. Единственным ограничением является свободная память ва­шего компьютера. Действия правила выполняются последовательно, но то­гда и только тогда, когда все условные элементы в левой части этого прави­ла удовлетворены.

Если в левой части правила не указан ни один условный элемент, CLIPS автоматически подставляет условие-образец initial-fact или initial-object. Таким образом, правило активизируется всякий раз при появлении в

базе знаний факта initial-fact ИЛИ Объекта initial-object. О факте ini­tial-fact было рассказано в предыдущей главе, об объекте initial-object вы узнаете в гл. 11. Если в правой части правила не определено ни одно действие, правило может быть активировано и выполнено, но при этом ни­чего не произойдет.

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

Пример 6.1. Программа "Hello-World!";

 

(clear)

(defrule

Hello-World

"My FirstCLIPS Rule"

=>

(printout t crlf crlf)

(printout t ******************** crlf)

(printout t "* HELLO WORLD!!! *" crlf)

(printout t ******************** crlf)

(printout t crlf crlf)

(reset)

(run)

Так как это первая наша программа на языке CLIPS, разберем подробно все ее действия и то, каким образом они выполняются.

Функция clear полностью очищает систему, т. е. удаляет все правила, фак­ты и прочие объекты базы знаний CLIPS, добавленные конструкторами, приводит систему в начальное состояние, необходимое для каждой новой программы.

Затем, с помощью конструктора defrule в систему добавляется новое пра­вило с именем Hello-World и соответствующими комментариями. Левая часть правила в данном случае отсутствует, поэтому CLIPS автоматически формирует предпосылки, состоящие из единственного условного выражения (initial-fact). Это выражение является образцом простейшего типа. При запуске программы на выполнение механизм логического вывода CLIPS будет искать в списке фактов факт (initial-fact) и если он там будет най­ден — активизирует правило. Правая часть нашего правила состоит из не­скольких вызовов функции printout. Подробно данная функция будет рас­смотрена в гл. 15. Сейчас же вам необходимо знать только то, что эта функ­ция выводит текстовое выражение в один из потоков вывода. Параметр t задает стандартный поток вывода — экран. Он аналогичен, например, стандартному потоку cout в C++. Выражение clrf служит для перехода на но­вую строку.

Функция reset, как уже упоминалось ранее, очищает список фактов и зано­сит в него факт (initial-fact), что очень важно для нормального функцио­нирования нашей программы. И, наконец, функция run запускает механизм логического вывода и приводит нашу программу в движение. Если описан­ные выше действия были выполнены правильно, то вы должны увидеть ре­зультат, аналогичный приведенному на рис. 6.1 — фразу "hello world!!!" в красивой рамочке из звездочек:

Рис. 6.1. Результат работы программы "Hello-World!"

Чтобы запустить нашу программу на выполнение еще раз, достаточно вы­звать функции reset и run. Эти функции можно вводить с клавиатуры, кро­ме того, они доступны в меню Execution и имеют "горячие" клавиши <Ctrl>+<E> и <Ctrl>+<R> соответственно.

CLIPS поддерживает ряд функций, команд и визуальных средств, необхо­димых для эффективной работы с правилами. Самые основные из них будут рассмотрены в данной главе по мере необходимости. Полный список функ­ций и команд, предназначенный для работы с правилами, будет приведен в гл. 15 и 16 соответственно. Сейчас же рассмотрим визуальный инструмент, доступный пользователям Windows-версии среды CLIPS — Defrule Manager (Менеджер правил). Для запуска менеджера правил в меню Browse выберите пункт Defrule Manager. Внешний вид этого инструмента показан на рис. 6.2.

Рис. 6.2. Окно менеджера правил

Менеджер отображает список правил, присутствующих в системе в данный момент, и позволяет выполнять над ними ряд операций. Например, с по­мощью кнопки Remove можно удалить выбранное правило из системы, а с помощью Pprint вывести в окне CLIPS определение выделенного правила вместе с введенными комментариями. Общее количество правил отобража­ется в заголовке окна менеджера — Defrule Manager — 1 Items. Другие воз­можности менеджера правил будут рассмотрены позже, по мере необходи­мости.

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

 

6.2. Основной цикл выполнения правил

После того как в систему добавлены все необходимые правила и приготов­лены начальные списки фактов и объектов, CLIPS готов выполнять прави­ла. В традиционных языках программирования точка входа, точка останов­ки и последовательность вычислений явно определяются программистом. В CLIPS поток исполнения программы совершенно не требует явного опре­деления. Знания (правила) и данные (факты и объекты) разделены, и механизм логического вывода, предоставляемый CLIPS, применяет данные к знаниям, формируя список применимых правил, после чего последовательно выполняет их. Этот процесс называется основным циклом выполнения правил (basic cycle of rule execution). Рассмотрим последовательность действий (ша­гов), выполняемых системой CLIPS в этом цикле в момент выполнения нашей программы:

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

2. Выполняются действия, описанные в правой части выбранного правила. Использование функции return может менять положение фокуса в стеке фокусов. Число запусков данного правила увеличивается на единицу, для определения предела выполнения правила.

3. В результате выполнения шага 2 некоторые правила могут быть активи­рованы или дезактивированы. Активированные правила (т. е. правила, условия которых удовлетворяются в данный момент) помещаются в план решения задачи модуля, в котором они определены. Размещение в плане определяется приоритетом правила (salience) и текущей стратегией раз решения конфликтов (эти понятия будут описаны ниже). Дезактивированные правила удаляются из текущего плана решения задачи. Если для правила установлен режим просмотра активаций, то пользователь получит соответствующее информационное сообщение при каждой активации или дезактивации правила (режим просмотра активаций можно установить с помощью диалогового окна Watch Options. Для этого выберите пункт Watch в меню Execution и установите флажок Activations).

4. Если установлен режим динамического приоритета (dynamic salience), то для всех правил из текущего плана решения задачи вычисляются новые значения приоритета. После этого цикл повторяется с шага 1.







Дата добавления: 2015-08-30; просмотров: 700. Нарушение авторских прав; Мы поможем в написании вашей работы!




Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...


Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...


Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...


ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Понятие массовых мероприятий, их виды Под массовыми мероприятиями следует понимать совокупность действий или явлений социальной жизни с участием большого количества граждан...

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

Тактические действия нарядов полиции по предупреждению и пресечению групповых нарушений общественного порядка и массовых беспорядков В целях предупреждения разрастания групповых нарушений общественного порядка (далееГНОП) в массовые беспорядки подразделения (наряды) полиции осуществляют следующие мероприятия...

Этические проблемы проведения экспериментов на человеке и животных В настоящее время четко определены новые подходы и требования к биомедицинским исследованиям...

Классификация потерь населения в очагах поражения в военное время Ядерное, химическое и бактериологическое (биологическое) оружие является оружием массового поражения...

Факторы, влияющие на степень электролитической диссоциации Степень диссоциации зависит от природы электролита и растворителя, концентрации раствора, температуры, присутствия одноименного иона и других факторов...

Studopedia.info - Студопедия - 2014-2024 год . (0.007 сек.) русская версия | украинская версия