ОтчетМаркеловСавинкова

advertisement
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«САМАРСКИЙ ГОСУДАРСТВЕННЫЙ АЭРОКОСМИЧЕСКИЙ УНИВЕРСИТЕТ
ИМЕНИ АКАДЕМИКА С.П.КОРОЛЕВА
(НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ)» (СГАУ)
Факультет информатики
Кафедра информационных систем и технологий
Отчет по лабораторной работе №1
по курсу
«Основы экспертных систем»
«ЭС проектирование интерфейса информационной системы»
Выполнили: студенты группы 6501
Маркелов Д. Е.
Савинкова Ю. В.
Проверил:
Белоусов А. И.
САМАРА 2012
Задание
Разработать продукционную экспертную систему с четкой логикой по заданному
описанию предметной области. Построить дерево принятия решений, сформулировать
набор правил для решения задачи, разработать общую схему алгоритма работы с
правилами и детальную схему алгоритма логического вывода. Предусмотреть в системе
режим эксперта для просмотра таблицы решений и файла правил системы, режим
консультации для конечного пользователя и режим справки (сведения о системе, авторах,
краткое пояснение по использованию). Разработать стандартную форму представления
правил в текстовой или табличной форме и хранения набора правил в виде заранее
подготовленного отдельного файла.
Организовать диалог с конечным пользователем в виде форм меню и вопросов и
возможных ответов с подсказками с использованием естественного языка.
По дополнительному запросу выдать подробное объяснение полученного решения
на естественном языке.
Описание предметной области.
Переключатели используются для выбора единственного варианта из множества
альтернатив (от 2 до 7). Переключатели должны быть сгруппированы по объектам.
Переключатель не рекомендуется использовать для запуска команд (т.е. как кнопку) за
одним исключением: когда требуется быстрый выбор одного значения из многих с
последующим запуском общей процедуры обработки. При количестве альтернатив
больше 7 используется меню выборы.
Флажки используются для выбора одного или нескольких вариантов из множества
независимых вариантов (1 до 7). Пояснением может быть только текст, если требуется
пояснение в виде пиктограммы (рисунка), то следует использовать кнопку управления.
Если число вариантов больше 7, то следует использовать список множественного выбора.
2
Продукционные системы
Экспертные системы (ЭС) как самостоятельное направление в искусственном
интеллекте (ИИ) сформировалось в конце 1970-х годов.
В режиме консультаций пользователь ЭС сообщает системе конкретные данные о
решаемой задаче и стремится получить с её помощью результат. При этом входные
данные о задаче поступают в рабочую память. Решатель на основе данных из БД и правил
из БЗ формирует решение [1].
База знаний состоит из правил анализа информации от пользователя по конкретной
проблеме. ЭС анализирует ситуацию и, в зависимости от направленности ЭС, дает
рекомендации по разрешению проблемы.
Как правило, база знаний экспертной системы содержит факты (статические
сведения о предметной области) и правила — набор инструкций, применяя которые к
известным фактам можно получать новые факты.
Знания и опыт в какой-то проблемной области предоставляются в виде набора
правил (продукций), представляющие собой просто совокупность правил. Каждое правило
имеет посылку и вывод. Когда машина логических выводов может установить, что
посылка является истинной, тогда она знает, что вывод тоже является правильным.
Если во время консультации определяется, что условия верны, то правило
включается. Если же условия правила не удовлетворяются, то действия правила не
выполняются.
Для логического вывода использовались прямая и обратная цепочки рассуждений.
Соответствующие алгоритмы приведены в приложении.
3
Дерево принятия решений
Переменные:
- единственность выбора;
- количество альтернатив от 1 до 7;
- необходимость запуска процедуры;
- необходимость использования пиктограмм;
- количество альтернатив меньше 7.
Дерево принятия решений содержится в приложении.
4
Описание и реализация указаний по использованию
Экспертная система проектирования интерфейса ИС имеет 3 пункта:
 Консультация с подменю «Прямая цепочка» и «Обратная цепочка»;
 «О программе»;
 «Выход».
При выборе пункта «Прямая цепочка» или «Обратная цепочка» на экране
последовательно появляются окна вопросов.
Рисунок 1 – Окно вопросов
Пользователь, последовательно ответив на все предоставленные ему вопросы,
получает рекомендации по проектированию интерфейса ИС с объяснением. На рисунке 2
отображена форма представления рекомендаций.
Рисунок 2 – Результат консультации
Для вывода информации о программе пользователь должен выбрать пункт меню
«О программе».
5
Рисунок 3 – Окно «О программе»
6
Контрольный пример и результаты испытаний
Проектирование интерфейса информационной системы, исходя из различных
требований.
Для контрольного примера выберем информационную систему, для которой
необходимы параметры: единственность выбора, количество альтернатив от 1 до 7,
необходимость запуска процедуры, необходимость использования пиктограмм.
На следующих рисунках представлены последовательно вопросы ЭС пользователю.
Рисунок 4 – Выбор единственного варианта
Затем пользователь нажимает «ОК» Система отображает следующий вопрос.
Рисунок 5 – Выбор количества альтернатив
Затем пользователь нажимает «ОК» Система отображает следующий вопрос.
7
Рисунок 6 – Вопрос о необходимости запуска процедуры
Затем пользователь нажимает «ОК» Система отображает следующий вопрос.
Рисунок 7 – Вопрос о необходимости использования пиктограмм
По окончании консультации система отображает форму с рекомендацией
пользователю и объяснением решения.
Рисунок 8 – Окно результата работы программы
8
Список использованных источников
1. Дерябкин В.П. Лекции по курсу «Основы экспертных систем». Самара, СГАУ,
2012 г.
9
Приложение А. Блок-схема алгоритма ПЦР
Начало
Выполнить начальное
присваивание значений
переменных
Занести целевую
переменную advice в
очередь переменных
вывода
1
Обработка правил
Считать правило из файла
Разделить правила на
элементы
Обработка конъюнктивных
членов
2
10
1
Взять очередной
конъюнктивный член
Выделить конъюнктивную
переменную
нет
Значение известно?
да
нет
Можно её запросить?
да
Запрос значения
переменной
Удаление переменной из
очереди переменных
вывода
Конъюнктивный член
истинен?
нет
conjunction = false
да
3
11
conjunction = false
2
Пока не закончатся
конъюнктивные члены или
conjunction != false,
Обработка конъюнктивных
членов
нет
Выполнение правила,
advice = <значение>
conjunction = false?
да
Пока не закончатся
правила или advice != NIL
, Обработка правил
нет
Очередь переменных
вывода пуста?
isCompatible = false
да
i++
Пока i меньше количества
переменных и isCompatible
= true, 1
4
12
3
нет
isCompatible = true
да
Вывод
совета
advice
Система
несовместна
Конец
Рисунок А.1 – Блок-схема алгоритма ПЦР
13
Приложение Б. Блок-схема алгоритма ОЦР
Начало
Создать стек, таблицы о текущем состоянии
системы, таблицу текущих значений
переменных
Заполнить таблицу
переменных неизвестными
значениями
Занести целевую
переменную в стек
Выбрать первое по
порядку правило где
имеется присваивание
значение целевой
переменной
Правило найдено?
нет
Стек пуст?
1
нет
Стек изменяется?
да
Текущая целевая
переменная:=Последняя
переменная в стеке
Выбрать первую
конъюнкцию в правиле
Просмотрены не все
конъюнкты в правиле
2
нет
Переменные в
конъюнкте определены
Занести переменную в
стек
Можно запросить у
пользователя
да
нет
да
Запросить у
пользователя и обновить
таблицы и записи о тек.
состоянии
нет
Конъюнкт истинен?
да
Перейти к следующему
конъюнкту
Выбрать следующее по
порядку правило где
имеется присваивание
целевой переменной
2
Присвоить текущей
целевой переменной
значение и удалить ее из
стека
Правило найдено?
нет
да
1
Система несовместна
Сформировать
результат
консультации
Конец
Рисунок Б.1 – Блок-схема алгоритма ОЦР
14
Приложение В. Дерево решений
Выбор
единственного
варианта?
да
да
нет
нет
Количество
альтернатив от 1 до
7?
Количество
альтернатив
меньше 7?
да
да
да
Требуется ли
пояснение в виде
пиктограммы?
да
С возможностью
запуска
процедуры?
нет
Требуется ли
пояснение в виде
пиктограммы?
нет
Требуется ли
пояснение в виде
пиктограммы?
нет
нет
да
нет
Требуется ли
пояснение в виде
пиктограммы?
нет
Требуется ли
пояснение в виде
пиктограммы?
да
Используйте
переключатели или
флажки c
пиктограммами с
кнопкой управления
С возможностью
запуска
процедуры?
Используйте
переключатели или
флажки c текстом с
процедурой запуска
Используйте
переключатели или
флажки c
пиктограммами и
кнопкой управления
Используйте
переключатели или
флажки c текстом и
кнопкой запуска
Используйте меню
выбора или список
множественного
выбора с
пиктограммами c
кнопкой управления
да
нет
Используйте меню
выбора или список
множественного
выбора с текстом c
процедурой запуска
Требуется ли
пояснение в виде
пиктограммы?
Используйте меню
выбора или список
множественного
выбора с
пиктограммами и
кнопкой управления
нет
да
нет
нет
Используйте меню
выбора или список
множественного
выбора с текстом и
кнопку управления
Рисунок В.1 – Дерево принятия решений
15
да
Используйте
флажки с
пиктограммами
и кнопку
управления
Используйте
флажки с
текстом и
кнопку
управления
Используйте
меню выбора с
пиктограммами
и кнопкой
управления
Используйте
меню выбора с
текстом и
кнопку
управления
Приложение Г. Листинг программы
Г.1 Листинг основных алгоритмов
Г1.1 Листинг алгоритма ПЦР
public Error ForwardChaining()
{
IEnumerator ienumRules = GetAllRulesInBZ();
ienumRules.MoveNext();
goalVars.Push(GetGoal());
if (goalVars.Count > 0)
{
XmlNode r = (XmlNode) ienumRules.Current;
Rule rule = getRule(r);
while (rule != null)
{
int i = 0;
bool ruleTrue = true;
IEnumerator ienum = rule.Sender.GetEnumerator();
while ((ienum.MoveNext()) && (ruleTrue))
{
Variable perem = (Variable)ienum.Current;
Variable var = FindPeremByName(perem.Name);
if (var.Value == null)
{
if (var.Needed)
{
if (ShowWindow(var.Comment + "?"))
FindPeremByName(perem.Name).Value = true;
else
FindPeremByName(perem.Name).Value = false;
ruleTrue = CheckCon(perem, var);
}
else
{
goalVars.Push(perem);
if (ienumRules.MoveNext())
{
r = (XmlNode)ienumRules.Current;
rule = getRule(r);
}
}
}
else
{
ruleTrue = CheckCon(perem, var);
}
if (!ruleTrue)
{
if (ienumRules.MoveNext())
{
r = (XmlNode)ienumRules.Current;
rule = getRule(r);
}
16
}
}
if (ruleTrue)
{
MessageBox.Show("Найдено решение");
ShowExplanation(rule);
rule = null;
}
}
if (rule == null)
{
return new Error(false, "Правил, содержащих целевую
переменную не найдено. Система несовместна");
}
}
else
{
return new Error(true, string.Empty);
}
return new Error(true, string.Empty);
}
Г1.2 Листинг алгоритма ОЦР
public Error BackwardChaining()
{
GetAllVariblesInBZ();
GetRuleIterator();
goalVars.Push(GetGoal());
if (goalVars.Count > 0)
{
Rule rule = getRuleByResult(goalVars.Peek());
activatedRules.Add(rule);
while (rule != null)
{
int i=0;
bool ruleTrue = true;
IEnumerator ienum = rule.Sender.GetEnumerator();
while((ienum.MoveNext()) && (ruleTrue))
{
Variable perem = (Variable)ienum.Current;
Variable var = FindPeremByName(perem.Name);
if (var.Value == null)
{
if (var.Needed)
{
if (ShowWindow(var.Comment+"?"))
FindPeremByName(perem.Name).Value = true;
else
FindPeremByName(perem.Name).Value = false;
ruleTrue =
}
else
17
CheckCon(perem, var);
{
goalVars.Push(perem);
rule = getRuleByResult(goalVars.Peek());
activatedRules.Add(rule);
}
}
else
{
ruleTrue = CheckCon(perem, var);
}
if (!ruleTrue)
{
rule = getRuleByResult(goalVars.Peek());
activatedRules.Add(rule);
}
}
if (!ruleTrue)
{
activatedRules.Add(rule);
}
else
{
MessageBox.Show("Найдено решение");
ShowExplanation(rule);
rule = null;
}
}
if (rule == null)
{
return new Error(false, "Правил, содержащих целевую переменную
не найдено. Система несовместна");
}
}
else
{
return new Error(true, string.Empty);
}
return new Error(true, string.Empty);
}
18
Download