
Міністерство освіти і науки, молоді та спорту України
Національний технічний університет України
"Київський політехнічний інститут"
Славутицька філія
Лабораторная робота
По дисциплине «Системы искусственного интеллекта»
Тема: «Изучение языка представления знаний и среды разработки экспертных систем CLIPS»
Выполнил
Студент IV курса
Федоренко Владислав
Проверил
к. пед. н., доцент
Трунова Е. В.
Славутич 2013
Цель работы
Ознакомиться с синтаксисом языка представления знаний Clips. Изучить основы разработки экспертных систем с использованием инструментальной среды Clips. Изучить основные функциональные возможности Clips.
1Краткие теоретические сведения
Язык представления знаний CLIPS (C Language Integrated Production System) разработан в Центре космических исследований в середине 1980-х годов. Среда CLIPS предназначена для построения экспертных систем (ЭС). CLIPS является продукционной системой. Основная идея состоит в представлении знаний в виде такой формы:
Правило1:
ЕСЛИ
(выполняются условия1)
ТОГДА
(выполнить действия1)
Правило2:
ЕСЛИ
(выполняются условия2)
ТОГДА
(выполнить действия2)
...
Синтаксис языка CLIPS можно разбить на три основных группы элементов, предназначенных для написания программ:
– типы данных;
– функции, использующиеся для обработки данных;
– конструкторы, предназначенные для создания таких структур языка, как факты, правила, классы и т. д.
Базовые типы данных
В CLIPS поддерживаются восемь простейших типов данных:
– integer – целые числа;
– float – числа с плавающей запятой;
– symbol – символьный тип;
– external-address – внешний адрес (значение этого типа может быть создано только посредством вызова внешней функции);
– fact-address – адрес факта (оперировать с фактом можно, используя его адрес, который представлен значением данного типа);
– instance-name – имя экземпляра (данный тип предназначен для хранения значения имени объекта, который представляет собой экземпляр определенного пользователем класса. Для представления имени используется значение типа symbol, окруженное квадратными скобками ([ и ]).);
– instance-address – адрес экземпляра (данный тип предназначен для хранения значения, представляющего адрес объекта. Значение этого типа может быть получено посредством вызова функции instance-address или в результате выполнения операции сопоставления образцов в правиле).
Функции для обработки данных
Функцией CLIPS называются предопределенные системные действия, обрабатывающие заданный набор аргументов и возвращающие некоторый результат (например, отображение информации на экране).
CLIPS предоставляет довольно большой набор функций среди которых всевозможные логические и математические функции, функции работы со строками и составными величинами, функции ввода/вывода, процедурные функции, функции для работы с методами родовых функций, функции, ориентированные на поддержку объектно-ориентированных возможностей, а также функции для работы с конструкторами.
Вызов функций в CLIPS имеет префиксную нотацию – аргументы функции всегда следуют после имени функции. При вызове имя функции вместе со всеми аргументами всегда заключается в круглые скобки. Аргументы отделяются друг от друга пробелом. Аргументами функций могут быть переменные примитивных типов, константы или вызовы других функций.
Логические функции, проверяющие отношение первого и остальных элементов: >, >=,<, <=, =, < > (неравно).
Функции булевой логики: and, or и not.
Математические функции: +, -, /, *, div (целочисленное деление), ** (вычисление степени числа), mod (остаток от деления), abs (абсолютное значение), max (максимальное числовое значение), min (минимальное числовое значение), sqrt (вычисление квадратного корня), exp (вычисление экспоненты), round (округление числа), log.
Тригонометрические функции: sin, cos, tan, cot, arctan, acos, atan и т.д.
Ниже приведены примеры использования некоторых функций:
(+ 3 (* 8 9) 4)
(* 8 (+3 (* 2 3 4) 9) (* 3 4))
(and (>= days 0) (< days 5)
Функции, не возвращающие результат и выполняющие некоторую полезную работу называются командами.
Наиболее часто используемыми командами в CLIPS являются:
сlear –предназначена для очистки рабочей памяти системы. Она удаляет все определенные в системе на текущий момент конструкторы и ассоциированные с ними данные.
exit –завершает сеанс работы пользователя с системой и закрывает CLIPS.
reset – предназначена для перезагрузки рабочей памяти системы. Она очищает текущий план решения задачи, удаляет все факты из списка фактов и объекты из списка объектов. Кроме того, она добавляет в систему предопределенный факт initial-fact, предопределенный объект initial-object и все факты, объекты и глобальные переменные, определенные пользователем с помощью конструкторов deffacts, definstances и defglobals.