СLIPS
Краткие теоретические сведения
Краткие теоретические сведения
Запуск
Назначение основных пунктов меню оконного интерфейса
Основные команды при работе со средой CLIPS
Основные конструкции в CLIPS
Факты
Факты
Функция assert
Пример assert
Функция retract
Пример retract
Конструктор deffacts
Конструктор deftemplate
Конструктор deftemplate
Пример assert
Пример
Правила
Правила
Пример
Использование образцов в правилах
Групповые символы
Глобальные переменные
Глобальные переменные
Пользовательские функции
Пользовательские функции
ПРОЦЕДУРНЫЕ ФУНКЦИИ
5.88M
Category: programmingprogramming

Практическая 6

1. СLIPS

Практическое занятие 6

2. Краткие теоретические сведения

CLIPS— С Language Integrated Production
System— программная среда для
разработки экспертных систем.
Разработана в 1984 г., в космическом
центре Джонсона NASA.
Основная цель прототипа CLIPS было
создание языка, способного решать
задачи, опираясь на концепцию знаний.

3. Краткие теоретические сведения

CLIPS поддерживает три основных
способа представления знаний:
продукционные правила для
представления эвристических,
основанных на опыте знаний;
функции для представления
процедурных знаний;
объектно-ориентированное
программирование.
http://clipsrules.sourceforge.net/

4. Запуск

Для того чтобы
Дочернее
окнокоманды,
оболочкинаписанные
«Dialog Window»,
в окне, были
используется
переданы в для
диалоговое
выполнения
команд
окно
необходимо
CLIPS и выделить
получения
их результата.
и нажать комбинацию
Это своего
Ctrl-M
рода
или
командная
выбрать строка
оболочки,
пункт
менюгде
Buffer
можно
– Batch
выполнить
Selection.
команду CLIPS записав ее после приглашения
и нажав клавишу .

5. Назначение основных пунктов меню оконного интерфейса

Пункт
File
Подпункт
“Горячие” клавиши
New
Ctrl+N
Создание нового файла
Open
Ctrl+O
Открытие файла
Load …
Ctrl+L
Загрузка конструкций из файла.
Load Batch
Edit
Назначение команды
Cut
Исполнение пакетного файла
Ctrl+X
Вырезка фрагмента
Ctrl+C
Копирование фрагмента
Ctrl+V
Вставка строки из буфера обмена
Reset
Ctrl+U
Инициализация конструкций
Run
Ctrl+R
Запуск на выполнение
Step
Ctrl+T
Выполнение одного шага вывода
Copy
Paste
Execution
Browse
Window
Module
Defrule Manager
Deffacts Manager
Отображает модуль
Facts Window
Активизация окна списка фактов
Agenda Window
Активизация окна агенды Очищает окно с
Clear dialog window
командной строкой
Менеджер правил
Менеджер фактов

6. Основные команды при работе со средой CLIPS

load – загрузка конструкторов из текстового файла;
load+ – загрузка конструкторов из текстового файла без отображения;
reset – сброс рабочей памяти системы CLIPS;
clear – очистка рабочей памяти системы;
run – выполнение загруженных конструкторов;
save – сохранение созданных конструкторов в текстовый файл;
exit – выход из CLIPS.

7. Основные конструкции в CLIPS

8. Факты

список неделимых (или атомарных) значений примитивных типов данных
В системе CLIPS фактом является список неделимых (или атомарных)
значений примитивных типов данных, заключенный в скобки.
Например:
(life is good)
(power failed 22 minutes)
(temperature 10)
(model “OPEL Omega”)
идентификатора факта — f–<fact- index>

9. Факты

Следующие символьные обозначения зарезервированы и не могут быть
использованы в качестве первого поля в любых фактах: test, and, or, not,
declare, logical, object, exists и проч.

10.

Факты
Для того чтобы иметь возможность наблюдать процесс добавления удаления
или изменения фактов необходимо вызвать пункт меню Execution – Watch и
установить флажок напротив пункта «Facts.

11. Функция assert

(assert <факт> <факт> <факт>)
Проверить текущее состояние списка фактов можно либо
посредством ввода в диалоговом окне команды (facts), либо
вызвав пункт меню Window – 1 Fact. Во втором случае
откроется окно со списком фактов

12. Пример assert

В режиме командной строки создать список из 3-х упорядоченных фактов вида:
(vedomost <name> <gruppa> <ocenka>)

13. Функция retract

(retrасt <определение-факта> <определение-факта>
...)
(retrасt *)

14. Пример retract

15. Конструктор deffacts

(deffacts <имя_списка_фактов>
<факт>

<факт>
)
;; имя первого списка фактов
(deffacts today
(today is Sunday)
(weather is warm) )
;; имя второго списка фактов
(deffacts tomorrow
(tomorrow is Monday)
(weather is warm) )

16. Конструктор deftemplate

(deftemplate <имя шаблона>[«строка комментариев»])
(<Определение_слота>)
…………………..
(< Определение_слота >)
Итак <определение слота>, в простом случае состоит из:
• ключевого слова slot или multislot, определяющего тип слота;
• имени слота, которое является значением типа symbol.
• необязательного ограничения на тип значения, хранимого в слоте.
<Определение слота> =
( Slot / multislot <имя_слота>)

17. Конструктор deftemplate

18. Пример assert

19. Пример

File->Load
(modify 2 (date 12-021985))

20.

(duplicate 1 (name Sidorov))

21. Правила

для представления эвристик или так называемых "эмпирических правил",
которые определяют набор действий, выполняемых при возникновении
некоторой ситуации
(defrule <имя_правила> [<необязательный_комментарии>]
[<необязательное_определение_свойства_правила>]
<предпосылки >
; левая часть правила
=>
; спец. символ
<следствие>
; правая часть правила
)
Определение свойства правила
<определение-свойства-правила> =
(declare <свойство-правила>)
<свойство-правила> =
(salience <целочисленное выражение>)
или
(auto-focus <логическое выражение>)

22. Правила

произвольно выбранное имя правила
(defrule chores "Things to do on Sunday"
(salience 10)
предпосылки
(today is Sunday)
(weather is warm) =>
(assert (wash car))
(assert (chop wood) )
Следствие

23. Пример

24. Использование образцов в правилах

Образец состоит из списка ограничений полей, групповых символов (wildcards) и
переменных, которые используются для поиска множества фактов, соответствующих желаемому
образцу. Таким образом, образец как бы определяет маску, которой должны соответствовать
факты. Если в списке фактов найден факт, соответствующий ограничениям, то условный элемент
считается удовлетворенным.
Ограничения полей – это набор ограничений, которые используются для проверки
простых полей или слотов объектов. Ограничения полей могут состоять только из одного
символьного ограничения, однако, несколько ограничений можно соединять вместе. В дополнение
к символьным ограничениям, CLIPS поддерживает три других типа ограничений: объединяющие
ограничения, предикатные ограничения и ограничения, возвращающие значения.
Символьные ограничения – это ограничения, определяющие точное соответствие
между полями факта и образцом. Символьное ограничение полностью состоит из констант, таких
как вещественные и целые числа, значения типа symbol, строки или имена объектов

25. Групповые символы

Групповой символ для простого поля записывается с помощью знака ?,
который соответствует одному любому значению, сохраненному в
заданном поле.
Групповой символ составного поля записывается с помощью знака $? и
соответствует последовательности значений, сохраненной в составном
поле.

26. Глобальные переменные

( defglobal
?*имя_переменной* = <выражение>

[?*имя_переменной* = <выражение>]
)
Пример использования:
(defglobal
?*x* = 3
?*y* = ?*x*
?*z* = (+ ?*x* ?*y*)
?*d* = 7.8
?*e* = ”string”
?*f* = symbol
)
Для присвоения значения переменной в процессе
выполнения используется функция bind.
(bind <имя-переменной> <выражение>)
Пример использования:
(bind ?*x* symbolvalue)
(bind ?*y* (+ 6 8 1) )
(bind ?*z* “string value” )

27. Глобальные переменные

28. Пользовательские функции

(deffunction <имя-функции> [<необяз-комментарий>]
<обязательные-параметры> [<групповой-параметр>]
<действия>
)
(deffunction PrintOneArgument (?a)
(printout t ?a crlf)
)
PrintOneArgument – имя функции,
(?a) – один принимаемый аргумент,
(printout t ?a crlf) – тело функции, состоящее
из одного вызова функции printout
Вызов данной функции из тела программы может выглядеть так:
(PrintOneArgument “Hello world”)

29. Пользовательские функции

30. ПРОЦЕДУРНЫЕ ФУНКЦИИ

1. (bind <имя-переменной>
переменных
2.
(if
- ветвление
<выражение>
<выражение>) - создание и связывание
then
<действия1>
[else<действия2>])
3. (while <условие> do <действия>) - цикл с предусловием
4. (loop-for-count <диапазон> do <действия>) - цикл с заданным числом
повторений
5. (switch <выражение> (case<выражение> then <действие>)
[(default <действие>)] - множественный выбор
6. (break) -прерывание
7. (return [<выражение>]) - прерывает выполняющуюся функцию, цикл,
правило, обработчик сообщения и т. д.
English     Русский Rules