Автор работы: Пользователь скрыл имя, 04 Апреля 2012 в 20:53, лабораторная работа
Для построения модели экспертной системы в качестве примера рассмотрим задачу определения вида животного или растения. Для простоты ограничимся лишь рассмотрением детерминированных систем, когда пользователь может точно ответить на вопрос о наличии или отсутствии того или иного признака.
Создание экспертной системы средствами Access
Для построения модели экспертной системы в качестве примера рассмотрим задачу определения вида животного или растения. Для простоты ограничимся лишь рассмотрением детерминированных систем, когда пользователь может точно ответить на вопрос о наличии или отсутствии того или иного признака.
Начнем с того, что сформулируем знания по указанному вопросу. Вот эти формулировки.
Если класс голосемянные и форма листа чешуеобразная, то семейство - кипарисовые.
Если класс голосемянные и форма листа иглоподобная и конфигурация хаотическая, то семейство -сосновые.
Если класс голосемянные и форма листа иглоподобная и конфигурация - 2 ровных ряда и серебристая полоса, то семейство - сосновые.
Если класс голосемянные и форма листа иглоподобная и конфигурация - 2 ровных ряда и серебристой полосы нет, то семейство - болотный кипарис.
Если тип - деревья и форма листа широкая и плоская, то класс - покрытосемянные.
Если тип - деревья и неверно, что форма листа широкая и плоская, то класс - голосемянные.
Если стебель зеленый, то тип - травянистые.
Если стебель древесный и положение стелящееся, то тип - лианы.
Если стебель древесный и положение прямостоящее и один основной ствол, то тип - деревья.
Если стебель древесный и неверно, что положение прямостоящее и один основной ствол, то тип -кустарниковые.
3 Идея реляционной модели была предложена американским ученым Е.Ф. Коддом в начале 70-х гг. Само слово "реляционная" происходит от английского relation - отношение, связь. Иными словами, суть реляционного подхода заключается в том, что информация об объектах представляется в виде отношений, т.е. связанных между собой характеристик изучаемых объектов. В свою очередь, отношение удобно представлять в виде таблицы, в которой каждая строка содержит значение характеристик какого-то одного из объектов. Имена характеристик принято в теории баз данных называть атрибутами. Мы также будем пользоваться этим термином. Более подробно о представлении отношений таблицами см. упоминавшуюся статью в "Информатике" № 27/2000. Не вдаваясь в теорию отношений, мы в дальнейшем будем считать, что реляционность модели означает тот факт, что все сведения в данной информационной модели представлены в табличной форме.
4 Например, классическая монография [4].
Мы, конечно, специально выбрали систему, в которой потребуется не так уж много знаний. Впрочем, попробуйте, глядя только в выписанные формулировки, ответить на вопрос, какому семейству принадлежит растение, если в руках вы держите один лист, имеющий форму иголки. Скорее всего за полминуты это не получится.
Мы будем реализовывать следующий план построения экспертной системы. Сначала строится простейший вариант, который будет демонстрировать только основную идею. По сути дела, это решатель. Затем мы добавим остальное - блок объяснения и т.п., что позволит демонстрировать работу экспертной системы в полном объеме.
Систему логического вывода (тот самый решатель) мы изобразим орграфом5 . Каждая вершина графа помечена уточняющим вопросом экспертной системы к пользователю или ее ответом на задачу. Для удобства все вершины перенумерованы, начиная с нуля.
Если вершина помечена вопросом экспертной системы, то из нее выходят две дуги. Одна дуга помечена одним ответом пользователя, другая - его альтернативным ответом. Вершина, соответствующая ответу экспертной системы на задачу, не имеет выходящих дуг. На рис. 1 представлен граф, отражающий знания экспертной системы. Будем в дальнейшем вершину орграфа называть "состоянием экспертной системы".
По существу, работа экспертной системы означает "путешествие" по этому орграфу. Такое путешествие состоит из последовательности однотипных шагов, на каждом из которых пользователь должен решить, по какой дуге он пойдет из очередной вершины.
Исповедуя реляционный подход, мы должны теперь описать этот орграф подходящими таблицами. Сделать это нетрудно: каждую дугу мы опишем номером ее начала и номером ее конца. Кроме того, поскольку дуги у орграфа помечены, мы сделаем в таблице не два столбца - начальная и конечная вершины дуги, - а три, добавив столбец "Ответ пользователя". Назовем эту таблицу "Ребра".
5 Ориентированным графом, или сокращенно орграфом, называют фигуру, состоящую из точек, называемых вершинами орграфа и соединяющих эти точки линии со стрелками. Такая линия называется дугой орграфа.
Но одной этой таблицы мало, поскольку требуется еще информация о реакциях экспертной системы на ответы пользователя. Реакция же может быть двоякой: ответ системы или очередной вопрос пользователю. Поэтому и таблиц будет две. Вот как могут выглядеть эти таблицы.
Таблица "Имена" имеет два атрибута: Состояние и Имя.
Таблица "Вопросы" также имеет два атрибута: Состояние и Вопрос.
Теперь надо определить взаимодействие этих таблиц. Для этого нам в каждый момент работы экспертной системы потребуется знать, в каком состоянии она находится. Номер этого состояния будем хранить еще в одной таблице, которую назовем "Текущее".
Сейчас в эту таблицу записано начальное состояние экспертной системы.
Ясно, что должно происходить дальше. По текущему состоянию экспертная система генерирует запрос к таблице "Ребра". При этом должно быть реализовано соединение таблиц "Текущее" и "Ребра" по атрибутам Начало = Состояние. В зависимости от реакции на этот запрос пользователя экспертная система переходит в следующее состояние и либо выдает ответ, либо генерирует очередной запрос. Изменение состояния экспертной системы организуется с помощью макрокоманд, допустимых той программной оболочкой, которая используется для реализации этой модели экспертной системы.
§ 3. Создаем свою экспертную систему (простейший вариант)
Прежде всего надо создать те таблицы, которые описаны в тексте. Создать запрос ВАРИАНТЫ, который позволяет выбрать те дуги, по которым пользователь может двигаться из текущего состояния.
Теперь нужно предложить пользователю выбрать одну из этих дуг и пометить КОНЕЦ выбранной дуги в таблице "Текущее". Все это мы реализуем с помощью формы с полем со списком. Эта форма будет иметь единственное поле, в котором и будет выпадать список дуг, доступных в данном состоянии. Эту форму назовем ВАРИАНТЫ.
Чтобы построить указанную форму, надо вызвать конструктор форм:
После щелчка по "Оk" появляются конструктор форм и панель элементов. Вот как выглядят конструктор форм, панель инструментов и инструмент "Поле со списком":
Расширим область данных, потянув ее мышью за границы. Выберем инструмент "Поле со списком" и нарисуем им поле. После этого система предлагает диалог, от которого мы откажемся, нажав кнопку "Отмена".
Щелчком мыши внутри поля выделим его. Нарисовав поле со списком, вызываем его свойства.
С помощью команды "Свойства" меню "Вид" присвоим свойствам следующие значения: Данные -СОСТОЯНИЕ, Источник строк - ВАРИАНТЫ, Число столбцов - 2, Ширина столбцов - 1,9 cм.
Теперь нужно заготовить макрос, который будет эту форму открывать и закрывать. Он должен выполняться при выборе значения в поле подстановок (иначе это значение не будет заноситься в таблицу "Текущее").
Выглядит он так:
Построенный макрос нужно привязать к обновлению поля со списком формы ВАРИАНТЫ. Для этого нужно снова выделить в режиме конструктора поле со списком, открыть его свойства и приписать событию "После обновления" значение "Макрос1".
Теперь после обновления поля будет выполняться Макрос1.
Все, простейший вариант экспертной системы готов. Можно перейти в режим формы и поэкспериментировать с ним.
§ 4. Совершенствуем экспертную систему
В простейшем варианте молчаливо предполагалось, что поиск происходит "с нуля", когда пользователь ничего не знает о классификации объекта. Но ведь на практике вполне возможно, что уже известен, скажем, класс объекта. Зачем же тогда начинать с нуля?
Вспомним, что, кроме таблицы "Ребра", у нас есть еще "Имена" и "Вопросы".
Начнем с таблицы "Имена". В ней содержатся пол ные имена состояний. Ее мы будем использовать для того, чтобы разрешить пользователю входить в систему "с середины", когда он уже частично классифицировал свой объект.
Дальше идея очень проста. Мы предложим пользователю список всех имен состояний и по его ответу поместим в таблицу "Текущее" номер соответствующего состояния. (Если пользователь ничего не знает о классификации своего объекта, то мы поместим туда 0.) После этого мы включим наш эскизный вариант.
Дело за реализацией идеи. Создадим форму НАЧАЛО с источником записей "Текущее". В ней расположим поле со списком СОСТОЯНИЕ с такими свойствами:
Создадим Макрос2, который закрывает форму НАЧАЛО и открывает форму ВАРИАНТЫ.
Добавим в свойства поля формы НАЧАЛО запуск Макроса2 после обновления.
Итак, работа нашей экспертной системы начинается с открытия формы НАЧАЛО. После того как пользователь укажет, что ему известно о классификации исследуемого объекта, запускается форма ВАРИАНТЫ.
Но и это еще не все.
§ 5. Блок объяснений
Непременным элементом экспертной системы считается блок объяснений. Он должен разъяснять пользователю, почему экспертная система поступает так, а не иначе. Мы предлагаем реализовать его с помощью одной или нескольких кнопок, которые пользователь будет нажимать в зависимости от того, что именно ему непонятно. В ответ система будет разъяснять ему соответствующий аспект текущего состояния.
Давайте начнем с кнопки "Расшифровка вопроса", которую пользователь будет нажимать, если ему непонятен вопрос. В ответ ему будет выдаваться развернутая формулировка вопроса, который система задает в текущем состоянии. Вы, вероятно, догадались, что все эти развернутые формулировки будут храниться в одной таблице. За основу можно взять таблицу "Вопросы". У нее, правда, есть один недостаток - там нет никакой информации для терминальных состояний, когда уже у системы нет вопросов, поскольку она знает ответ. Ну что же, это - дело поправимое. В этих состояниях система будет сообщать пользователю, какой получен ответ. В итоге таблица будет выглядеть так:
Теперь сконструируем запрос, выбирающий из таблицы "Вопросы" строку, относящуюся к текущему состоянию.
Теперь создадим для него форму ВОПРОС с одним полем.
Сконструируем Макрос3, открывающий форму ВОПРОС.
Теперь остается на форме ВАРИАНТЫ с помощью инструмента "Кнопка" панели элементов нарисовать кнопку и указать в ее свойствах, что нажатие на нее вызывает выполнение Макроса3.
Аналогично можно создать еще несколько кнопок, с помощью которых пользователь сможет получать разъяснение по тем или иным аспектам текущего состояния. Например, некоторые авторы считают, что пользователю нужно объяснять, что произойдет, если он выберет тот или иной вариант ответа. Это легко сделать с помощью таблицы "Объяснения". Вот как она выглядит для нашего примера.
Дальше нужно поступать в точности так же, как и в предыдущем случае. Нужно сделать запрос, выделяющий из таблицы "Объяснения" то объяснение, которое соответствует текущему состоянию, форму, связанную с этим запросом, макрос, открывающий эту форму, и кнопку на форме ВАРИАНТЫ, запускающую этот макрос 6 .
Итак, как же будет работать наша система? Чтобы запустить ее, нужно открыть форму НАЧАЛО, раскрыть поле со списком и выбрать один из предлагаемых вариантов (см. рис. 18). В данном случае выбран нулевой вариант, когда пользователь ничего не знает о классификации интересующего его объекта.
После этого открывается форма ВАРИАНТЫ. Пользователь ведет диалог с системой, каждый раз открывая поле со списком и выбирая один из предлагаемых ему в данном состоянии вариантов. Если ему что-то непонятно, он нажимает соответствующую кнопку блока объяснения (см. рис. 19).
Нажатие одной из кнопок блока объяснения (1) раскрывает соответствующую форму с разъяснениями (2), соответствующими текущему состоянию (рис. 20). Чтобы закрыть ее, нужно щелкнуть по крестику в левом верхнем углу формы (3).
Литература
1. Бешенков С.А., Гейн А.Г., Григорьев С.Г. Информатика и информационные технологии. Свердловск: УрГПУ, 1995, 144 с.
2. Информатика. Базовый курс для 7-9-х классов / Под ред. Е.К. Хеннера. М.: Лаборатория базовых знаний, 2000, 384 с.
3. Информатика. Задачник-практикум в 2 т. / Под ред. И.Г. Семакина, Е.К. Хеннера: Т. 1. М.: Лаборатория базовых знаний, 1999, 304 с.
4. Томпсон Б., Томпсон У. Анатомия экспертных систем. //Реальность и прогнозы искусственного интеллекта М.: Мир, 1987.
Информация о работе Создание экспертной системы средствами Access