
- •Лабораторная работа № 4. Использование глобальных переменных в правилах
- •Свойства правил
- •Стратегия разрешения конфликтов
- •Синтаксис левой (условной) части правила
- •Использование переменных в правилах
- •Связывающие ограничения:
- •Предикатные ограничения
- •Ограничения, возвращающие значения
- •Использование образцов объектов
- •Адрес образца
- •Задание 2. Создать список фактов
- •Использование условного элемента exists.
- •Условный элемент forall
- •Условный элемент logical
Лабораторная работа № 4. Использование глобальных переменных в правилах
CLIPS поддерживает эвристическую (при помощи правил) и процедурную (при помощи функций) парадигмы представления знаний.
Основным методом представления знаний в CLIPS являются правила, определяющие действия, которые необходимо выполнить в случае возникновения некоторой ситуации.
Правила состоят из предпосылок (ЕСЛИ-часть или LHS1 правила) и следствия (ТО-часть или RHS2 правила).
Предпосылки правила представляют собой набор условий (или условных элементов), которые должны удовлетвориться, для того, чтобы правило выполнилось. Для создания предпосылок используют специальные выражения – образцы (patterns), задающие некоторую маску для фактов или объектов. Процесс сопоставления образцов фактам или объектом называют сопоставлением образцов. Механизм логического вывода (inference engine) в CLIPS автоматически сопоставляет образцы с текущим списком фактов и определенными объектами и ищет правила, которые применимы в настоящий момент.
Следствие правила представляет собой набор действий, которые выполняются, если правило применимо к текущей ситуации.
Эвристические правила в CLIPS представляются с помощью операторов IF-THEN.
Для добавления правила в текущую базу знаний в CLIPS используется конструктор defrule, синтаксис которого можно представить следующим образом:
(
defrule
<имя_правила>
[<комментарии>]
[<определение_свойства_правила>]
<предпосылки>
=> ; левая часть правила
<следствие> ; правая часть правила
)
Задание 1. Программа «Privet vsem!»
(clear)
(
defrule
Privet!
“Moja pervaja programma na CLIPS”
=
>
(
printout
t crlf crlf)
(printout t ***************** crlf)
(printout t “*Privet vsem!!!*” crlf)
(printout t ***************** crlf)
(printout t crlf crlf)
)
(reset)
(
run)
*** Так как в правой части не указан ни один условный элемент, CLIPS автоматически подставляет условие-образец initial-fact. В результате этого правило активизируется всякий раз при появлении в баз знаний факта initial-fact.
Рис. 1. Результат работы программы «Privet!»
Для просмотра списка правил используется Менеджер правил, который вызывается командой главного меню Browse → Defrule Manadger.
Свойства правил
Свойства правил позволяют задавать характеристики правил для описания левой части правила. Для задания свойства правила используется ключевое слово declare. Одно правило может иметь только одно определение свойства, заданное с помощью declare.
Свойства правил имеют следующий синтаксис:
<
определение_свойства_правила>
::= (declare
<свойство-правила>)
<свойство-правила> ::= (salience <целочисленное выражение>) |
(auto-focus
TRUE|FALSE)
Стратегия разрешения конфликтов
План решения задачи – это список всех правил, имеющих удовлетворенные условия при некотором, текущем состоянии списка фактов и объектов. Каждый модель имеет свой план решения задачи. Выполнение плана подобно стеку (верхнее правило плана всегда будет выполнено первым). Когда активируется новое правило, оно размещается в плане решения задачи, руководствуясь следующими факторами:
Активированное правило помещается выше всех правил с меньшим приоритетом и ниже всех правил с большим приоритетом.
Среди правил с одинаковым приоритетом используется текущая стратегия разрешения конфликтов для определения размещения среди других правил с одинаковым приоритетом.
Если правило активировано вместе с несколькими другими правилами, то они упорядочиваются произвольным образом.
Стратегии разрешения конфликтов:
Стратегия глубины (depth strategy): только что активированное правило помещается выше всех правил с таким же приоритетом.
Стратегия ширины (breadth strategy): только что активированное правило помещается ниже всех правил с таким же приоритетом.
Стратегия упрощения (simplicity strategy): все активированные правила с одинаковым приоритетом располагаются в зависимости от степени определенности (specificity), которое вычисляется по числу сопоставлений, сделанных в левой части правила (к определенности добавляют единицу: сопоставление с константой, связанная с фактом переменная; функции, являющиеся частью условных элементов :, =, test; аргументы логических функций and, not, or).
Стратегия усложнения (complexity strategy): между правилами с одинаковым приоритетом, только что активированные правила размещаются выше всех активированных правил с равной или меньшей определенностью.
Стратегия LEX: между правилами с одинаковым приоритетом только что активированные правила размещаются в соответствии с «новизной» образцов, которые сортируются по убыванию тегов:
Пример сортировки правил:
rule-6: f-1, f-4
rule-5: f-1, f-2, f-3,
rule-1: f-1, f-2, f-3
rule-2: f-3, f-1
rule-4: f-1, f-2,
rule-3: f-2, f-1
Стратегия MEA: сортировка правил осуществляется по временным тегам первых образцов двух активаций:
rule-2: f-3, f-1
rule-3: f-2, f-1
rule-6: f-1, f-4
rule-5: f-1, f-2, f-3,
rule-1: f-1, f-2, f-3
rule-4: f-1, f-2,
Случайная стратегия (random strategy): каждой активации назначается случайное число, которое используется для определения местоположения среди активаций с одинаковым приоритетом.