- •Лабораторная работа 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.Значения фу для выражений, содержащих переменные
Пусть даны команды :
FIRSTHAME = "ГЕОРГИЙ" cf 40
LASTNAME = "ГЕОРГИЕВ" cf 60
NAME = FIRSTNAME + LASTNAME
"GURU" должна воспользоваться каким-либо методом., чтобы вычислить общий ФУ для NAME. Метод объединения ФУ выражений зависит от E.CFJO. По умолчанию E.CFJO = М (минимум). В этом случае NAME имеет ФУ, равный 40. Другой примеp: FIRSTNAME = "ГЕОРГИ" cf 40, LASTHAME = "ГЕОРГИЕВ"-cf 60, NAME = FIRSTNAME + LASTNAME cf 80.
Этот пример аналогичен предыдущему, за исключением дополнительного третьего ФУ, который осложняет процесс вычисления общего ФУ. Сначала с помощью E.CFJO объединяются ФУ FIRSTNAME и LASTNAME. Выдается промежуточный ФУ, равный 40. ФУ, равный 40, объединяется. с ФУ переменной NAME, разный 80. Опять берется минимум и выбирается 40.
7.Переменные набора (нечеткие переменные)
Переменная; которая одновременно может иметь несколько значений, каждое из которых характеризуется своим фактором уверенности, называется переменной набора. С помощью этих переменных можно получать наилучшую консультацию: вы можене использовать их для того, чтобы найти наилучший вариант или наиболее вероятное значение для критериев принятия решения. Например, если А имеет 2 значения, В - 3 значения, то Х = А + В может иметь 3 значения. Дублирующие результирующие значения объединяются. Если у вас есть команда "variable = 5", то она может означать либо то, что сейчас переменная .имеет значение 5, либо то что кроме всех предыдущих значений, принимаемых этой переменной, она имеет сейчас значение 5 с ФУ 100. Чтобы различать эти случае. в "GURU" существует синтаксическая структура {…}, которая используется для того, чтобы указать набор значений, принадлежащих одной переменной. X = { } - означает, что X имеет известных значений. X = { 1,2,3 } - переменная X является переменной набора, имеющей три значения 1, 2, 3. Переменные набора могут содержать значения, относящиеся к различным типам. Например { 1, "яблоко", 2.1). Каждый элемент переменной набора может иметь свой ФУ, например: { 1 cf 30, 2 cf' 40, 3 cf 100}. Все элементы набора переносятся в присваиваемое значение, например: X = { 1, 2 cf 50, 3 }, У = X, тогда Y = { 1, 2 cf 50, 3 }. Присвоение можно выполнять и при условии неопределенности, например: X = { 1, 2, 3 }, Y = X cf 50; тогда Y = { 1 cf 50, 2 cf 50, 3 cf 50 }. Используя E.CFCC, ФУ присвоенных значений можно объединить. Допустим E.CFCO - "р". В этом случае такое представление: X = { 1 cf 50. 2 cf 60 }, Y = X cf 50 можно заменить: У = { 1 cf 25, 2 сf 30 }.
В "GURU" существуют операторы "+ =" и "- =', которые добавляют элементы в набор и удаляет элементы из набора. Например, запись; X = { 1,2,3 } и X + = 4 означает, что Х = { 1, 2, 3, 4}. Используя операторы "+ =" можно объединить , например X = { 1,2,3 }, Y = { 4,5 }, X += Y, тогда-X = { 1,2,3,4,5 }. Еще пример: X = { 1,2,3 }, X -= { 2,3 }, тогда X = { 1 }.
8.Функции поиска ФУ
CFV ( переменная, значение ) – выдает максимальное значение ФУ данной переменной
CFN ( переменная, номер ) – выдает ФУ значения переменной, указанного номером. Порядок следующий: 1 – наивысший ФУ, 2 – второй по величине и т.д.
VALN ( переменная, номер ) – выдает значение переменной по списку
NUMVAL ( переменная ) – выдает количество значений переменной
HIVAL (HIVAL переменная ) – выдает значение переменной с наивысшим ФУ
HICF ( переменная ) – выдает ФУ значения HIVAL
LOVAL ( переменная ) – выдает значение переменной с наименьшим ФУ
LOCF ( переменная ) – выдает значение переменной LOVAL
TAB ( переменная ) – выдает внутренний номер переменной, который может использоваться командой HOW
KNOWN ( переменная ) – выдает true, если у переменной есть значения, ФУ которых превышает минимальный уровень достоверности, устанавливаемый с помощью E.UNKN. Например, геолог уверен в том, что скальный пласт можно скорее обнаружить на глубине 20 футов, чем на глубине 40 футов, а найти его на глубине 60 футов почти невозможно. Тогда BERDOCK = { 60 cf 5, 40 cf 62, 20 cf 89 }. Другой пример. Предположим, цвет (color) имеет значения: красный cf 40, желтый cf 60, голубой cf 50, а дом (house) имеет значение красный cf 70.
Таблица 3.
Примеры вычисления ФУ для различных посылок
Посылка |
ФУ посылки |
Если цвет = красный |
40 |
Если цвет = красный или цвет = голубой |
40 “или” 50 |
Если цвет не красный |
60 “или” 50 |
Если дом = красный |
70 |
Если дом не красный |
FALSE |
9.Пример для закрепления полученных знаний о ФУ
Рассмотрим и объясним подробно пример. Воспользуемся, примером лабораторной работы 1, но внесем в него изменения. Предположим, что мы проводим технический осмотр автомобиля и хотим сделать заключение, поедет он или нет. Мы проверяем аккумулятор, стартер и цепь зажигания и на основе результатов осмотра принимаем решение. Вот какие правила в этой экспертной системе.
Правило 1
Если исправны стартер, аккумулятор и цепь зажигания, то двигатель заведется с ФУ, равным минимуму ФУ аккумулятора, стартера и цепи зажигания.
Правило 2
Если ФУ того, что двигатель заведется больше 30, то система
зажигания исправна.
Правило 3
Если ФУ того что двигатель заведется больше 30 к меньше 80, то необходим мелкий ремонт.
Правило 4
Если ФУ того что двигатель заведется меньше 30, то необходим капитальный ремонт.
Вот как выглядит эта ЭС на языке "GURU":
GOAL: RESULT
RULE R1
IF: AKKUM = "ЗАРЯЖЕН" AND START = "ИСПРДВЕН" AND CIR =
"ИСПРАВHA"
THEN: DVIG="ЗАВЕДЕТСЯ"
REASON: ЕСЛИ CTAPТЕP, АККУМУЛЯТОР И ЦЕПЬ ЗАЖИГАНИЯ
В ИСПРАВНОМ СОСТОЯНИИ, ТО ДВИГАТЕЛЬ ЗАВЕДЕТСЯ
RULE: R2
IF: HICF(DVIG) > 80
THEN: RESULT="ИСПРАВЕН"
RSASGH: если ФУ того, что двигатель заведется больше 60,
то автомобиль – ИСПРАВЕН
RULE: R3
IF: HICF(DVIG) >= 30 AND HICF (DVIG) <= 80
ТНEN: RESULT="МЕЛКИЙ РЕМОНТ"
REASON: если ФУ того что двигатель заведется больше 30
и меньше 80, то необходим мелкий ремонт
RULE: R4
IF: HICF(DYIG) < 30
THEN: RESULT="капитальный ремонт"
REASOH: если ФУ того что двигатель заведется меньше 30,
то необходим капитальный ремонт
INITIAL:
E.RIGR = "A"
E.WHH = "F"
E.TRYP = "P"
E.LSTR = 80
E.DECI = 0
E.OFVA = "MM"
E.OFJO = "M"
E.OFCO = "M"
START = UNKNOWN
CIR = UNKNOWN
AKKUM = UNKNOWN
DVIG = UNKNOWN
RESULT = UNKNOWN
PROM = UNKNOWN
CLEAR "*** ТЕХОСМОТР АВТОМОБИЛЯ ***
OUTPUT
OUTPUT "ответьте на все вопросы и получите консультацию"
OUTPUT "по системе зажигания"
OUTPUT
DO:
CLEAR
OUTPUT "КОНСУЛЬТАЦИЯ ПО СИСТЕМЕ ЗАЖИГАНИЯ", RESULT
VAR: AKKUM
FIND: PROM=0
INPUT PROM NUM WITH “на сколько вы уверены, что аккумулятор заряжен?”
AKKUM = “ЗАРЯЖЕН” CF PROM
LABEL ОПРЕДЕЛЯЕТ ЗАРЯЖЕН ЛИ АККУМУЛЯТОР
VAR: CIR
INPUT РROM NUM WITH "насколько вы уверены, что схема зажигания исправна?"
CIR = “ИСПРАВНА” CF PROM
LABEL: ОПРЕДЕЛЯЕТ, ИСПРАВНА ЛИ СХЕМА ЗАЖИГАНИЯ
VAR: START
FIND: PROM = 0
INPUT PROM NUM WITH "насколько вы уверены, что исправен стартер?"
START = "ИСПРАВЕН"
LABEL: ОПРЕДЕЛЯЕТ, ИСПРАВЕН ЛИ СТАРТЕР
VAR: DVIG
LABEL: ОПРЕДЕЛЯЕТ, ЗАВЕДЕТСЯ ЛИ ДВИГАТЕЛЬ
VAR: RESULT
LABEL: результат технического осмотра
VAR: PROM
LABEL: промежуточная переменная для ввода ФУ
END:
Для закрепления знаний рассмотрим подробно эту ЭС. Целью является переменная RESULT. Правило R1 определяет техническое состояние приборов. Правила R2, R3, R4 проверяют граничные значения ФУ. Функция HICF() определяет максимальное значение ФУ. Теперь рассмотрим переменные, которые используются в ЭС. Переменная PROM – это вспомогательная переменная, которая служит для ввода значений ФУ.
Переменные AKKUM, START и CIR определяются одинаковым образом. Т.к. эти переменные должны вводиться в ходе диалога, то они имеют пункт FIND. Здесь сначала переменной PROM присваивается нуль, затем в переменную PROM вводится значение ФУ соответствующей переменной, затем соответствующая переменная специализируется с введенным ФУ. Данные переменные должны запрашиваться при проверке первого правила. При инициализации ЭС определяются системные переменные. E.RIGR = "А" - использование всех необходимых правил. Е.WHN - "F" - для поиска значения неизвестной переменной. Поиск осуществляется еще до попытки вывести значения неизвестных переменных. При этой запрашивается FIND. E.TRYP - "Р" - терпеливо пытаться определить значения всех неизвестных переменных, а затем оценить посылку. E.LSTR - 80 - длина символьной строки, при выводе на экран. E.DECI = 0 - количество десятичных знаков. E.CFVA "ММ", E.CFJO = "М", E.CFCO = "М" определяют алгебру ФУ (см. настоящее описание лабораторной работы, п.3). Далее идет инициализация переменных и команды для определения работы системы.
