Функции и команды работы с фактами
(assert <RHS-pattern>) | Добавляет один или более фактов в базу фактов. Возвращает адрес последнего добавленного факта. |
(assert-string <string-expression>) | Конвертирует строку в факт и добавляет его. Возвращает адрес нового добавленного факта. |
(dependencies <fact-index-or-fact-address>) | Перечисляет все частичные условия, которые подтверждают данный факт. |
(dependents <fact-index-or-fact-address>) | Перечисляет все факты, которые подтверждаются указанным фактом. |
(duplicate <fact-index-or-fact-address> <RHS-slot>*) | Добавляет копию факта, определенного с помощью deftemplate c одним или более измененным значением слота. |
(facts [<module-name> [<start-integer-expression> [<end-integer-expression> [<max-integer-expression>]]]) | Выводит факты из базы фактов. Если <module-name> указан, только факты этого модуля выводятся, иначе выводятся факты текущего модуля. Факты с индексом меньше <start-integer-expression> или больше <end-integer-expression> не выводятся. Если <max-integer-expression> указано, выводится то количество фактов, которое не превышает указанного. |
(fact-index <fact-address-expression>) | Возвращает индекс факта соответствующий адресу факта. |
(get-fact-duplication) | Возвращает текущее значение флажка fact duplication. См. также set-fact-duplication . |
(load-facts <file-name>) | Загружает факты из файла<file-name>в текущий модуль. Возвращает TRUE в случае успеха, иначе FALSE. |
(modify <fact-index-or-fact-address> <RHS-slot>*) | Изменяет одно или более значений слотов факта определенного с помощью <fact-index-or-fact-address>. |
(retract <fact-index-or-fact-address>+) | Удаляет один или более фактов из списка |
(save-facts <file-name> [visible | local <deftemplate-names>*]) | Сохраняет указанные факты в фай <file-name>. Возвращает TRUE, если в случае успеха, иначе FALSE. |
(set-fact-duplication <boolean-expression>) | Позволяет указывать идентичные факты, если <boolean-expression> FALSE, иначе предотвращает добавление дублирующихся фактов в базу фактов. Возвращает старое значение дубликата. |
Команды Deffacts
|
|
(list-deffacts [<module-name>]) | Перечисляет все deffacts в указанном модуле (или в текущем модуле, если <module-name> не указано). |
(ppdeffacts <deffacts-name>) | Отображает текст указанных deffacts. |
(undeffacts <deffacts-name>) | Удаляет указанные deffacts. |
Команды Defrule
(list-defrules [<module-name>]) | Перечисляет все defrules в указанном модуле (или в текущем модуле, если <module-name> не указан). |
(matches <defrule-name>) | Выводит список всех фактов и частичных совпадении, которые удовлетворяют шаблону указанного правила. |
(ppdefrule <defrule-name>) | Выводит текст указанного defrule. |
(refresh <defrule-name>) | Обновляет указанный defrule. Активизирует те правила, которые уже сработали, но все еще правильны. |
(remove-break [<defrule-name>]) | Удаляет точку останова (breakpoint) из указанного правила. Если правило не указано все точки останова удаляются. |
(set-break <defrule-name>) | Устанавливает точку останова (breakpoint) для указанного модуля. Это приведет к тому, что выполнение будет прервано перед тем, как выполниться правило. |
(show-breaks [<module-name>]) | Перечисляет все правила указанного модуля, в которых есть точки останова (breakpoints) (или текущего модуля, если <module-name> не указан). |
(undefrule <defrule-name>) | Удаляет указанный defrule. |
Команды Defmodule
|
|
(get-current-module) | Возвращает текущий модуль |
(list-defmodules) | Перечисляет все defmodules в среде CLIPS. |
(ppdefmodule <defmodule-name>) | Отображает текст указанного deftnodule. |
(set-current-module <defmodule-name>) | Устанавливает указанный модуль в текущий и возвращает предыдущий текущий модуль. |
Выполнение программы
(run [<integer-expression>]) | Начинает выполнение правил. Если <integer-expression> определено, то только указанное число правил выполнится, иначе выполнение прервется, только по исчерпанию базы правил. |
(halt) | Останавливает выполнение правил. |
Просмотр базы правил
(agenda [<module-name>]) | Выводит список всех правил из базы правил указанного модуля (если модуль не указан, то текущего модуля) |
Описание CLIPS в БНФ
|
|
Программа на CLIPS.
<CLIPS-program> ::= <construct>*
<construct> ::= <deftemplate-construct> |
<deffacts-construct> |
<defrule-construct> |
<defmodule-construct>
Конструкция Deftemplate.
<deftemplate-construct> ::= (deftemplate <name>
[<comment>]
<slot-definition>* )
<slot-definition> ::= <single-slot-definition> | <multislot-definition>
<single-slot-definition> ::= (slot <slot-name>
<slot-attribute>* )
<slot-name> ::= <symbol>
<multislot-definition> ::= (multislot <slot-name>
<slot-attribute>* )
<slot-attribute> ::= <type-attribute> |
<allowed-constant-attribute>|
<range-attribute> |
<cardinality-attribute> |
<default-attribute>
<type-attribute> ::= (type <type-specification>)
<type-specification> ::= <allowed- type>+ | ?VARIABLE
<allowed-type> ::= SYMBOL | STRING | LEXEME | INTEGER | FLOAT | NUMBER
<allowed-constant-attribute> ::= (allowed-symbols <symbol-list>) |
(allowed-strings <string-list>) |
(allowed-lexemes <lexeme-list>) |
(allowed-integers <integer-list>) |
(allowed-floats <float-list>) |
(allowed-nurabers <number-list>) |
(allowed-values <value-list>)
<symbol-list> ::= <symbol> + | ?VARIABLE
<string-list> ::= <string> + | ?VARIABLE
<lexeme-list> ::= <lexeme> + | ?VARIABLE
<integer-list> ::= <integer> + | ?VARIABLE
<float-list> ::= <float> + | ?VARIABLE
<number-list> ::= <number> + | ?VARIABLE
<value-list> ::= <constant> + | ?VARIABLE
|
|
<range-attribute> ::= (range <range-specification> <range-specification>)
<range-specification> ::= <number> | ?VARIABLE
<cardinality-attribute> ::= (cardinality <cardinality-specification> <cardinality-specification>)
<cardinality-specification> ::= <integer> | ?VARIABLE
<default-attribute> ::= (default <default-item>) | (default-dynamic <expression>*)
<default-item> ::= PDERIVE | PNONE | <expression>*
Конструкция Deffacts
<deffacts-construct> ::= (deffacts <name> [<comment>] <RHS-pattern>*)
Конструкция Defrule
<defrule-construct> ::= (defrule <name> [<comment>] [<declaration>]
<conditional-element>* => <expression>*)
<declaration> ::= (declare <rule-property>+)
<rule-property> ::= (salience <integer-expression>) | (auto-focus <boolean-symbol>)
<boolean-symbol> ::= TRUE | FALSE
<conditional-element> ::= <pattern-CE> |
<assigned-pattern-CE> |
<test-CE> |
<not-CE> |
<and-CE> |
<or-CE> |
<logical-CE> |
<exists-CE> |
<forall-CE>
<pattern-CE> ::= <ordered-pattern-CE> |
<template-pattern-CE>
<assigned-pattern-CE> ::= <single-field-variable> <- <pattern-CE>
<test-CE> ::= (test <function-call>)
<not-CE> ::= (not <conditional-element>)
<and-CE> ::= (and <conditional-element>+)
<or-CE> ::= (or <conditional-element>+)
<logical-CE> ::= (logical <conditional-element>+)
<exists-CE> ::= (exists <conditional-element>+)
<forall-CE> ::= (forall <conditional-element> <conditional-element>+)
<ordered-pattern-CE> ::= (<symbol> <constraint>+)
<template-pattern-CE> ::= (<deftemplate-name <LHS-slot>*)
<LHS-slot> ::= <single-field-LHS-slot> | <multifield-LHS-slot>
<single-field-LHS-slot> ::= (<slot-name> <constraint>)
<multifield-LHS-slot> ::= (<slot-name> <constraint>*)
<constraint> ::= ? | $? | <connected-constraint>
<connected-constraint> ::= <single-constraint> |
<single-constraint> & <connected-constraint> |
<single-constraint> |
<connected-constraint>
<single-constraint> ::= <term> | ~<term>
<term> ::= <constant> |
<variable> |
<function-call>
Описание фактов
<RHS-pattern> ::= <ordered-RHS-pattern> | <template-RHS-pattern>
<ordered-RHS-pattern> ::= (<symbol> <RHS-field>+)
<template-RHS-pattern> ::= (<deftemplate-name> <RHS-slot>*)
<RHS-slot> ::= <single-field-RHS-slot> | <multifield-RHS-slot>
<single-field-RHS-slot> ::= (<slot-name> <RHS-field>)
<multifield-RHS-slot> ::= (<slot-name> <RHS-field>*)
<RHS-field> ::= <variable> |
<constant> |
<function-call>
<deftemplate-name> ::= <symbol>
Переменные и выражения
<single-field-variable> ::= ?<variable-symbol>
<multifield-variable> ::= $?<variable-symbol>
<variable> ::= <single-field-variable> |<multifield-variable>
<function-call> ::= (<function-name> <expression>*) |
<special-function-call>
<special-function-call> ::= (assert <RHS-pattern>+) |
(modify <expression> <RHS-slot>+) |
(duplicate <expression> <RHS-slot>+) |
(bind <single-field-variable> <expression>)
<expression> ::= <constant> |
<variable> |
<function-call>
Типы данных
<symbol> ::= правильный идентификатор
<string> ::= правильная строка
<float> ::= правильное выражение типа float
<integer> ::= правильное целое
<number> ::= <float> | <integer>
<lexeme> ::= <symbol> | <string>
<constant> ::= <number> | <lexeme>
<comment> ::= <string>
<variable-syrabol> ::= <symbol> начинающийся с буквы.
<function-name> ::= <symbol>
<name> ::= <symbol>
ОГЛАВЛЕНИЕ
ВВЕДЕНИЕ................................................................................................... 5
1. СИСТЕМА 1stCLASS.............................................................................. 7
1.1. Общие характеристики системы 1stCLASS........................................ 7
1.2. Режим приобретения знаний............................................................... 8
1.3. Режим консультации............................................................................. 9
1.4. Пример использования системы......................................................... 9
1.4.1. Разработка ЭС................................................................................ 9
1.4.2. Примеры консультаций................................................................ 17
2. СИСТЕМА EXSYS................................................................................. 19
2.1. Общие характеристики системы........................................................ 19
2.2. Режим конструирования прикладной экспертной системы............. 20
2.2.1. Начальные установки................................................................... 20
2.2.2. Ввод правил.................................................................................. 21
2.2.3. Ввод формул................................................................................. 22
2.2.4. Изменение ранее выбранных установок..................................... 23
2.2.5. Работа с внешними программами............................................... 23
2.3. Примеры работы............................................................................... 24
2.3.1. Постановка прикладной задачи................................................... 24
2.3.2. Использование математических выражений............................... 28
2.3.3. Редактирование правил............................................................... 30
2.3.4. Использование внешних программ............................................. 32
2.3.5. Пример использования системы.................................................. 35
3. СИСТЕМА GURU.................................................................................. 39
3.1. Общие характеристики системы........................................................ 39
3.2. Функциональные возможности......................................................... 42
3.3. Построение экспертной системы....................................................... 46
3.4. Тестирование экспертной системы.................................................... 55
3.5. Запуск системы и работа в режиме меню......................................... 58
3.5.1. Запуск системы............................................................................. 58
3.5.2. Некоторые сведения о работе в режиме меню............................ 58
3.5.3. Использование режима меню...................................................... 58
3.5.4. Описание команд меню Expert Systems...................................... 59
3.5.5. Режим редактирования набора правил (GURU Rule Set Manager). 59
3.5.6. Режим редактирования правил................................................... 60
3.5.7. Режим редактирования переменных........................................... 62
3.5.8. Описание команд меню Information Manager.............................. 63
3.6. Примеры использования системы..................................................... 66
4. ЯЗЫК ИСКУССТВЕННОГО ИНТЕЛЛЕКТА CLIPS........................... 67
4.1. Краткая история CLIPS..................................................................... 67
4.2. Факты, правила и функции CLIPS.................................................... 67
4.2.1. Факты............................................................................................ 68
4.2.2. Правила и функции...................................................................... 70
4.3. Работа в среде CLIPS под Windows.................................................. 72
4.3.1. Постановка задачи....................................................................... 74
4.3.2. Листинг программы..................................................................... 75
КОНТРОЛЬНЫЕ ВОПРОСЫ..................................................................... 85
БИБЛИОГРАФИЧЕСКИЙ СПИСОК......................................................... 86
ПРИЛОЖЕНИЕ 1........................................................................................ 87
ПРИЛОЖЕНИЕ 2........................................................................................ 96
Учебное издание
Еремеев Александр Павлович, Чибизова Наталья Владимировна
ИНСТРУМЕНТАЛЬНЫЕ СРЕДСТВА
КОНСТРУИРОВАНИЯ ЭКСПЕРТНЫХ СИСТЕМ
Методическое пособие
по курсу
«Экспертные системы»
для студентов, обучающихся по направлению
«Прикладная математика и информатика»
Редактор В.Н. Вагин
Редактор издательства О.М. Горина
ЛР № 020528 от 05.06.97 г.
Темплан издания МЭИ 2002(I) Печать офсетная
Подписано к печати 31.10.02 Формат 60´84/16 Физ. печ. л. 6,25
Тираж 150 Изд. № 73 Заказ Цена 19 руб.
Издательство МЭИ, 111250, Москва, Красноказарменная ул., д. 14
Отпечатано в типографии ЦНИИ «Электроника», 117415, Москва,
просп. Вернадского, д. 39
Дата добавления: 2018-05-12; просмотров: 268; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!