- •Лабораторная работа 1 Знакомство с инструментальными средствами для создания экспертных систем.
- •Краткие теоретические сведения
- •Режимы работы
- •Характеристики эс
- •Оперативная помощь
- •Правила "guru"
- •Стратегии управления
- •5.1. Прямой вывод
- •Обратный вывод
- •6. Переменные
- •6.1. Рабочие переменные
- •6.2. Предварительно определенные переменные
- •6.3. Выражения с переменными
- •7. Объяснение аргументации
- •8. Синтаксис правил "guru"
- •9. Отладка зс
- •9.1. Запрос во время консультации
- •9.2. Запрос после консультации
- •Порядок выполнения работы
- •Описание переменных среды
- •Основные команды "guru"
- •Выражения и функции "guru"
- •Контрольные вопросы
- •Лабораторная работа 2 Создание пробной экспертной системы.
- •Подготовка и работе
- •Порядок выполнения работы
- •Контрольные вопросы
- •Лабораторная работа 3 Учет факторов уверенности при создании экспертной системы
- •Факторы уверенности
- •Объединение фу
- •3. Методы объединения фу для переменной е.Gfjo, описывающей среду
- •4. Методы объединения фу для переменной e.Cfco, описывающей среду
- •5.Методы объединения фу для переменной e.Cfva, описывающей среду
- •6.Значения фу для выражений, содержащих переменные
- •Подготовка к работе
- •Порядок выполнения работы
- •Контрольные вопросы.
- •Лабораторная работа 4 Командный режим "guru"
- •Краткие теоретические сведения
- •1. Основные команды
- •Команда build
- •Команда compile
- •Команда consult
- •Команда run
- •Команда dir
- •Команда let
- •Команда output
- •Команда input
- •Команда if-theh-else
- •Подготовка к работе
- •Порядок выполнения работы
- •Контрольные вопросы
- •Лабораторная работа 5 Электронные таблицы "guru"
- •Краткие теоретические сведения
- •Режим обработки эв
- •2. Команды эв
- •2.13 Использование эв в программе
- •3. Пример программы с использованием эв
- •Подготовка к лабораторной работе
- •Порядок выполнения работы
- •Контрольные вопросы
- •Лабораторная работа 6 Графические средства "guru"
- •Краткие теоретические сведения
- •Управление графами с помощью утилитных переменных и
- •Команда plot bar
- •Команда plot pie
- •Команда plot line
- •Команда plot function
- •Команда range
- •Команда pattern
- •Команда plot to
- •Команда plot from
- •2. Пример программы, выводящей данные из эв
- •Подготовка к лабораторной работе
- •Порядок выполнения работы
- •Контрольные вопросы
- •Система guru Общие характеристики системы
- •Функциональные возможности
- •Построение экспертной системы
- •Р ис. 3.1. Дерево целей
- •Тестирование экспертной системы
- •Запуск системы и работа в режиме меню Запуск системы
- •Некоторые сведения о работе в режиме меню
- •Использование режима меню
- •Описание команд меню Expert Systems
- •Режим редактирования набора правил (guru Rule Set Manager)
- •Режим редактирования правил
- •Часть if – посылка правила. Может быть любым выражением.
- •Режим редактирования переменных
- •Описание команд меню Information Manager
- •Примеры использования системы
- •Приложение 1 Листинг 1. Эс для оценки надежности поставщика (в среде guru)
- •Листинг 2. Пример работы эс для оценки надежности поставщика
- •Пример объяснений
- •Листинг 3. Подсистема прогнозирования цен Текст программы
- •Пример консультации
6.2. Предварительно определенные переменные
Существует два типа предварительно определенных переменных (ПОП): среды и утилиты. Среда "GURU" определяется переменными среды. Они определяют различные Функциональные характеристики среды "GURU". Имя этой переменной всегда начинается с буквы Е. Например:
E.HELP = TRUE
Задание ПОП заставляет "GURU" автоматически реагировать на ошибку в команде.
E.LSTR = 80
Максимальная длина символьной строки равна 80.
Переменные типа утилиты служат для различных вспомогательных целей. Они начинаются со знака #. Например:
#GOAL = INTRATE
#СОАL определяет цель ЭС.
6.3. Выражения с переменными
Числовые:
2 + 4
DEPTH=5
6 + DEPTH
2**2
SQRT (4) 60/5
5.67 * PI
Строчные:
NAME = "Иванов" + "Иван" - сцепление NAME становится равной "Иванов Иван".
Логические:
А = B
А<>В
А <= В
А >= В
IN - вводится для обозначения равносильности одного элемента другому (проверки того, соответствуют ли друг другу правая и левая части выражения); допустим надо найти служащего, чья фамилия Минев или Манев или Монев, тогда вводим логическое выражение:
NAME IN [M$HEB].
Составные логические выражения, например:
15 > 9 AND 20 < 100 - истинное выражение;
9 > 15 AND 20 < 100 - ложное выражение.
7. Объяснение аргументации
Важной характеристикой "GURU" является возможность объяснить весь ход действий при консультации с набором правил. Это делается с помощью команд HOW и WHY. Как это делать, будет объяснено в дальнейшем.
8. Синтаксис правил "guru"
Запишем пример согласно синтаксическим правилам "GURU" и подробно объясним.
Предположим, мы проводим технический осмотр автомобиля и хотим знать, поедет он или нет. Мы проверяем аккумулятор и стартер и на основе результатов осмотра принимаем решение. Вот наши правила в этой экспертной системе:
Правило 1.
Если аккумулятор сел или неисправен стартер, то двигатель не заведется.
Правило 2.
Если аккумулятор заряжен, исправен стартер, то двигатель заведется.
Правило 3.
Если двигатель заведется, то автомобиль поедет.
Правило 4.
Если двигатель не заведется, то автомобиль не поедет.
А вот как запишутся эти правила экспертной системы с учетом синтаксиса "GURU".
RULESET: CAR
GOAL: MOVE
INITIAL: CLEAR
E.LSTR = 80
MOVE = UNKNOWN
AKKUM = UNKNOWN
STARTER = UNKNOWN
MOTOR = UNKNOWN
OUTPUT "Система диагностики автомобиля"
VARIABLE: MOVE
LABEL: Будет ли двигаться автомобиль?
VARIABLE: AKKUM
LABEL: Заряжен ли аккумулятор?
FIND: input akkum using "u" with "Заряжен у Вас аккумулятор (Y/N)?"
VARIABLE: STARTER
LABEL: Исправен ли стартер?
FIND: input starter using "u" with "Исправен у Вас стартер (Y/N)?"
VARIABLE: MOTOR
LABEL: Работает ли мотор?
DO:
CLEAR
OUTPUT "Автомобиль", MOVE
RULE: R1
IF: AKKUM <> "Y" OR STARTER <> "Y"
THEN: MOTOR = 0
REASON: Если аккумулятор сел или стартер не работает, то мотор не заведется.
RULE: R2
IF: AKKUM = "Y" AND STARTER = "Y"
THEN: MOTOR = 1
REASOH: Если аккумулятор заряжен и стартер работает, то мотор заведется
RULE: R3
IF: МОТОР = 1
THEN: MOVE = "ПОЕДЕТ"
REASON: Если мотор работает, то автомобиль поедет
RULE: R4
IF: MOTOR = 0
THEM: MOVE = "НЕ ПОЕДЕТ"
Объясняя все более подробно.
RULESET: CAR - это имя набора правил (необязательно указывать);
INITIAL: - это раздел инициализации. Сюда входят те команды, которые должны выполниться до консультации с наборов правил.
CLEAR - команда для очистки экрана.
E.LSTR = 80 - эта переменная устанавливает максимальную длину символьных строк.
MOVE = UNKNOWN,
MOTOR = UNKNOWN - инициализация переменных, при которой им присваивается значение UNKNOWN.
ODTPUT "Система диагностики автомобиля" - выводит на экран символьную строку.
VARIABLE: МОVЕ - определяется переменная, используемая в наборе правил. Все переменные должны быть oпpeделены.
LABEL: - Объяснение на "естественном языке, зачем нужна данная переменная.
FIND: - если в посылке встречается переменная с неопределённым значением (UNKNOWN), которая не присутствует в заключении какого-либо правила, то выводятся те команды, которые находятся после FIND. Здесь находится команда ввода: input akkum using "u" with "Заряжен у Вас аккумулятор?" Эта команда ждет ввода с экрана в переменную akkum символов "Y" или "N". В этой команде ввода:
using "u" - шаблон ввода;
with "..." - выводятся на экран в виде запроса для подсказки.
RULE: R1 - имя правила;
IF: - посылка правила;
ТНЕN: - заключение правила;
REASOH -объяснение на естественной языке, что делает правило.
DO - раздел завершения. Выполняются команды, которые необходимы для выполнения консультации с ЭС.
OUTPUT "Автомобиль", MOVE - выводится строка "Автомобиль" и вслед за ней переменная MOVE.
Примечание: описание всех команд дано в приложении 1 к описанию настоящей лабораторной работы.
Система работает следующим образом: последовательным перебором правил, начиная с первого, находится правило R3, содержащее в заключении переменную цели - MOVE. MЛВ определяет, что она UNKNOWN, следовательно необходимо найти условие для ее нахождения. В правиле R3 это условие задается переменной MOTOR. MOTOR - переменная с неизвестным значением, содержащаяся в посылке правила R3, которая становится новой переменной цели. Эта переменная при последовательном переборе правил, начиная с первого, впервые встречается в заключении правила R1. В посылке этого правила - две переменных. Они тоже неизвестны, причем их нельзя обнаружить в заключении какого-либо правила, но они описаны в FIND. Следовательно, вводится запрос на ввод этих переменных. Когда AKKUM и STARTER введены, то определяется MOTOR. Потом проверяем MOTOR и определяем MOVE. Цель достигнута.
