Лабораторные работы по СИИ
Автор: drug | Категория: Прочее | Просмотров: | Комментирии: 0 | 02-01-2013 16:59
ЛАБОРАТОРНАЯ РАБОТА №3
Применение реляционного подхода для разработки экспертной системы
Цель работы: изучение процесса построения экспертной системы (ЭС) на основе реляционного подхода, применяемого при разработке баз данных, с использованием средств СУБД ACCESS.
1 Теоретические материалы
1.1 Реляционная модель экспертной системы

Мо¬дель базы знаний для ЭС строится на основе реляционного подхода. А кроме того, в вашем распоряжении имеется компьютерная техноло¬гия реализации реляционного подхода — это Access.
Систему, кото¬рую намерены построить мы, относится к классу иден¬тификационных (или диагностических) систем. Систе¬мы этого класса решают задачу определения, т.е. иден-тификации, объекта по его признакам. Такие системы составляют значительную часть существующих эксперт¬ных систем, и без их рассмотрения не обходится ни один учебник по экспертным системам. А в качестве примера, как правило, рассматривается задача опреде-ления вида животного или растения. Вот и мы будем проектировать такую экспертную систе¬му. Кроме того, мы для простоты ограничиваемся лишь рассмотрением детерминированных систем, когда пользо¬ватель может точно ответить на вопрос о наличии или отсутствии того или иного признака.
Начнем с того, что сформулируем знания по указан¬ному вопросу. Вот эти формулировки.
Если собака короткошерстная, ростом менее 50см, с коротким хвостом и с доброжелательным характером то порода - английский бульдог.
Если собака короткошерстная, ростом менее 50 см, с длинным хвостом, длинными ушами и с доброжелательным характером то порода – гончая.
Если собака короткошерстная, ростом более 50 см, с коротким хвостом, доброжелательным характером и весит более 50 кг, то порода – датский дог.
Если собака короткошерстная, ростом более 50 см, с коротким хвостом, доброжелательным характером, весит менее 50 кг, ростом менее 70 см и с длинными ушами то порода – фоксхаунд.
Если собака длинношерстная, ростом менее 50 см, с коротким хвостом, длинными ушами, с доброжелательным характером то порода – кокер-спаниель.
Если собака длинношерстная, ростом менее 50 см, с коротким хвостом, длинными ушами, с недоброжелательным характером и ростом менее 50 см то порода – ирландский сеттер.
Если собака длинношерстная, ростом менее 50 см, с коротким хвостом, короткими ушами, ростом менее 70 см, и с доброжелательным характером то порода –колли.
Если собака длинношерстная, ростом более 50 см, но менее 70 см, с длинными ушами, доброжелательным характером, весом более 50 кг, то порода – сенбернар.
Мы, конечно, специально выбрали систему, в которой потребуется не так уж много знаний. Впрочем, попро¬буйте, глядя только в выписанные формулировки, отве¬тить на вопрос, к какой породе принадлежит собака, если в руках вы держите один лист, имеющий форму иголки. Скорее всего, за полминуты это не получится.
Мы будем реализовывать следующий план построения экспертной системы. Сначала строится простейший ва¬риант, который будет демонстрировать только основную идею. По сути дела, это решатель. Затем мы добавим остальное — блок объяснения и т.п., что позволит демон¬стрировать работу экспертной системы в полном объеме.
Систему логического вывода (тот самый решатель) мы изобразим орграфом. Каждая вершина графа поме¬чена уточняющим вопросом экспертной системы к пользователю или ее ответом на задачу. Для удобства все вершины перенумерованы, начиная с нуля.
Если вершина помечена вопросом экспертной систе¬мы, то из нее выходят две дуги. Одна дуга помечена од¬ним ответом пользователя, другая – его альтернативным ответом. Вершина, соответствующая ответу экспертной системы на задачу, не имеет выходящих дуг. На рис.1 представлен граф, отражающий знания экс¬пертной системы. Будем в дальнейшем вершину орграфа называть "состоянием экспертной системы".
По существу, работа экспертной системы означает "путешествие" по этому орграфу. Такое путешествие состоит из последовательности однотипных шагов, на каждом из которых пользователь должен решить, по какой дуге он пойдет из очередной вершины.
Исповедуя реляционный подход, мы должны теперь описать этот орграф подходящими таблицами. Сделать это нетрудно: каждую дугу мы опишем номером ее начала и номером ее конца. Кроме того, поскольку дуги у орграфа помечены, мы сделаем в таблице не два столбца — началь¬ная и конечная вершины дуги, — а три, добавив столбец "Ответ пользователя". Назовем эту таблицу "Ребра"

Таблица "Ребра"
Начало Конец Ответ пользователя
0 1 Собака — короткошерстая
0 2 Собака — длинношерстная
1 3 Рост — менее 50 см
1 4 Рост — более 50 см
2 5 Рост — менее 50 см
2 6 Рост — более 50 см
3 7 Хвост — короткий
3 8 Хвост — длинный
4 9 Хвост – короткий
5 10 Хвост — короткий
6 11 Рост — более 70 см
7 12 Характер - доброжелательный
8 13 Уши - длинные
9 14 Характер - доброжелательный
10 15 Уши - длинные
10 16 Уши - короткие
11
17 17 Уши - длинные
13 18 Характер - доброжелательный
14 19 Вес – более 50 кг
14 20 Вес – менее 50 кг
15 21 Характер - доброжелательный
15 22 Характер - недоброжелательный
16 23 Рост — менее 70 см
17 24 Характер - доброжелательный
20 25 Рост — менее 70 см
22 26 Рост — менее 50 см
23 27 Характер - доброжелательный
24 29 Вес – более 50 кг
25 28 Уши - длинные










Рис. 1. Структура логического вывода


Но одной этой таблицы мало, поскольку требуется еще информация о реакциях экспертной системы на ответы пользователя. Реакция же может быть двоякой: ответ системы или очередной вопрос пользователю. Поэтому и таблиц будет две. Вот как могут выглядеть эти таблицы.
Таблица "Имена" имеет два атрибута: Состояние и Имя.

Таблица "Имена"
Имя Состояние
Порода – Английский бульдог 12
Порода – Гончая 18
Порода – Датский дог 19
Порода – Кокер-спаниель 21
Порода – Ирландский сеттер 26
Порода – Колли 27
Порода – Фоксхаунд 28
Порода – Сенбернар 29

Теперь надо определить взаимодействие этих таблиц. Для этого нам в каждый момент работы экспертной системы потребуется знать, в каком состоянии она на¬ходится. Номер этого состояния будем хранить еще в одной таблице, которую назовем "Текущее".

Таблица "Текущее"
Состояние
0

Сейчас в эту таблицу записано на¬чальное состояние экспертной системы.
Ясно, что должно происходить даль¬ше. По текущему состоянию эксперт¬ная система генерирует запрос к таблице "Ребра". При этом должно быть реализовано соеди¬нение таблиц "Текущее" и "Ребра" по атрибутам Нача¬ло = Состояние. В зависимости от реакции на этот запрос пользователя экспертная система переходит в сле¬дующее состояние и либо выдает ответ, либо генерирует очередной запрос. Изменение состояния экспертной си¬стемы организуется с помощью макрокоманд, допусти¬мых той программной оболочкой, которая используется для реализации этой модели экспертной системы.
Таблица "Вопросы" также имеет два атрибута: Состояние и Вопрос.

Таблица "Вопросы"
Состояние Вопрос
0 Шерсть – длинношерстная или короткошерстная?
1 Рост собаки более или менее 50 см?
2 Рост собаки более или менее 50 см?
3 У собаки короткий или длинный хвост?
4 У собаки короткий хвост?
5 У собаки короткий хвост?
6 У собаки рост менее 70 см?
7 У собаки доброжелательный характер?
8 Длинные ли уши у собаки?
9 Доброжелательная ли собака?
10 У собаки длинные или короткие уши?
11 У собаки длинные уши?
13 Собака доброжелательна?
14 Собака весит более или менее 50 кг?
15 Какое отношение у собаки – доброжелательное или нет?
16 Рост собаки менее 70 см?
17 У собаки доброжелательный характер?
20 Рост собаки менее 70 см?
22 У собаки рост менее 50 см?
23 Собака доброжелательна?
24 Собака весит более 50 кг?
25 У собаки длинные уши?

2 Ход работы
2.1 Создаем свою экспертную систему (простейший вариант)
Прежде всего, надо создать те таблицы, ко¬торые описаны в тек¬сте § 2. Создали? Если да, то идем дальше. Создаем запрос ВАРИ¬АНТЫ, который позволяет выбрать те дуги, по которым пользователь может двигаться из текущего состояния.



Рис. 2. Запрос ВАРИАНТЫ

Теперь нужно предложить пользователю выбрать одну из этих дуг и пометить КОНЕЦ выбранной дуги в таб¬лице "Текущее'". Все это мы реализуем с помощью фор¬мы с полем со списком. Эта форма будет иметь един¬ственное поле, в котором и будет выпадать список дуг, доступных в данном состоянии. Эту форму назовем ВАРИАНТЫ.



Рис. 3. Форма ВАРИАНТЫ

Чтобы построить указанную форму, нажимаем на копку «Конструктор форм». Чтобы указать источник записей данной формы, заходим в свойства формы и в пункте «Источник записей» выбираем «Текущее».



Рис. 4. Начинаем создавать форму

После задания данного параметра, на панели инструментов находим инструмент "Поле со списком":



Рис. 5. Конструктор форм, панель элементов
и инструмент "Поле со списком"

Расширим область данных, потянув ее мышью за гра¬ницы. Выберем инструмент "Поле со списком" и нари¬суем им поле. После этого система предлагает диалог, от которого мы откажемся, нажав кнопку «Отмена».











Рис. 6. Создание поля со списком

Щелчком мыши внутри поля выделим его. Нарисовав поле со списком, вызываем его свойства.



Рис. 7. Вызов свойств поля со списком

С помощью команды "Свойства" меню "Вид" при¬своим свойствам следующие значения: Данные — СОСТОЯНИЕ, Источник строк — ВАРИАНТЫ, Число столбцов — 2, Ширина столбцов — 1,9 см.


Рис. 8. Свойства поля со списком (фрагменты)

Вид данных нужно выбрать из списка (P.S. «Состояние» должно быть в списке, если правильно указан источник данных при создании формы).
Теперь нужно заготовить макрос, который будет эту форму открывать и закрывать. Он должен выполняться при выборе значения в поле подстановок (иначе это значение не будет заноситься в таблицу "Текущее"). Выглядит он так:



Рис. 9. Макрос1 открывает и закрывает форму ВАРИАНТЫ
При создании макросов необходимо указывать имя формы и режим в соответствии с примечаниями.
Построенный макрос нужно привязать к обновлению поля со списком формы ВАРИАНТЫ. Для этого нужно снопа выделить в режиме конструктора поле со спис¬ком, открыть его свойства и приписать событию "После обновления" значение "Макрос1".















Рис. 10. Подготовка режима "Обновление поля"

Теперь после обновления поля будет выполняться Макрос1.
Все, простейший вариант экспертной системы готов. Можно перейти в режим формы и поэкспериментировать с ним. P.S. В таблицу «Текущее» необходимо занести номер вершины дерева, с которого начинается работа ЭС (отдельная строка).

2.2. Совершенствуем экспертную систему
В простейшем варианте молчаливо предполагалось, что поиск происходит "с нуля", когда пользователь ничего не знает о классификации объекта.
Создадим форму НАЧАЛО с источником записей "Текущее". В ней расположим поле со списком СОСТОЯНИЕ с такими свойствами:



Рис. 11. Форма НАЧАЛО содержит поле со списком СОСТОЯНИЕ

Создадим Макрос2, который закрывает форму НАЧАЛО и открывает форму ВАРИАНТЫ.











Рис. 12. Создание макроса Макрос2

Добавим в свойства поля формы НАЧАЛО запуск Макроса2 после обновления.



Рис. 13. Макрос2 будет выполняться после выбора начального состояния

Итак, работа нашей экспертной системы начинается с открытия формы НАЧАЛО. После того как пользова¬тель укажет, что ему известно о классификации исследу¬емого объекта, запускается форма ВАРИАНТЫ.
Но и это еще не все.


2.3 Блок объяснений
Непременным элементом экспертной системы счи¬тается блок объяснений. Он должен разъяснять пользо¬вателю, почему экспертная система поступает так, а не иначе. Мы предлагаем реализовать его с помощью одной или нескольких кнопок, которые пользователь будет на¬жимать в зависимости от того, что именно ему непо¬нятно. В ответ система будет разъяснять ему соответ¬ствующий аспект текущего состояния.
Давайте начнем с кнопки "Расшифровка вопроса", кото¬рую пользователь будет нажимать, если ему непонятен воп¬рос. В ответ ему будет выдаваться развернутая формулиров¬ка вопроса, который система задает в текущем состоянии. Вы, вероятно, догадались, что все эти развернутые формули¬ровки будут храниться в одной таблице. За основу можно взять таблицу " вопросы". У нее, правда, есть один недоста¬ток — там нет никакой информации для терминальных состояний, когда уже у системы нет вопросов, поскольку она знает ответ. Ну что же, это — дело поправимое. В этих состояниях система будет сообщать пользователю, какой получен ответ. В итоге таблица будет выглядеть так:

Состояние Вопрос
0 Шерсть – длинношерстная или короткошерстная?
1 Ответ: шерсть — короткошерстная. Вопрос: Рост собаки более или менее 50 см?
2 Ответ: шерсть — длинношерстная. Вопрос: Рост собаки более или менее 50 см?
3 Ответ: Рост менее 50 см. Вопрос: У собаки короткий или длинный хвост?
4 Ответ: Рост более 50 см. Вопрос: У собаки короткий хвост?
5 Ответ: Рост менее 50 см. Вопрос: У собаки короткий хвост?
6 Ответ: Рост более 50 см. Вопрос: Рост собаки более или менее 70 см?
7 Ответ: Короткий хвост. Вопрос: У собаки доброжелательный характер?
8 Ответ: Длинный хвост. Вопрос: Длинные ли уши у собаки?
9 Ответ: Короткий хвост. Вопрос: Доброжелательная ли собака?
10 Ответ: Короткий хвост. Вопрос: У собаки длинные или короткие уши?
11 Ответ: Рост более 70 см. Вопрос: У собаки длинные уши?
12 Ответ: Доброжелательный характер. Вопросов больше нет.
13 Ответ: Длинные уши. Вопрос: Собака доброжелательна?
14 Ответ: Доброжелательна. Вопрос: Собака весит боле или менее 50 кг?
15 Ответ: Длинные. Вопрос: Какое отношение у собаки – доброжелательное или нет?
16 Ответ: Короткие. Вопрос: Рост собаки менее 70 см?
17 Ответ: Длинные уши. Вопрос: У собаки доброжелательный характер?
18 Ответ: Доброжелательна. Вопросов больше нет.
19 Ответ: Вес более 50 кг. Вопросов больше нет.
20 Ответ: Вес менее 50 кг. Вопрос: Рост собаки менее 70 см?
21 Ответ: Доброжелательное. Вопросов больше нет.
22 Ответ: Недоброжелательное. Вопрос: У собаки рост менее 50 см?
23 Ответ: Рост менее 70 см. Вопрос: Собака доброжелательна?
24 Ответ: Доброжелательный. Вопрос: Собака весит более 50 кг?
25 Ответ: Рост менее 70 см. Вопрос: У собаки длинные уши?
26 Ответ: Рост менее 50 см. Вопросов больше нет.
27 Ответ: Доброжелательна. Вопросов больше нет.
28 Ответ: Длинные уши. Вопросов больше нет.
29 Ответ: Вес более 50 кг. Вопросов больше нет.

Теперь сконструируем запрос, выбирающий из таблицы "Вопросы" строку, относящуюся к текущему состоянию.



Рис. 14. Запрос, выбирающий текущий вопрос

Теперь создадим для него форму ВОПРОС с одним полем. При создании формы также необходимо в свойствах формы указать источник записей, но уже не таблицу «Текущее», а Запрос1, а в данных поле указать «Вопрос».







Рис. 15. Форма ВОПРОС с источником записей Запрос1 ВОПРОСЫ

Сконструируем Макрос3, открывающий форму ВОПРОС.


Рис. 16. Макрос3 открывает форму ВОПРОС

Теперь остается на форме ВАРИАНТЫ с помощью инструмента "Кнопка" панели элементов нарисовать кнопку и указать в ее свойствах, что нажатие на нее вызывает выполнение Макроса3.



Рис. 17. Кнопка5

Аналогично можно создать еще несколько кнопок, с помощью которых пользователь сможет получать разъяс¬нение по тем или иным аспектам текущего состояния. Например, некоторые авторы считают, что пользовате¬лю нужно объяснять, что произойдет, если он выберет тот или иной вариант ответа. Это легко сделать с помо¬щью таблицы "Объяснения". Вот как она выглядит для нашего примера.

Таблица "Объяснения"
Состояние Текст
1 Если собака короткошерстная, то это либо Английский бульдог, либо Гончая, либо Датский дог, либо Фоксхаунд
2 Если собака длинношерстная, то это либо Кокер-спаниель, либо Ирландский сеттер, либо Колли, либо Сенбернар
3 Если рост менее 50 см, то это либо Английский бульдог, либо Гончая
4 Если рост более 50 см, то это либо Датский дог, либо Фоксхаунд
5 Если рост менее 50 см, то это либо Кокер-спаниель, либо Колли, либо Ирландский сеттер
6 Если собака более 50 см, а так же более 70 см, у нее длинные уши и доброжелательный характер, то наверно это Сенбернар
7 Если короткий хвост, то это Английский бульдог
8 Если длинный хвост, то скорее всего порода собаки - гончая
9 Установлено, что порода собаки – либо Датский дог, либо Фоксхаунд. Обе породы относятся к доброжелательным
10 Если уши длинные, то порода собак – Кокер-спаниель или Ирландский сеттер; если уши короткие, то порода - Колли
12 Установлено, что порода собаки - Английский бульдог. Дальнейшая детализация не требуется
13 Если у собаки длинные уши, то это Гончая
14 Если вес собаки более 50 кг – то порода Датский дог, если менее – то порода Фоксхаунд
15 Если собака доброжелательна, то порода – Кокер-спаниель, если недоброжелательна, то порода – Ирландский сеттер
18 Установлено, что порода собаки - Гончая. Дальнейшая детализация не требуется
19 Установлено, что порода собаки - Датский дог. Дальнейшая детализация не требуется
21 Установлено, что порода собаки – Кокер-спаниель. Дальнейшая детализация не требуется
26 Установлено, что порода собаки – Ирландский сеттер. Дальнейшая детализация не требуется
27 Установлено, что порода собаки – Колли. Дальнейшая детализация не требуется
28 Установлено, что порода собаки – Фоксхаунд. Дальнейшая детализация не требуется
29 Установлено, что порода собаки – Сенбернар. Дальнейшая детализация не требуется

Дальше нужно поступать в точности так же, как и в предыдущем случае. Нужно сделать запрос, выделя¬ющий из таблицы "Объяснения" то объяснение, кото¬рое соответствует текущему состоянию, форму, свя¬занную с этим запросом, макрос, открывающий эту форму, и кнопку на форме ВАРИАНТЫ, запускаю¬щую этот макрос. P.S. При создании формы «Объяснения» пользоваться такими же правилами, как при создании формы «Вопрос».
Итак, как же будет работать наша система? Чтобы запустить ее, нужно открыть форму НАЧАЛО, раскрыть поле со списком и выбрать один из предлагаемых вари¬антов (см. рис. 18). В данном случае выбран нулевой вариант, когда пользователь ничего не знает о классифи¬кации интересующего его объекта.
После этого открывается форма ВАРИАНТЫ. Пользо¬ватель ведет диалог с системой, каждый раз открывая поле со списком и выбирая один из предлагаемых ему в данном состоянии вариантов. Если ему что-то непонят¬но, он нажимает соответствующую кнопку блока объяс¬нения (см. рис. 19).



Рис. 18. Первые шаги работы экспертной системы:
открывается поле со списком (1) и выбирается один из предложенных вариантов (2)



Рис. 19. Диалог пользователя: открывается поле со списком и выбирается один из предложенных вариантов; в случае затруднения следует нажать одну из кнопок

Нажатие одной из кнопок блока объяснения рас¬крывает соответствующую форму с разъяснениями , соответствующими текущему состоянию (рис. 20). Чтобы закрыть ее, нужно щелкнуть по крестику в левом верх¬нем углу формы.















Рис. 20. Работа блока объяснения





Задание
Выполнить весь процесс разработки для заданного варианта

Отчет
должен содержать:
• Название, цель работы
• Граф (дерево) логического вывода
• Множество разработанных запросов и форм с макросами
• Выводы

Вопросы
1. в каком случае для реализации ЭС целесообразно выбирать систему Access?
2. Поясните принцип работы созданной ЭС.
3. Проведите аналогию с известными алгоритмами логического вывода.

Литература
1. Бешенков С.А., Гейн А.Г., Григорьев С.Г. Информатика и информационные технологии. Свердловск: УрГПУ, 1995, 144 с.
2. Информатика. Базовый курс для 7—9-х классов / Под ред. Е.К. Хеннера. М.: Лаборатория базовых знаний, 2000, 384 с.
3. Информатика. Задачник-практикум в 2 т. / Под ред. И.Г. Семакина, Е.К. Хеннера: Т. 1. М.: Лаборатория базовых знаний,1999, 304 с.
4. Томпсон Б., Томпсон У. Анатомия экспертных систем. // Реальность и прогнозы искусственного интеллекта М.: Мир, 1987.Сочинения курсовыеСочинения курсовые