Функции и команды работы с фактами



(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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!