Общая характеристика среды CLIPS CLIPS

Содержание

Слайд 2

Базовые типы данных и представление фактов

Поддерживаются восемь базовых типов данных: 1) целые

Базовые типы данных и представление фактов Поддерживаются восемь базовых типов данных: 1)
(integer) и 2) вещественные (float) числа, 3) символьные (symbol) и 4) строковые (string) данные, 5) внешний адрес (external-address), 6) адрес факта (fact-address), 7) имя экземпляра (instance-name) и 8) адрес экземпляра (instance-address).
27; +125; -38
12.0; -1.59; 237e3; -32.3e-7
bad_value; 456-93-039; @+=%
ограничители–неотобр.символ ‘ ( ) & | < ~ ; не может начинаться с ? и $?
"abc"; "a & b"; "a\"quote"; "fgs\\85"
адрес внешней структуры данных:
для ссылки на факты:
для ссылки на экземпляры классов: [pump-1]; [foo]; [123-890]
, где ХХХ – имя экземпляра

Слайд 3

Базовые типы данных, представление фактов (2)

Место, занимаемое одним значением базового типа данных,

Базовые типы данных, представление фактов (2) Место, занимаемое одним значением базового типа
называется полем (field). Значения базовых типов являются одноместными.
Многоместные значения: (a 123); (); (x 3.0 "red" 567)
Упорядоченные факты: (высота 100); (студент Сидоров); (отец Иван Петр); (однокурсники Иванов Петров Сидоров)
Команды: assert – добавляет факт в факт-список; retract – удаляет факт из списка; modify – модифицирует список; duplicate – дублирует факт:
(assert (length 150) (width 15) (weight “big”))
Идентификатор факта (fact-identifier): f-10 ссылается на факт с индексом 10.

Слайд 4

Базовые типы данных, представление фактов (3)

Задание исходного множества упорядоченных фактов:
(deffacts <имя_группы_фактов>

Базовые типы данных, представление фактов (3) Задание исходного множества упорядоченных фактов: (deffacts
["<комментарий>"] <факт>*)
Пример: (deffacts stud "Студент"
(student name John)
(student spec “COMPUTER”))
Неупорядоченные факты - список взаимосвязанных именованных полей – слотов. Возможен доступ к полям по именам.
Одиночные (одно поле) и мультислоты (любое число полей).

Слайд 5

Базовые типы данных, представление фактов (4)

Шаблоны – для спецификации состава неупорядоченных фактов.
Синтаксис

Базовые типы данных, представление фактов (4) Шаблоны – для спецификации состава неупорядоченных
конструкции deftemplate:
(deftemplate <имя шаблона> [“<комментарий>”]
<определение слота-1>
. . .
<определение слота-N>)
Пример шаблона:
(deftemplate object “Шаблон объекта”
(slot name)
(slot location)
(slot weight))
Пример неупорядоченного факта на основе этого шаблона:
(object (name car) (location 100) (weight 600))

Слайд 6

Представление правил в базе знаний.
Типы условных элементов.

(defrule <имя_правила> ["<комментарий>"][<объявление>]
<условный элемент>*; Левая

Представление правил в базе знаний. Типы условных элементов. (defrule [" "][ ]
часть правила (антецедент)
=>
<действие>*) ; Правая часть правила (консеквент)
Пример:
(defrule R1
(days 2)
(works 100)
=>
(printout t crlf "Свободного времени нет" crlf)
(assert (freetime "no")))

Слайд 7

Представление правил в базе знаний.
Типы условных элементов

Антецедент правила состоит из

Представление правил в базе знаний. Типы условных элементов Антецедент правила состоит из
последовательности условных элементов (УЭ). Если все УЭ правила удовлетворяются при текущем состоянии базы данных, то правило помещается в список готовых к выполнению правил – агенду.
Шесть типов условных элементов:
1) УЭ-образцы (Pattern Conditional Elements);
2) УЭ-проверки (Test Conditional Elements);
3) УЭ “ИЛИ” (Or Conditional Elements);
УЭ “И” (And Conditional Elements);
УЭ “НЕ” (Not Conditional Elements);
4) УЭ “Существует” (Exists Conditional Elements);
5) УЭ “Для всех” (Forall Conditional Elements);
6) Логические УЭ (Logical Conditional Elements).

Слайд 8

Представление правил в базе знаний.
Типы условных элементов (1)

УЭ-образец состоит из совокупности

Представление правил в базе знаний. Типы условных элементов (1) УЭ-образец состоит из
ограничений на поля, масок (wildcards) полей и переменных, используемых при сопоставлении УЭ с образцом – фактом или экземпляром объекта.
В УЭ-образцах используются следующие конструкции:
- литеральные ограничения (Literal Constraints);
- одно и многоместные маски (Single- and Multifield Wildcards);
- одно и многоместные переменные (Single- and Multifield Variables);
- ограничения со связками (Connective Constraints);
- предикатные ограничения (Predicate Constraints);
- ограничения возвращаемым значением (Return Value Constraints).

Слайд 9

Представление правил в базе знаний.
Типы условных элементов (1)

Литеральное ограничение
Упорядоченный: (data 1

Представление правил в базе знаний. Типы условных элементов (1) Литеральное ограничение Упорядоченный:
one “two”)
Неупорядоченный: (person (name Bob) (age 20))
2) Одно- и многоместные маски:
(data ? blue red $?) будет сопоставляться со следующими упорядоченными фактами:
(data 1 blue red),
(data 5 blue red 6.9 "avto"),
но не будет сопоставлен со следующими фактами:
(data 1.0 blue "red"),
(data 1 blue)
3) Одно- и многоместные переменные:
Одноместные: ?x, ?var, ?age Многоместные: $?y, $?zum

Слайд 10

Представление правил в базе знаний.
Типы условных элементов (1)

Пример:
(data 2 blue green),
(data

Представление правил в базе знаний. Типы условных элементов (1) Пример: (data 2
1 blue),
(data 1 blue red)
(defrule find-data-1
(data ?x ?y ?z)
=>
(printout t ?x " : " ?y " : " ?z crlf))
УЭ данного правила будет сопоставляться с первым и третьим фактом, поэтому в результате срабатывания правила будет выведено:
1 : blue : red
2 : blue : green

Слайд 11

Представление правил в базе знаний.
Типы условных элементов (1)

4) Ограничения со связками:
?x&red⏐blue

Представление правил в базе знаний. Типы условных элементов (1) 4) Ограничения со
трактуется как ?x&(red⏐blue), а не как (?x&red)⏐blue
(defrule r1
(data (value ?x&~red&~green))
=>
(printout t "slot value = " ?x crlf)).
Для факта (data (value blue)) это правило выведет сообщение:
slot value = blue
5) Предикатное ограничение задается с помощью символа “:”, за которым следует вызов предикатной функции. В качестве предикатных функций используются встроенные функции CLIPS: numberp, floatp, integerp, symbolp, stringp
Пусть заданы факты: ((data 1) (data 2) (data red)) Для определения значений числового типа: (data ?x&:(numberp ?x))

Слайд 12

Представление правил в базе знаний.
Типы условных элементов (1)

6) Ограничение возвращаемым значением:
Использует

Представление правил в базе знаний. Типы условных элементов (1) 6) Ограничение возвращаемым
в качестве ограничения значение, возвращаемое внешней функцией. Эта функция вызывается непосредственно из УЭ-образца с использованием следующего синтаксиса: =<вызов-функции>
Пример:
(defrule twice
(data (x ?x) (y =(* 2 ?x)))
=>...)
будет сопоставляться со всеми неупорядоченными фактами, у которых значение в слоте y равно удвоенному значению слота x

Слайд 13

Представление правил в базе знаний.
Типы условных элементов (2)

УЭ-проверка
(test )
Удовлетворяется, если

Представление правил в базе знаний. Типы условных элементов (2) УЭ-проверка (test )
функция, вызываемая из него, возвращает значение отличное от FALSE.
В следующем правиле проверяется, что модуль разности двух чисел не меньше трех:
(defrule example-1
(data ?x)
(value ?y)
(test (>= (abs (- ?y ?x)) 3))
=>...)

Слайд 14

Представление правил в базе знаний.
Типы условных элементов (3)

Условный элемент “ИЛИ”
задается

Представление правил в базе знаний. Типы условных элементов (3) Условный элемент “ИЛИ”
конструкцией (or <УЭ-1> ... < УЭ-N>)
Правило
(defrule r1
(man stud)
(or (spec computeer) (age 20))
=>...) эквивалентно двум следующим:
(defrule r2
(man stud) (spec computeer)
=>...)
(defrule r3
(man stud) (age 20)
=>...)

Слайд 15

Представление правил в базе знаний.
Типы условных элементов (3)

Условный элемент “И”
задается

Представление правил в базе знаний. Типы условных элементов (3) Условный элемент “И”
(and <УЭ-1> ... < УЭ-N>)
Можно комбинировать УЭ “И” и “ИЛИ” в любых сочетаниях.
Пример:
(defrule r1
(sys-mode search)
(or (and (distance high) (resol little))
(and (distance low) (resol big)))
=>...)

Слайд 16

Представление правил в базе знаний.
Типы условных элементов (3)

Условный элемент “НЕ”
задается

Представление правил в базе знаний. Типы условных элементов (3) Условный элемент “НЕ”
(not <УЭ>)
Пример:
(defrule not-double
(not (data red ?x ?x))
=>...)
Правило ищет факты, у которых второе поле – red, а третье и четвертое поля не совпадают.

Слайд 17

Представление правил в базе знаний.
Типы условных элементов (4)

Условный элемент “Существует”
синтаксис

Представление правил в базе знаний. Типы условных элементов (4) Условный элемент “Существует”
(exists <УЭ-1> ... <УЭ-N>)
Используется для определения удовлетворяется ли группа УЭ, специфицированных внутри условного элемента “Существует”, хотя бы одним набором образцов-сущностей в базе данных.
Пример:
правило:
(defrule example
(exists (a ?x) (b ?x))
=>...)
будет активизировано, если в базе данных имеется хотя бы одна пара фактов, содержащих в первых полях значения a и b, а вторые поля которых совпадают.

Слайд 18

Представление правил в базе знаний.
Типы условных элементов (5)

Условный элемент “Для всех”

Представление правил в базе знаний. Типы условных элементов (5) Условный элемент “Для

синтаксис (forall <УЭ-1> ... <УЭ-N>)
Используется для определения, удовлетворяется ли группа УЭ, специфицированных внутри условного элемента “Для всех”, для каждого появления УЭ-1.
Пример: правило
(defrule all-students-passed
(forall (student ?name)
(reading ?name)
(writing ?name)
(arithmetic ?name))
=> (printout t "All students passed." crlf))
активизируется, если каждый студент научился чтению, письму и арифметике.

Слайд 19

Представление правил в базе знаний.
Типы условных элементов (6)

Логические условные элементы
синтаксис

Представление правил в базе знаний. Типы условных элементов (6) Логические условные элементы
(logical <УЭ>+)
Логический УЭ группирует образцы точно так же, как УЭ “И” и может использоваться в сочетании с УЭ “И”, УЭ “ИЛИ” и УЭ “НЕ”.
Однако логические УЭ можно применять только в первых образцах правила.

Слайд 20

Представление правил в базе знаний.
Типы условных элементов (6)

Пример: допустимо правило
(defrule ok
(logical

Представление правил в базе знаний. Типы условных элементов (6) Пример: допустимо правило
(a))
(logical (b))
(c)
=>
(assert (d)))
но недопустимо правило
(defrule not-ok-1
(logical (a))
(b)
(logical (c))
=>
(assert (d)))

Слайд 21

Логический вывод в системе CLIPS

Базовый цикл работы МЛВ в системе CLIPS:
1.

Логический вывод в системе CLIPS Базовый цикл работы МЛВ в системе CLIPS:
Если достигнут предел активации правил или нет текущего фокуса – останов МЛВ. Иначе - выбор верхнего правила агенды модуля, которому принадлежит текущий фокус. Если в агенде нет правил, текущий фокус извлекается из стека фокусов и управление переходит к следующему модулю. Если стек фокусов пуст, то выполнение останавливается, в противном случае вновь выполняется шаг 1.
2. Выполняются операторы, содержащиеся в консеквенте выбранного правила. Счетчик числа правил инкрементируется.
3. Активированные правила помещаются в агенду модуля, в котором они определены. Деактивированные правила удаляются из агенды.
4. Значения значимостей всех правил, содержащихся в агенде переоцениваются. Цикл повторяется с шага 1.

Слайд 22

Помещение правил в агенду

1. Вновь активируемые правила помещаются над всеми правилами с

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

Слайд 23

Назначение приоритетов правил

(defrule r1
(declare (salience 500))
(fire test-1)
=>
(printout t "Rule r1 firing." crlf))
Значимость

Назначение приоритетов правил (defrule r1 (declare (salience 500)) (fire test-1) => (printout
назначается:
при определении правила,
при активизации правила (динамическая),
в каждом цикле выполнения (динамическая).
Команда set-salience-evaluation используется для 2-го и 3-го случаев.

Слайд 24

Стратегии разрешения конфликтов

“вглубь” (depth), используется по умолчанию,
“вширь” (breadth),
“простоты” (simplicity),
“сложности” (complexity),

Стратегии разрешения конфликтов “вглубь” (depth), используется по умолчанию, “вширь” (breadth), “простоты” (simplicity),

LEX (lex),
MEA (mea)
случайного выбора (random).
Команда (set-strategy ) или меню “Execution/Options”
(set-strategy ),
где ::= depth⏐breadth⏐simplicity ⏐complexity⏐ lex⏐mea⏐random.

Слайд 25

Стратегии “вглубь” и “вширь”

ВГЛУБЬ: вновь активируемые правила помещаются в агенду над всеми

Стратегии “вглубь” и “вширь” ВГЛУБЬ: вновь активируемые правила помещаются в агенду над
правилами такой же значимости.
Факт f-1 активирует правила rule-1 и rule-2,
Факт f-2 активирует правила rule-3 и rule-4.
Тогда если f-1 устанавливается раньше, чем f-2, то rule-3 и rule-4 окажутся в агенде выше правил rule-1 и rule-2.
ВШИРЬ: Вновь активируемые правила помещаются ниже всех правил с такой же значимостью.

Слайд 26

Стратегии “простоты” и “сложности”

ПРОСТОТЫ: активируемые правила помещаются над всеми правилами с равной

Стратегии “простоты” и “сложности” ПРОСТОТЫ: активируемые правила помещаются над всеми правилами с
или большей специфичностью.
(defrule example
(item ?x ?y ?x)
(test (and(numberp ?x) (> ?x (+ 10 ?y)) (< ?x 100)))
=>…)
имеет специфичность 5 (считаются операторы (item ?x ?y ?x), ?x, numberp, >, <).
СЛОЖНОСТИ: активируемые правила помещаются над всеми правилами с равной или меньшей специфичностью.

Слайд 27

Стратегия LEX

Правило с большим значением временного тега помещается в агенду выше другого

Стратегия LEX Правило с большим значением временного тега помещается в агенду выше
правила.

Сработает правило Rule1, т.к. временной тег образца, связанного с его третьим условным элементом (8) больше, чем временной тег соответствующего образца у правила Rule2 (6).

Слайд 28

Стратегия “МЕА”

Правило с большим временным тегом первого условного элемента , помещается в

Стратегия “МЕА” Правило с большим временным тегом первого условного элемента , помещается
агенду выше. Если временные теги первых образцов равны, то используется стратегия LEX.

В примере на рисунке раньше сработает правило Rule1.

Слайд 29

Стратегия случайного выбора

Каждому правилу сопоставляется случайное число, которое используется для определения его

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

Слайд 30

Фрагмент простой ЭС в среде CLIPS

(defrule data-input
(initial-fact)
=>
(printout t crlf "Введите

Фрагмент простой ЭС в среде CLIPS (defrule data-input (initial-fact) => (printout t
число дней до зачета (целое значение): ")
(bind ?days (read))
(if (numberp ?days)
then (assert (days ?days))
else (printout t "Введите число" crlf))
(printout t crlf "Введите число несданных лабораторных работ (в %)")
bind ?works (read))
(assert (works ?works)))
(defrule R1
(days ?days)
(works ?works)
(test (and (= ?days 1) (<> ?works 0)))
=>
(printout t crlf "Свободного времени нет" crlf)
(assert (freetime "no")))
Имя файла: Общая-характеристика-среды-CLIPS-CLIPS.pptx
Количество просмотров: 29
Количество скачиваний: 0