- •Лабораторная работа 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. Подсистема прогнозирования цен Текст программы
- •Пример консультации
Подготовка к работе
1. Ответьте на контрольные вопросы.
2. Добавьте к ЭС, разработанной в лабораторной работе 2, изменения, в которых применяются ФУ. Для демонстрации варианта таких изменений в приложении 1 в настоящей лабораторной работе приведен пример ЭС с использованием специально объявляемых переменных среды и ФУ. Эта ЭС была ранее представлена как вариант № 6 лабораторной работы 1 (приложение 4 к лабораторной работе 1).
Порядок выполнения работы
1. Предъявите преподавателю текст изменений в ЭС, написанной и отлаженной при выполнении лабораторной работы 2.
2. Запустите систему "GURU". Создайте базу знаний на основе своего варианта ЭС.
3. Проверьте с помощью HOW и WHY работу созданной ЭС. Результаты покажите преподавателю.
Отчет о работе должен содержать
1) ответы на контрольные вопросы;
2) вариант ЭС на естественном языке;
3) вариант ЭС на языке "GURU";
4) пример отладки ЭС с помощью НОW WHY;
5) заключение.
Приложение 1
GOAL: whattodo
/* ЭТОТ НАБОР ПРАВИЛ ПОЗВОЛИТ ВАМ ПОЛУЧИТЬ РЯД СОВЕТОВ НА */
/* ТЕМУ "КАК УСПЕТЬ НА ЭКЗАМЕН" В ЗАВИСИМОСТИ ОТ ОПОЗДАНИЯ И*/
/* ВАЖНОСТИ СВОЕВРЕМЕННОГО ПРИХОДА. ОЧЕВИДНО, ЧТО ЭТО */
/* ДАЛЕКО HE ПОЛНЫЙ НАБОР, НО ВЕДЬ ОН И ПРЕДНАЗНАЧЕН ДЛЯ */
/* ПОКАЗА САМЫХ ТРИВИАЛЬНЫХ СРЕДСТВ GURU. */
/* ТАК ЧТО НЕ ИЩИТЕ В НЕМ СВЕРХИНТЕЛЛЕКТУАЛЬНОГО. */
/* НА ВОПРОСЫ СИСТЕМЫ СЛЕДУЕТ ВВОДИТЬ СООТВЕТСТВУЮЩЕЕ */
/* ЗНАЧЕНИЕ БУЛЕВСКОЙ ПЕРЕМЕННОЙ (ДА-Y, HET-N) */
/* НУ И, КОНЕЧНО, НА ПРОСЬБУ СИСТЕМЫ ВВЕСТИ ЧИСЛО – СООТВЕТ- */
/* СТВУЩЕЕ ЧИСЛО. */
INITIAL:
clear
release variable /* УБИРАЕМ НЕНУЖНЫЕ НАМ ПЕРЕМЕННЫЕ */
e.lstr=250 /* МАКСИМАЛЬНАЯ ДЛИНА СТРОКИ */
output " ДЕНЬ ДОБРЫЙ, МИСТЕР (МИССИС)."
e.cfco="m"
e.cfjo="m"
e.cfva="mm"
output
output " У ВАС СЕГОДНЯ ЭКЗАМЕН, А ВЫ ПРОСНУЛИСЬ СЛИШКОМ "
output "ПОЗДНО... ВАМ, ЕСТЕСТВЕННО, НАДО УСПЕТЬ НА НЕГО, НО "
output "КАК ? МЫ ПОСТАРАЕМСЯ ДАТЬ ВАМ СОВЕТ, КАК, ИСХОДЯ ИЗ "
output "СЛОЖИВШЕЙСЯ СИТУАЦИИ, ВАМ СЛЕДУЕТ ПОСТУПИТЬ. НО ДЛЯ "
output "ЭТОГО ВЫ ДОЛЖНЫ ПРЕДОСТАВИТЬ МНЕ ВСЮ ИНФОРМАЦИЮ."
output " ИТАК, НАЧНЕМ ..."
output
lating="Y"
output" СКАЖИТЕ, ВЫ ДЕЙСТВИТЕЛЬНО ОПАЗДЫВАЕТЕ (Y/N)?"
input lating str using "a"
lating=lating cf 70
DO:
clear
output " ВОТ ЧТО МНЕ КАЖЕТСЯ ПРИЕМЛЕМЫМ В ДАННОЙ СИТУАЦИИ."
output
output whattodo
RULE: R1
IF: mainexam and biglate
THEN: whattodo=" БЕРИТЕ ТАКСИ НА ВЕСЬ ПУТЬ ДО ИНСТИТУТА. В"
whattodo=whattodo+"TAKОЙ СИТУАЦИИ ДЕНЬГИ ЗНАЧЕНИЯ НЕ "
whattbdo=whattodo+"ИМЕЮT."
RULE: R2
IF: not mainexam
THEN: whattodo=" УСПОКОИТЕСЬ, НА НЕ ОЧЕНЬ ВАЖНЫЙ ЭКЗАМЕН "
whattodo=whattodo+"HE СТОИТ СИЛЬНО СПЕШИТЬ. ПОВЕРЬТЕ,"
whattodo=whattodo+"BAM ПРОСТЯТ ВАШЕ ОПОЗДАНИЕ ИЛИ ДАЖЕ"
whattodo=whattodo+"ОТСУТСТВИЕ. ТАК ЧТО НЕСПЕША ПО-"
whattodo=whattodo+"EЗЖAЙTE НА АВТОБУСЕ." cf 80
RULE: R3
IF: not biglate and mainexam
THEN: whattodo=" HE ВОЛНУЙТЕСЬ, ВСЕ ЕЩЕ БУДЕТ ХОРОШО. ВАМ "
whattodo=whattodo+"СТОИТ ВЗЯТЬ ТАКСИ НА ЧАСТЬ ПУТИ,"
whattodo=whattodo+" НАПРИМЕР, ДО КАКОГО-НИБУДЬ "
whattodo=whattodo+"УЗЛОВОГО ПУНКТА (ДО МЕТРО, АВТ."
whattodo=whattodo+"OCTAHQBKИ). " cf 70
RULE: R4
IF: onlyge4
THEN: mainexam=false cf 85
RULE: R5
IF: veroyatn >= 90
THEN: mainexam=false cf 65
RULE: R6
IF: (veroyatn <90) and not onlyge4
THEN: mainexam=true cf 75
ROLE: R7
IF: (lating<>"Y" cf 40) and (lating<>"y" cf 50)
THEN: whattodo=" ВСЕ В ПОРЯДКЕ. ЖЕЛАЮ ВАМ НИ ПУХА ." cf 70
RULE: R8
IF: howcommon<onwalk+bymetro+bybus+15
THEN: biglate=true cf 60
RULE: R9
IF: howcommon >= onwalk+bymetro+bybus+15
THEN: biglate=false cf 80
VAR: WHATTODO
FIND: whattodo=" СОЖАЛЕЮ, Я НЕ ЗНАЮ, ЧТО ВАМ ПОСОВЕТОВАТЬ..."
LABEL: СОВЕТ КАК ДЕЙСТВОВАТЬ В ДАННОЙ СИТУАЦИИ.
VAR: MAINEXAM
LABEL: ПРЕДСТОЯЩИЙ ЭКЗАМЕН - ВАЖНЫЙ.
VAR: BIGLATE
LABEL: ТЕКУЩЕЕ ОПОЗДАНИЕ - ЗНАЧИТЕЛЬНОЕ.
VAR: LATING
LABEL: ВЫ РЕАЛЬНО ОПАЗДЫВАЕТЕ.
VAR: HOWCOMMON
FIND: output
output " СКОЛЬКО МИНУТ ВАМ ДОБИРАТЬСЯ ДО ИНСТИТУТА "
output "ОБЩЕСТВЕННЫМ ТРАНСПОРТОМ?"
input howcommon num using "nnn" cf 70
LABEL: ВРЕМЯ В ПУТИ ДО ИНСТИТУТА.
VAR: ONWALK
FIND: output
output " СКОЛЬКО МИНУТ ВАМ ПРИХОДИТСЯ ИДТИ ПЕШКОМ?"
input onwalk num using "nn" cf 75
LABEL: ВРЕМЯ ПЕШЕГО ПЕРЕДВИЖЕНИЯ.
VAR: BYMETRO
FIND: output
output " СКОЛЬКО МИНУТ ВАМ ПРИХОДИТСЯ ПРОВОДИТЬ В "
output "МЕТРО?"
input byimetro num using "nnn" cf 60
LABEL: ВРЕМЯ ПРОЕЗДА В МЕТРОПОЛИТЕНЕ.
VAR: BYBUS
FIND: output
output " СКОЛЬКО МИНУТ ВАМ ПРИХОДИТСЯ ПРОВОДИТЬ В "
output "АВТОБУСЕ?"
input bybus num using "nnn" cf 50
LABEL: ВРЕМЯ ПРОЕЗДА В АВТОБУСЕ, ТРОЛЛЕЙБУСЕ, ТРАМВАЕ.
VAR: ONLYGE4
FIND: output
output " НА ПРЕДСТОЯЩЕМ ЭКЗАМЕНЕ НЕ СТАВЯТ МЕНЬШЕ 4?"
input onlyge4 logic cf 60
LABEL: НА ПРЕДСТОЯЩЕМ ЭКЗАМЕ НЕ НЕ СТАВЯТ МЕНЬШЕ 4.
VAR: VEROYATN
FIND: output
output " КАКОВА ОБЪЕКТИВНАЯ ВЕРОЯТНОСТЬ ПОЛУЧЕНИЯ ВАМИ"
output " ЖЕЛАЕМОЙ ОЦЕНКИ?"
input veroyatn num using "nn" cf 60
LABEL: ОБЪЕКТИВНАЯ ВЕРОЯТНОСТЬ ПОЛУЧЕНИЯ ВАМИ ЖЕЛАЕМОЙ ОЦЕНКИ.
END:
