Разделы презентаций


Интеллектуальные информационные системы

Содержание

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 1 Краткая история и характеристика CLIPSНазвание языка CLIPS - аббревиатура от C Language Integrated Production System. Язык был разработан в Центре космических исследований

Слайды и текст этой презентации

Слайд 1 Интеллектуальные информационные системы
Т.Ф. Лебедева
КАФЕДРА ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ И ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

КемИ РГТЭУ

Интеллектуальные информационные системыТ.Ф. ЛебедеваКАФЕДРА ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ И ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ   КемИ РГТЭУ

Слайд 2ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
1 Краткая история

и характеристика CLIPS
Название языка CLIPS - аббревиатура от C Language

Integrated Production System.
Язык был разработан в Центре космических исследований NASA (национальное Аэрокосмическое Агентство США)
СLIPS является одним из распространенных инструментальных средств разработки экспертных систем (ЭС).
Первая версия системы вышла в 1984 году и представляла собой интерпретатор порождающих правил. Процедурный язык и объектно-ориетированное расширение CLIPS были включены в этот программный продукт только в 1990–х годах. Существующая в настоящее время версия может эксплуатироваться на платформах UNIX, DOS, Windows и Macintosh. Она является хорошо документированным общедоступным продуктом
(адрес в Интернет - http://www.cosmic.uga.edu/) и доступна по сети FTP.

120

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 1 Краткая история и характеристика CLIPSНазвание языка CLIPS -

Слайд 3ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
1 Краткая история

и характеристика CLIPS
Данная система полностью реализована на языке С. Причем

исходные тексты ее программ опубликованы в сети Интернет.
В СLIPS используется оригинальный LISP-подобный язык программирования, ориентированный на разработку ЭС. Кроме того, СLIPS поддерживает еще две парадигмы программирования: объектно-ориентированную и процедурную.
Аспекты объектно-ориентированного программирования в СLIPS нами рассматриваться не будут.
Широкое распространение системы CLIPS объясняется тем, что CLIPS представляет собой комбинацию продукционного и объектно-ориентированного и фреймового подходов и обладает следующими ее преимуществами:
относительная дешевизна
использование множества опробованных на практике конструкций из других инструментальных средств
наличие четко сформулированного синтаксиса, позаимствованного у LISP
высокая производительность
возможность использования внешних функций, написанных на других языках программирования
включение средств, позволяющих комбинировать правила и объекты.

121

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 1 Краткая история и характеристика CLIPSДанная система полностью реализована

Слайд 4ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
1 Краткая история

и характеристика CLIPS
СLIPS использует продукционную модель представления знаний и содержит

три основных элемента:
1. базу фактов
2. базу правил
3. блок вывода.
База фактов представляет исходное состояние проблемы. Блок вывода CLIPS сопоставляет факты и правила и выясняет, какие из правил можно активизировать. Это выполняется циклически, причем каждый цикл состоит из трех шагов:
сопоставление фактов и правил;
выбор правила, подлежащего активизации;
выполнение действий, предписанных правилом.
Такой трехшаговый циклический процесс называют «циклом распознавание – действие».

122

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 1 Краткая история и характеристика CLIPSСLIPS использует продукционную модель

Слайд 5ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
2 Основные элементы

программирования: простые типы данных
Простые типы данных:
Integer

external address - внешние адреса
Float fact – address - адреса факты
Symbol instance –name - имена объектов
String instance –address - адреса объектов

Для представления числовой информации используются типы flоаt и integer, символьной - symbol, string . Остановимся на рассмотрении этих четырех типов данных.
При записи числа могут использоваться только цифры (0-9), десятичная точка (.), знак (+) или (-) и (е) при экспоненциальном представлении.
Число сохраняется либо как целое, либо как действительное. Любое число, состоящее только из цифр, перед которыми может стоять знак, сохраняется как целое (тип integer представляется внутри СLIPS как тип языка С lоng integer ). Все остальные числа сохраняются как действительные (flоаt - С double flоаt).
Количество значащих цифр зависит от аппаратной реализации. В этой же связи могут возникать ошибки округления.
Как в любом языке программирования, особенную осторожность необходимо проявлять при сравнении чисел с плавающей точкой, а также при сравне­нии с ними целых чисел.
Примеры целых чисел: 237 15 +12 -32
Примеры чисел с плавающей точкой: 237е3 15.09 +12.0 -32.3е-7

123

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 2 Основные элементы программирования: простые типы данныхПростые типы данных:Integer

Слайд 6ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
2 Основные элементы

программирования: простые типы данных

Последовательность символов, которая не удовлетворяет числовым типам,

обрабатывается как тип данных symbol.
Тип данных symbol в СLIPS - последовательность символов, состоящая из одного или нескольких любых печатных символов кода АSСII. Как только в последовательности символов встречается символ-разделитель, данное типа symbol заканчивает­ся.
Следующие символы служат разделителями:
любой непечатный АSСII символ (включая пробел, символ табуляции, СR, LF),
двойные кавычки
( ) & | < ~ ;
Символы-разделители не могут включаться в данные типа symbol за исключением символа "<", который может быть первым символом в данных типа symbol.
Данные типа symbol не могут начинаться с символа "?" или последовательности символов "$?", поскольку эти символы зарезервированы для переменных.
Заметим, что СLIPS различает регистр символов.
Ниже приведены примеры выражений символьного типа:
foo Не11о В76-Н1 bao_value 127А 742-42-42 @+=-%

124

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 2 Основные элементы программирования: простые типы данныхПоследовательность символов, которая

Слайд 7ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
2 Основные элементы

программирования

Тип данных string - это последовательность символов, состоящая из

нуля и более печатных символов и заключенная в двойные кавычки.
Если внутри строки встречаются двойные кавычки, то перед ними необходимо поместить символ (\). То же справедливо и для самого (\).

Примеры: "fоо" "а аnd. b" "1 number" "а\"quote"

Отметим, что строка "аbсd" не тоже самое, что аbсd. Они содержат одинаковые наборы символов, но являются экземплярами различного типа.

Не допускается использование букв русского алфавита.

125

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 2 Основные элементы программирования Тип данных string - это

Слайд 8ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
2 Основные элементы

программирования: функции

Под функцией в СLIPS понимается фрагмент исполняемого кода,

с которым связано уникальное имя и который возвращает полезное значение или имеет полезный побочный эффект (например, вывод информации на экран).
Существует несколько типов функций:
Пользовательские
Системные
Внешние.
Пользовательские функции определены программистом с помощью конструктора Deffunction.
Системные функции – те функции, которые были определены изначально внутри среды СLIPS .
Внешние функции – функции, которые были определены вне СLIPS и написаны на других языках.

126

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 2 Основные элементы программирования: функции Под функцией в СLIPS

Слайд 9ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
2 Основные элементы

программирования: функции
Хотя СLIPS и не ориентирована на численные вычисления,

в ней предусмотрен ряд стандартных арифметических и математических функций:
+ - сложение, - вычитание;
* - умножение, / - деление;
** - возведение в степень;
div – целочисленное деление, мod - остаток от целочисленное деления;
abs определение абсолютного значения;
Sqrt вычисление квадратного корня;
мin - нахождение минимума, мax - нахождение максимума;
cos, sin, tan –тригонометрические функции синус, косинус, тангенс;
acos, asin, atan - арксинус, арккосинус, арктангенс;
pi – получение числа π;
exp – вычисление экспоненты;
log, log10 – вычисление натурального и десятичного логарифмов;
deg-rad, rad-deg – преобразование из градусов в радианы и наоборот;
round – округление числа.

127

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 2 Основные элементы программирования: функции Хотя СLIPS и не

Слайд 10ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
2 Основные элементы

программирования: функции
Вызовы функций в СLIPS имеют префиксную форму: аргументы

функции могут стоять только после ее названия.
Синтаксис вызова функции:
(имя аргумент1 аргумент2 аргумент3 …..).
Аргументами могут быть данные простых типов, переменные или вызовы других функций.
Аргументы отделяются друг от друга одним или несколькими пробелами.
Примеры вызовов функций:
Запись в среде CLIPS Обычная запись
(+ 3 4 5) (3+4+5)
(* 5 6.0 2) (5*6.0*2)
(+ 3 (* 8 9) 4) (3+8*9+4)
(* 8 (+ 3 (* 2 3 4) 9) (* 3 4) ) (8* (3+(2*3*4)+9)*(3*4))
(Sqrt (+ 10 6) ) Sqrt(10+6)
( log10 100) lg100

128

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 2 Основные элементы программирования: функции Вызовы функций в СLIPS

Слайд 11ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
2 Основные элементы

программирования: конструкторы
В СLIPS существует несколько описывающих конструкторов:
defmodule, defrule,

deffacts, deftemplate, defglobal, deffunction, defclass, definstances, defmessage-handler, defgeneric.
При записи все они заключаются в скобки. Определение конструктора отличается от вызова функции по производимому эффекту. Обычно вызов функции оставляет состояние среды CLIPS без изменений (за исключением, когда речь идет о функциях сброса, очистки, открытия файла и т.п.).
Определение конструктора, напротив, в точности направлено на изменение состояния среды путем внесения изменений в базу знаний CLIPS.
В отличие от функций конструкторы никогда не возвращают значений.
Все конструкторы (за исключением defglobal ) позволяют размещать комментарии сразу вслед за именем конструкции. Комментарии внутри конструктора заключены в двойные кавычки.
Кроме того, комментарии могут вставляться в код CLIPS при помощи точки с запятой (;). Все, что следует за (;) до конца строки, будет игнорироваться CLIPS. Если (;) стоит первым символом в строке, то вся строка считается комментарием.

129

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 2 Основные элементы программирования: конструкторыВ СLIPS существует несколько описывающих

Слайд 12ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
3 Факты: представление

фактов
Факты являются одной из основных форм представления информации в

системе CLIPS и представляют единицу данных, используемую правилами.
Каждый факт представляет фрагмент информации, который был помещен в текущий список фактов, называемый fact-list (рабочая память).
Количество фактов в списке и объем информации, который может быть сохранен в факте, ограничивается только размером памяти компьютера.
Если при добавлении нового факта к списку обнаруживается, что он полностью совпадает с одним из уже включенных в список фактов, то эта операция игнорируется (хотя такое поведение можно изменить).
Факт может описываться индексом или адресом.
Когда факт добавляется (изменяется), ему присваивается уникальный целочисленный индекс.
Индексы фактов начинаются с нуля и для каждого нового или измененного факта увеличиваются на единицу.
Каждый раз после выполнения команд reset и clear выделение индексов начинается с нуля.
Команда reset добавляет в список фактов initial- fact.
Факт также может задаваться при помощи адреса. Адрес факта может быть получен путем сохранения возвращаемого значения команд, которые возвращают в качестве результата адрес факта (таких как assert, modify и duplicate), или путем связывания переменной с адресом факта в левой части правила.

130

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 3 Факты: представление фактов Факты являются одной из основных

Слайд 13ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
3 Факты: представление

фактов
Идентификатор факта - это короткая запись для отображения факта

на экране. Она состоит из символа f и записанного через тире индекса факта.
Например, запись f-10 служит для обозначения факта с индексом 10 (первый факт имеет индекс f-0).
Существует два формата представления фактов:
Позиционный.
Непозиционный (шаблонный – фреймовый).
Позиционные факты в общем виде представляются:
<позиционный_факт>::=(данные_типа_symbol [поле]*).
Позиционные факты состоят из выражения типа symbol, за которым следует последовательность (возможно пустая) из полей, разделенных пробелом.
Вся запись заключается в скобки.
Первое поле (Symbol) определяет отношение или связь, которая применяется к оставшимся полям.
Примеры:
(altitude is 1000 feet)
(grocery–list bread milk eggs)
(schoolboys is Bob Mike)
Следующие символьные выражения зарезервированы и не могут быть использованы как первое поле позиционного факта:
test, and, or, not, declare, logical, object, exists, forall.

131

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 3 Факты: представление фактов Идентификатор факта - это короткая

Слайд 14ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
3 Факты: представление

фактов
Непозиционные факты (шаблонные или фреймовые) факты дают возможность пользователю

абстрагироваться от структуры факта, задавая имена каждому из полей факта, называемых слотами.
Для задания шаблона, который затем может использоваться при доступе к полям по именам, используется конструктор deftemplate .
В общем виде конструктор Deftemplate имеет вид:

(Deftemplate [“комментарий”]
<определение слота>*)
< определение слота>::=(slot <имя_слота> [(<тип_поля>) (<значение по умолчанию>)])
<тип поля>::=(type <стандартный тип >)
<значение по умолчанию>::=(default <значение>)

Все имена шаблонов и слотов имеют тип symbol.

132

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 3 Факты: представление фактов Непозиционные факты (шаблонные или фреймовые)

Слайд 15ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
3 Факты: представление

фактов

Пример:
(deftemplate student “student record”
(slot name (type string))
(slot

age (type integer) (default 18)))

Приведем примеры фактов, созданных по этому шаблону:
(student (name “Fred”)
(student (name “Din”) (age 19))

В первом факте возраст будет задан по умолчанию, равным 18.

133

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 3 Факты: представление фактов Пример:(deftemplate  student  “student

Слайд 16ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
3 Факты: представление

фактов
Как и все конструкторы CLIPS, конструктор Deftemplate не возвращает

никакого значения.
Для просмотра всех определенных в текущей базе знаний шаблонов можно воспользоваться командой get-deftemplate-list или специальным инструментом Deftemplate Manager (Менеджер шаблонов).
Для запуска менеджера шаблонов воспользуйтесь меню Browse и выберите пункт Deftemplate Manager.
Менеджер шаблонов позволяет:
в отдельном окне просматривать список всех шаблонов, доступных в текущей базе знаний;
выводить в главное окно среды определение выбранного шаблона с помощью команды Pprint;
удалять выбранный шаблон с помощью команды Remove.

134

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 3 Факты: представление фактов Как и все конструкторы CLIPS,

Слайд 17ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
3 Факты: представление

фактов
Система CLIPS различает шаблонные от позиционных фактов по первому

полю факта.
Первое поле любого факта является значением типа symbol. Если это значение соответствует имени некоторого шаблона, то факт – шаблонный (непозиционный).
Порядок слотов в непозиционных слотах значения не имеет.
Примеры различных фактов:
(client (name “Brown”) (id x9334A))
(point –mass (x-velocity 100) (y-velocity -200))
(class (teacher “Martina Jones”) (#-students 30) (room “37”))

Непозиционные факты удобны для описания стереотипных структур и ситуаций.

135

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 3 Факты: представление фактов Система CLIPS различает шаблонные от

Слайд 18ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
3 Факты: манипуляция

над фактами
Набор фактов может задаваться с помощью конструктора deffacts,

который позволяет определить список из любого количества любых фактов и присвоить ему имя.
Список фактов будет автоматически добавляться всякий раз после выполнения команды reset, очищающий текущий список фактов. Кроме того, по этой команде в список фактов заносится исходный факт (initial-fact). Этот факт включается в список фактов всегда с идентификатором f-0.
В общем виде конструктор deffacts имеет вид:
(deffacts < имя-набора фактов> [“комментарий”]
(<факт>*))
Имя набора фактов должно быть значением типа symbol.
Можно определить с помощью конструктора deffacts множество исходных или априорных фактов.
Факты в наборе могут быть позиционные и непозиционные.

136

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 3 Факты: манипуляция над фактами Набор фактов может задаваться

Слайд 19ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
3 Факты: манипуляция

над фактами
Примеры записи конструктора deffacts:
1. (deffacts walk “Some facts

about walking”
(status walking)
(sun is shine)
(walk-sing walk))

2. (deffacts students
(student (name “Fred”))
(student (name “Din”) (age 19))
(class is 14B ))

3. (deffacts startup “Refrigerator status”
(refrigerator light on)
(refrigerator door open)
(refrigerator temp (+5 10 15)))

137

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 3 Факты: манипуляция над фактами Примеры записи конструктора deffacts:1.

Слайд 20ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
3 Факты: манипуляция

над фактами
Набор фактов, определенных конструктором deffacts можно удалить командой

undeffacts:
(undeffacts < имя-набора фактов> )
Например, команда (undeffacts walk ) удалит весь набор фактов из примера 1.
Проверить работу конструктора deffacts можно воспользовавшись диалогом Watch Options, выбрав пункт Watch меню Execution.
В диалоговом окне Watch Options включите режим просмотра изменения списка фактов, поставив галочку в поле Facts. CLIPS предоставляет также визуальный инструмент для манипуляции с определенными в данный момент конструкторами deffacts – Deffacts Manager.
Для запуска Deffacts Manager воспользуйтесь меню Browse и выберите пункт Deffacts Manager.

138

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 3 Факты: манипуляция над фактами Набор фактов, определенных конструктором

Слайд 21ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
3 Факты: манипуляция

над фактами

Факты могут
добавляться к списку фактов (с помощью

команды assert), удаляться из него (с помощью команды retract),
изменяться (с помощью команды modify)
дублироваться (с помощью команды duplicate) самим пользователем или программой.
Добавить факты в список фактов текущей базы фактов можно также с помощью команды assert.
Приведем общий вид команды:
(assert <факт>*)
Пример:
(assert (cat is gray) (value(+7 8)))
В случае удачного добавления фактов в базу данных, функция assert возвращает индекс последнего добавленного факта.
Если во время добавления произошла ошибка, то команда прекращает свою работу и возвращает значение false.
Слотам непозиционных фактов, значения которых не заданы, при добавлении будут присвоены значения по умолчанию.

139

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 3 Факты: манипуляция над фактами Факты могут добавляться к

Слайд 22ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
3 Факты: манипуляция

над фактами

Удаление факта выполняется командой refract:
(retract * |

* )
<определение-факта>::=<переменная, связанная с адресом с помощью правила>|<индекс факта без префикса f> .
* - удаляются все факты из списка фактов.

Примеры:
(retract 2) – удаляется факт с индексом 2
(retract *) – удаляются все факты из базы фактов
(retract 0 (+ 2 2) ) - удаляются факты с индексами 0 и 4.

140

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 3 Факты: манипуляция над фактами Удаление факта выполняется командой

Слайд 23ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
3 Факты: манипуляция

над фактами

Непозиционные факты можно изменять с помощью команды modify:
(modify

<определение-факта><новое-значение-слота>*)
Аргументом <определение-факта> может быть либо переменная, связанная с адресом с помощью правила, либо индекс факта без префикса f, например, 3 для факта с индексом f-3.
После определения факта следует список из одного или более новых значений слотов указанного шаблона.

Пример изменения существующего непозиционного факта:
(deftemplate temp (slot value))
(assert (temp (value low)))
(modify 0 (value high))

141

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 3 Факты: манипуляция над фактами Непозиционные факты можно изменять

Слайд 24ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
3 Факты: манипуляция

над фактами

Функция duplicate создает новый непозиционный факт заданного шаблона

и копирует в него определенную пользователем группу полей уже существующего факта того же шаблона.
По действиям, которые выполняет функция duplicate, она аналогична modify, за исключением того, что duplicate не удаляет старый факт из списка фактов.
Синтаксис команды duplicate:
(duplicate <определение-факта> <новое-значение-слота>*)
Значение аргументов здесь те же самые, что и для команды modify.

142

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 3 Факты: манипуляция над фактами Функция duplicate создает новый

Слайд 25ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
3 Факты: манипуляция

над фактами
Пример создания копии существующего непозиционного факта:
(deftemplate car

(slot name)
(slot producer)
(slot type)
(slot max-speed))
(assert (car
(name scorpio)
( producer ford)
( type sedan)
( max-speed 180)))
(duplicate 0
( type off-road)
( max-speed 130))

143

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 3 Факты: манипуляция над фактами Пример создания копии существующего

Слайд 26ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
3 Факты: манипуляция

над фактами

Наполнение списка фактов в CLIPS довольно кропотливое и

длительное занятие, поэтому система предоставляет команды сохранения и загрузки списка фактов в файл – save-facts и load-facts соответственно.
Синтаксис команды save-facts:
(save-facts <имя-файла>[ < границы-видимости > <список шаблонов>])
< границы-видимости >::=visible | local
Команда save-facts сохраняет факты из текущего списка фактов в текстовый файл. На каждый факт отводится одна строчка. Непозиционные факты сохраняются вместе с именами слотов. По умолчанию аргумент <границы-видимости> принимает значение local, т.е. сохраняются факты только из текущего модуля.
Пример использования функции save-facts:
(clear)
(deftemplate t
(slot a)
(slot b))
(assert ( t (a 1) (b 2)))
(save-facts f1 t)
Синтаксис команды load-facts:
( load-facts <имя-файла>)

144

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 3 Факты: манипуляция над фактами Наполнение списка фактов в

Слайд 27ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
4 Правила: общая

структура правила
Правило состоит из двух частей: антицедента (условия), который является

аналогом условия в If-then операторе и записывается слева, и консеквента (заключения), который является аналогом then части этого оператора и записывается справа.
Левая часть правила представляет собой ряд условий (условных элементов-УЕ), которые должны выполняться, чтобы правило было применимо.
В СLIPS принято считать, что условие выполняется, если соответствующий ему факт присутствует в списке фактов. Одним из типов условных элементов может быть образец.
Образцы состоят из набора ограничений, которые используются для описания того, какие факты удовлетворяют условию, определяемому образцом.
Процесс сопоставления фактов и образцов выполняется блоком вывода СLIPS , который автоматически сопоставляет образцы, исходя из текущего состояния списка фактов, и определяет, какие из правил являются применимыми. Если все условия правила выполняются, то оно активируется и помещается в список активированных правил.

145

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 4 Правила: общая структура правилаПравило состоит из двух частей:

Слайд 28ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
4 Правила: общая

структура правила
Правая часть правила представляет собой совокупность действий, которые должны

быть выполнены, если правило применимо. Действия, описанные в применимых правилах, выполняются тогда, когда блок вывода СLIPS получает команду начать выполнение применимых правил.
Если существует множество применимых правил, то для того, чтобы выбрать правило, действия которого должны быть выполнены, блок вывода использует стратегию разрешения конфликтов.
Действия, описанные в выбранном правиле, выполняются (при этом список применимых правил может измениться), а затем блок вывода выбирает другое правило и т.д. Этот процесс продолжается до тех пор, пока не остается ни одного применимого правила, т.е. пока список активированных правил не окажется пуст.

146

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 4 Правила: общая структура правилаПравая часть правила представляет собой

Слайд 29ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
4 Правила: общая

структура правила
Для определения правил используется конструктор defrule:
(defrule [“ комментарий"]
[

<определение-свойства-правила>]
[<предпосылки>] ; левая часть правила
=>
<следствие> ) ; правая часть правила
Имя правила должно быть значением типа symbol, в качестве имени нельзя использовать зарезервированные слова.
<определение-свойства-правила>::=(declare <свойство-правила>)
<свойтсво-правила>::=(Salience<целочисленное_выражение>)|(auto-focus true |false)
Целочисленное выражение свойства Salience задает приоритет, его значение находится в интервале -10000…10000, свойство влияет на стратегию разрешения конфликта.
По умолчанию принимается значение 0.
Свойство auto-focus позволяет автоматически выполняться команде focus, передающей управление модулю, из которого извлечено данное правило, при каждой активации правила. Если свойство auto-focus установлено в значение true , то команда focus в модуле, в котором определено данное правило, автоматически выполняется при каждой активации правила, в противном случае никаких действий не производится. По умолчанию принимается значение false.

147


Слайд 30ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
4 Правила: общая

структура правила
Пример правила:
(defrule vacation


(work done) ; 1 посылка
(money plenty) ; 2 посылка
(reservations made) ; 3 посылка
=>
(printout t “Let’s go!” crlf)) ; заключение или действие – вывод сообщения.

CLIPS предоставляет также визуальный инструмент для манипуляции с определенными в данный момент конструкторами defrule – Defrule Manager. Для запуска Defrule Manager воспользуйтесь меню Browse и выберите пункт Defrule Manager.

148

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 4 Правила: общая структура правилаПример правила:(defrule vacation

Слайд 31ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
4 Правила: общая

структура правила
Пример правила системы MYCIN, записанного на языке СLIPS:
(defrule diagnosis


(patient (name Jones) (organism organism-1)) ;если у пациента Джона обнаружен организм-1
(organism (name organism-1) (morphology rod) ; и организм-1 имеет ; форму палочки и
(aerobicity aerobic)) ;является аэробным (воздушная среда ; способствует его росту)
=>
(assert (organism (name organism-1) ; то добавить факт, что с ;уверенностью 0.8 этот
(identify enterobacteriaceae) ; микроорганизм относится к ;классу
(confidence 0.8))) ; enterobacteriaceae

149

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 4 Правила: общая структура правилаПример правила системы MYCIN, записанного

Слайд 32ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
4 Правила: переменные
Как

и в других языках программирования, в СLIPS для хранения значений

используются переменные.
Идентификатор переменной всегда начинается с вопросительного знака, за которым следует ее имя. В общем случае формат переменной выглядит следующим образом:
?<имя-переменной >
Примеры переменных:
?х ?sensor ?noun ?соlоr
Имя переменной имеет тип symbol. Перед использованием переменной ей необходимо присвоить значение.
Все переменные могут быть локальными или глобальными. Все переменные, кроме глобальных, считаются локальными и могут использоваться только в рамках описания конструктора. К этим локальным переменным можно обращаться внутри описания, но они не определены вне него.

150

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 4 Правила: переменныеКак и в других языках программирования, в

Слайд 33ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
4 Правила: переменные
Глобальные

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

(defglobal [<имя-модуля>] <определение- переменной>* )
<определение-переменной>::= <имя-переменной>=<выражение>
<имя_переменной>::=? *<Значение-типа-symbol>*
Пример:
(defglobal ?*y*=5 ?*color*=red)
К глобальной переменной можно обратиться в любом месте, и ее значение остается независимым от других конструкций. Глобальные переменные CLIPS подобны глобальным переменным в процедурных языках программирования, но они значительно слабее типизированы (на них не налагается ограничения хранения данных только одного типа).

151

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 4 Правила: переменныеГлобальные переменные определены внутри модуля и задаются

Слайд 34ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
4 Правила: переменные
Чаще

всего локальные переменные описываются и получают значения в левой части

правила. Например:
(defrule make-quack
(quack-sound ?sound)
=>
(assert (sound is ?sound) ))
Получив значение, переменная сохраняет его неизменным при использовании как в левой, так и в правой части правила, если только это значение не изменяется в правой части при помощи функции bind.
Пример использования функции bind:
(defrule addition
(numbers ?х ?у)
=>
(assert (answer (+ ?х ?у) ) )
(bind ?answer (+ ?х ?у) )
(printout t "answer is " ?answer crlf) )

152

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 4 Правила: переменныеЧаще всего локальные переменные описываются и получают

Слайд 35ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
4 Правила: переменные
Кроме

значения самого факта, переменной может быть присвоено значение адреса факта.

Это может оказаться удобным при необходимости манипулировать фактами непосредственно из правила. Для такого присвоения используется
комбинация "<-".
Следующий пример иллюстрирует присвоение переменной значения адреса факта и ее последующее использование:

(defrule get-married
?duck <- (bachelor Dopey)
=> (retract ?duck) )

153

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 4 Правила: переменныеКроме значения самого факта, переменной может быть

Слайд 36ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
4 Правила: переменные
Пример

правила системы MYCIN, записанного на языке СLIPS с использованием переменных:
(defrule

diagnosis ;если у пациента ?pat обнаружен организм
(patient (name ?pat) (organism ?org)) ; ?org и этот ;организм имеет форму палочки и
(organism (name ?org) (morphology rod) ;является аэробным (aerobicity aerobic))
=>
(assert (organism (name ?org) ; то добавить факт, что с ;уверенностью 0.8 этот
(identify enterobacteriaceae) ; микроорганизм ?org
(confidence 0.8))) ; относится к классу enterobacteriaceae

154

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 4 Правила: переменныеПример правила системы MYCIN, записанного на языке

Слайд 37ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
4 Правила: условные

элементы в левой части правила
Левая часть правила задается набором УЕ.

Заданный набор образцов используется системой для сопоставления с имеющимися фактами и объектами. Все условия в левой части правила объединяются с помощью неявного логического оператора and.
Если левая часть правила пуста, то для его активации необходимо наличие в списке фактов исходного факта (initial-fact).
Такие безусловные правила часто используются для того, чтобы инициировать работу программы.
Поэтому перед запуском таких программ необходимо произвести сброс состояния среды СLIPS командой (reset).
Синтаксис условных элементов:
<условный-элемент>::=<образец-УЕ> |
| | | | |
|

155

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 4 Правила: условные элементы в левой части правилаЛевая часть

Слайд 38ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
4 Правила: условные

элементы в левой части правила
Образец-УЕ как бы определяет маску,

которой должны соответствовать данные, и состоит из списка ограничений полей, групповых символов (?, $) и переменных.
Условный элемент test имеет следующий синтаксис:
::=(test <вызов функции>).
Функция проверки условия test представляет собой мощное средство, при помощи которого можно сравнивать числа, переменные и строки в левой части правила. Она записывается точно так же, как и образцы. Правило может выполниться только тогда, когда наряду с совпадением всех образцов, записанных в левой части правила, справедливо и условие, описываемое в test.
Функция test имеет следующий синтаксис:
(test (аргумент-сравнения аргумент-1 аргумент-2)) ,
где аргумент-сравнения - это тот параметр, по которому сравниваются два следующих аргумента.

156

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 4 Правила: условные элементы в левой части правилаОбразец-УЕ

Слайд 39ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 4 Правила: условные

элементы в левой части правила В CLIPS существует ряд предопределенных аргументов

сравнения:

157

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 4 Правила: условные элементы в левой части правила В

Слайд 40ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
4 Правила: условные

элементы в левой части правила
Все аргументы, кроме eq и neq,

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

158

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 4 Правила: условные элементы в левой части правилаВсе аргументы,

Слайд 41ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
4 Правила: условные

элементы в левой части правила
Условный элемент or имеет следующий синтаксис:


::=(or <УЕ>*)
Пример применения УЕ or :
(defrule system-fault
(error-status unknown)
(or (temp high )
(valve broken)
(pump off))
=>
(printout t “System has a fault” crlf))
УЕ or позволяет активировать правило любым из условных элементов, объединенных с помощью or.
Синтаксис всех остальных элементов подобный синтаксису УЕ or.

159

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 4 Правила: условные элементы в левой части правилаУсловный элемент

Слайд 42ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
4 Правила: ограничения

на значения полей
Использование ограничений на значения полей позволяет ограничить

значения, принимаемые образцами в левой части правила.
Рассмотрим три вида ограничений: ~ , | и &.
Ограничение ~ действует на следующее прямо за ним значение и говорит о том, что поле не может принимать это значение. Например:
(defrule walk
(light ~ green)
=>
(printout t " Don’t walk” crlf) )
Ограничение | указывает на то, что поле может принимать одно из следующих значений. Например:
(defrule cautious
(light yellow | blinking-yellow)
=>
(printout t "Be cautious” crlf) )
Ограничение & используется только вместе с ограничениями первых двух типов и указывает на то, что должны удовлетворяться оба соединяемых при его помощи ограничения. Например:
(defrule cautious
(light ?color & yellow | blinking-yellow)
=>
(printout t "Be cautious because light is” ?color crlf) )

160


Слайд 43ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
4 Правила: использование

функций
Функции могут использоваться и в левой, и в правой

части правила.
Например:
(defrule addition
(numbers ?х ?у)
=>
(assert (answer (+ ?х ?у) ) ) )
При использовании функции в левой части правила перед ней должен стоять знак " = ", показывающий CLIPS, что следующее выражение необходимо вычислить, а не использовать буквально. Например:
(defrule addition
(numbers ?х ?у)
(stock ?ID = (sqrt (+ (** ?x 2) (** ?Y 2))))
=>
(printout t "stock ID = “ ?ID crlf) )

161


Слайд 44ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
4 Правила: использование

функций
Конструктор deffunction позволяет пользователю создавать свои функции непосредственно в

среде CLIPS. Способ вызова функции, определенной пользователем эквивалентен способу вызова внутренних функций CLIPS. Вызов функции осуществляется по имени, за которым следует список необходимых аргументов, отделенных одним или большим числом пробелов.
Синтаксис конструктора deffunction:
( deffunction <имя-функции> [“комментарий”]
<обязательные- параметры>
[<групповой-параметр>] < действия >)
<обязательные- параметры>::=(<выражение-простое-поле>*)
<групповой-параметр>::=<выражение-составное-поле>
Групповой параметр указывает, что функция может иметь переменное число аргументов. Действия – это последовательность действий или выражений, которые будут выполнены (вычислены) по порядку в момент вызова функции. Имя функции должно быть уникальным.
Конструктор deffunction должен быть объявлен до первого использования создаваемой им функции, исключение составляют рекурсивные функции.

162

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 4 Правила: использование функций Конструктор deffunction позволяет пользователю создавать

Слайд 45ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
4 Правила: использование

функций
Пример функции:
( deffunction hypotenuse (?a ?b)
(sqrt

(+ (* ?a ?a) (* ?b ?b))) )
Функция возвращает результат последнего выражения в списке. Иногда функция имеет побочные эффекты, как в приведенном ниже примере:
( deffunction init (?day)
(reset) (assert (today is ?day) )
В результате после запуска функции на выполнение командой
CLIPS> (init Sunday)
будет выполнена команда reset, и следовательно очищена база фактов, а затем в нее включен новый факт (today is Sunday).

163

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 4 Правила: использование функций Пример функции:( deffunction hypotenuse (?a

Слайд 46ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
4 Правила: использование

функций
CLIPS поддерживает также процедурную парадигму представления знаний, подобную принятой

в обычных языках программирования (С, Паскаль).
Конструктор deffunction позволяет пользователю определять новые функции. Эти новые функции могут вызываться точно так же, как и встроенные функции CLIPS. Конструктор defmodule позволяет разбивать базу знаний на части.
Также CLIPS предоставляет 9 функций, которые реализуют возможности процедурного программирования:

164

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 4 Правила: использование функций CLIPS поддерживает также процедурную парадигму

Слайд 47ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 4 Правила: использование

функций
165

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 4 Правила: использование функций165

Слайд 48ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 4 Правила: использование

функций Функции (команды) управления интерактивной средой
166

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 4 Правила: использование функций Функции (команды) управления интерактивной средой

Слайд 49ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
4 Правила: использование

функций
Все команды записываются в круглых скобках. Для команд


batch* , batch, save, load* , load задается параметр – имя файла.
Команды работы с конструктором deffacts
ppdeffacts – вывод определения конструктора в диалоговое окно. Синтаксис команды:
(ppdeffacts <имя конструктора>).
list-deffacts – вывод в диалоговое окно системы списка всех определенных конструкторов deffacts.
Undeffacts – удаление определенного конструктора, этих фактов в списке фактов не будет. Синтаксис команды: (undeffacts <имя конструктора>| *).
В случае использования символа * в качестве параметра команды будут удалены все определенные пользователем конструкторы deffacts.

167

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 4 Правила: использование функций Все команды записываются в круглых

Слайд 50ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
4 Правила: использование

функций
Команды работы с конструктором deftemplate
ppdeftemplate вывод определения конструктора в

диалоговое окно. Синтаксис команды:
(ppdeftemplate <имя конструктора>).
list-deftemplate– вывод в диалоговое окно системы списка всех определенных конструкторов deftemplate
undeftemplate – удаление определенного конструктора, этих фактов в списке фактов не будет. Синтаксис команды: (undeftemplate <имя конструктора>| * ).
В случае использования символа * в качестве параметра команда попытается удалить все определенные пользователем конструкторы deftemplate. Если выбранный конструктор используется фактом или правилом, его удаление закончится неудачей.

168

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 4 Правила: использование функций Команды работы с конструктором deftemplateppdeftemplate

Слайд 51ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
4 Правила: использование

функций
Команды работы с правилами
ppdefrule- вывод определение конструктора defrule в

диалоговое окно CLIPS. Синтаксис команды:
(ppdefrule <имя конструктора>).
list-defrules – вывод в диалоговое окно системы списка всех определенных конструкторов defrule.
undefrule – удаление определенного конструктора defrule. Синтаксис команды:
(undefrule <имя конструктора>| * ).
В случае использования символа * команда попытается удалить все определенные пользователем правила.
matches- просмотр списка набора
(matches <имя правила>)
refresh –помещение всех текущих активаций заданного правила в план решения задачи. Синтаксис команды:
(refresh <имя правила>).
agenda – вывод текущего плана решения задачи. Команда отображает в диалоговом окне все активации, содержащиеся в плане решения задачи в соответствующем порядке вместе с данными, активировавшими правила.
run – запуск цикла выполнения правил. Синтаксис команды:
(run [<целочисленное выражение >] ).
Если необязательный параметр <целочисленное выражение > является положительным, то выполнение правил прекращается после заданного числа запусков правил или в случае, если текущий план не содержит ни одной активации. Если данный параметр не указан или отрицателен, то текущий план выполняется полностью.

169

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 4 Правила: использование функций Команды работы с правиламиppdefrule- вывод

Слайд 52ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
4 Правила: использование

функций
Функции ввода-вывода
Система ввода – вывода, используемая CLIPS, называется маршрутизацией

ввода-вывода (I/O routers).
Одна из особенностей системы - это использование логических имен, которые позволяют обращаться к устройствам ввода – вывода унифицированным способом без необходимости учета особенностей конкретного устройства.
Некоторые предопределенные логические имена CLIPS:
stdin (t) - логическое имя, определяющее устройство для ввода информации от пользователя по умолчанию. Его используют функции read, readline. Его синоним - t.
stdout (t) - логическое имя, которое определяет устройство для вывода информации. Его синоним - t. Используется командами printout, format
wclips – имя устройства, которая использует справочная система CLIPS.
werror – логическое имя устройства, которое будет выводить сообщение об ошибках.
wwarning – логическое имя устройства, на котором будут выдаваться предупреждения.
wtrace – логическое имя устройства, на котором отображается отладочная информация.
Функции ввода-вывода:
open - открытие файла. Синтаксис функции:
(open <имя файла><логическое имя>[<параметр открытия>])
Возможные варианты значений параметра, определяющих способ открытия файла:
“r”- доступ только для чтения;
“w”- доступ только для записи;
“r +” – доступ для чтения и записи;
“a” – добавление только в конец файла.
Пример функции: (open “myfile.clp” writeFile “w”)

170

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 4 Правила: использование функций Функции ввода-выводаСистема ввода – вывода,

Слайд 53ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS
4 Правила: использование

функций
Функции ввода-вывода
close -закрытие файла. Параметром может быть логическое имя,

но может быть без параметров, тогда CLIPS закроет все открытые файлы.
printout - вывод информации на заданное устройство. Синтаксис функции:
(printout <логическое имя><выражение>*)
Функция printout принимает и выводит на устройство, связанное с заданным логическим именем, любое число параметров.
Каждое выражение вычисляется и выводится на соответствующее устройство без пропусков. Используемые символы:
crlf- перевод строки;
tab – горизонтальная табуляция (пропуск 8 символов);
vtab – вертикальная табуляция;
ff – переход на новую страницу.
read- ввод данных с заданного устройства. Параметром может быть логическое имя, а может быть без него.
format – форматированный вывод информации на заданное устройство.
readline – ввод строки с заданного устройства.
rename – переименование файла. Синтаксис функции:
(rename <старое- имя><новое-имя>)
remove - удаление файла. Синтаксис функции:
(remove < имя-файла>).

171

ТЕМА 4. ИНСТРУМЕНТАЛЬНОЕ СРЕДСТВО РАЗРАБОТКИ ЭКСПЕРТНЫХ СИСТЕМ СLIPS 4 Правила: использование функций Функции ввода-выводаclose -закрытие файла. Параметром

Слайд 54Контрольная работа

Контрольная работа

Обратная связь

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

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика