Московский государственный технологический университет «Станкин»
Опубликован: 18.05.2005 | Доступ: свободный | Студентов: 4953 / 957 | Оценка: 3.93 / 3.84 | Длительность: 11:45:00
ISBN: 978-5-9556-0024-6
Специальности: Программист
Лекция 7:

Практическая разработка экспертных систем в среде CLIPS

< Лекция 6 || Лекция 7: 1234 || Лекция 8 >

Функции CLIPS описываются в книгах. Среди логических функций (возвращающих значения true или false ) следует выделить следующие группы:

  • функции булевой логики: and, or, not
  • функции сравнения чисел: =, \ne, >, \ge, <, \le
  • предикативные функции для проверки принадлежности проверяемому типу: integerp, floatp, stringp, symbolp, pointerp (относится ли аргумент к xternal-address ), numberp (относится ли аргумент к integer или float ), lexemerp (относится ли аргумент к string или symbol ), evenp (проверка целого на четность), oddp (проверка целого на нечетность), multifildp (является ли аргумент составным полем).
  • Функции сравнения по типу и по значению: eq, neq

Среди математических функций следует выделить следующие группы:

  • Стандартные: +, -, *, /, max, min, div (целочисленное деление), abs (абсолютное значение), float (преобразование в тип float ), integer (преобразование в тип integer )
  • Расширенные: sqrt (извлечение корня), round (округление числа), mod (вычисление остатка от деления)
  • Тригонометрические: sin, sinh, cos, cosh, tan, tanh, acos, acosh, acot, acoth, acsc, acsch, asec, asech, asin, asinh, atan, atanh, cot, coth, csc, csch, sec, sech, deg-grad (преобразование из градусов в секторы), deg-rad (преобразование из градусов в радианы), grad-deg (преобразование из секторов в градусы), rad-deg (преобразование из радиан в градусы)
  • Логарифмические: log, log10, exp, pi

Среди функций работы со строками следует назвать функции:

str-cat объединение строк,
sym-cat объединение строк в значение типа symbol,
sub-string выделение подстроки,
str-index поиск подстроки,
eval выполнение строки в качестве команды CLIPS,
build выполнение строки в качестве конструктора CLIPS,
upcase преобразование символов в символы верхнего регистра,
lowcase преобразование символов в символы нижнего регистра,
str-compare сравнение строк,
str-length определение длины строки,
check-syntax проверка синтаксиса строки,
string-to-field возвращение первого поля строки.

Функции работы с составными величинами являются одной из отличительных особенностей языка CLIPS. В их число входят:

create$ создание составной величины,
nth$ получение элемента составной величины,
members поиск элемента составной величины,
subset$ проверка одной величины на подмножество другой,
delete$ удаление элемента составной величины,
explode$ создание составной величины из строки,
implode$ создание строки из составной величины,
subseq$ извлечение подпоследовательности из составной величины,
replace$ замена элемента составной величины,
insert$ добавление новых элементов в составную величину,
first$ получение первого элемента составной величины,
rest$ получение остатка составной величины,
length$ определение числа элементов составной величины,
delete-member$ удаление элементов составной величины,
replace-member$ замена элементов составной величины.

Функции ввода-вывода используют следующие логические имена устройств:

stdin устройство ввода,
stdout устройство вывода,
wclips устройство, используемое как справочное,
wdialog устройство для отправки пользователю сообщений,
wdisplay устройство для отображения правил, фактов и т.,п.,
werror устройство вывода сообщений об ошибках,
wwarning устройство для вывода предупреждений,
wtrase устройство для вывода отладочной информации,

Собственно функции ввода-вывода следующие:

open открытие файла (виды доступа r, w, r+, a, wb ),
close закрытие файла,
printout вывод информации на заданное устройство,
read ввод данных с заданного устройства,
readline ввод строки с заданного устройства,
format форматированный вывод на заданное устройство,
rename переименование файла,
remove удаление файла.

Среди двух десятков команд CLIPS следует назвать основные команды при работе со средой CLIPS:

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

В рамках нашего краткого описания опустим список функций для работы с методами родовых функций и список функций для работы с классами, объектами, слотами, обработчиками сообщений. С этим можно ознакомиться по документации. Список сообщений об ошибках приведен в [ 7.4 ] .

В завершение следует иметь в виду, что CLIPS может не удовлетворительно работать в реальном времени, когда потребуется время реакции менее 0,1 сек.В этом случае надо исследовать на разработанном прототипе механизмы вывода для всего множества правил предметной области на различных по производительности компьютерах. Как правило, современные мощные компьютеры Intel обеспечивают работу с продукционными системами объемом 1000--2000 правил в реальном времени. Веб-ориентированные средства на базе JAVA (системы Exsys Corvid, JESS) являются более медленными, чем, например, CLIPS 6.0 или OPS-2000. Поэтому CLIPS - лучший на сегодня выбор для работы в реальном времени среди распространяемых свободно оболочек ЭС, разработанных на C++.

< Лекция 6 || Лекция 7: 1234 || Лекция 8 >
Дмитрий Черепанов
Дмитрий Черепанов

Неоднократно находил ошибки в тестах, особенно в экзаменационных вопросах, когда правильно данный ответ на вопрос определялся в итоге как не правильно отвеченный... Из-за этого сильно страдает конечный бал! Да еще в заблуждение студентов вводит! Они-то думают, что это они виноваты!!! Но они тут не причем! Я много раз проверял ответы на некоторые такие "ошибочные" вопросы по нескольким источникам - результат везде одинаковый! Но ИНТУИТ выдавал ошибку... Как это понимать?

Из-за подобных недоразумений приходиться часами перерешивать экзамен на отличную оценку...!!!

Исправьте, пожалуйста, такие "ошибки"...

Анжелика Шлома
Анжелика Шлома

Огромная просьба сделать проще тесты, это просто ужас какой-то! Слишком сложно!