Реляционная модель экспертной системы.




РАЗРАБОТКА ЭКСПЕРТНОЙ СИСТЕМЫНА ПРИМЕРЕ «ПОРОДЫСОБАК»

Мо­дель базы знаний для ЭС строится на основе реляционного подхода. Кроме того, в вашем распоряжении имеется компьютерная техноло­гия реализации реляционного подхода — это Access.

Систему, кото­рую намерены построить мы, относится к классу иден­тификационных (или диагностических) систем. Систе­мы этого класса решают задачу определения, т.е. иден­тификации, объекта по его признакам. Такие системы составляют значительную часть существующих эксперт­ных систем, и без их рассмотрения не обходится ни один учебник по экспертным системам. А в качестве примера, как правило, рассматривается задача опреде­ления вида животного или растения. Вот и мы будем проектировать такую экспертную систе­му. Кроме того, мы для простоты ограничиваемся лишь рассмотрением детерминированных систем, когда пользо­ватель может точно ответить на вопрос о наличии или отсутствии того или иного признака.

Начнем с того, что сформулируем знания по указан­ному вопросу. Вот эти формулировки:

Если собака короткошерстная, ростом менее 50см, с коротким хвостом, то порода - английский бульдог.

Если собака короткошерстная, ростом менее 50 см, с длинным хвостом, длинными ушами, то порода – гончая.

Если собака короткошерстная, ростом менее 50 см, с длинным хвостом, короткими ушами и с коротким телом, то порода – мопс.

Если собака короткошерстная, ростом менее 50 см, с длинным хвостом, короткими ушами и с длинным телом, то порода – чихуахуа.

Если собака короткошерстная, ростом более 50 см, весит более 50 кг, то порода – датский дог.

Если собака короткошерстная, ростом более 50 см, весит менее 50 кг, то порода – фоксхаунд.

Если собака длинношерстная, ростом менее 50 см, с доброжелательным характером, то порода – кокер-спаниель.

Если собака длинношерстная, ростом менее 50 см, с недоброжелательным характером, то порода – ирландский сеттер.

Если собака длинношерстная, ростом более 50 см, но менее 70 см, с длинными ушами, то порода – большой вандейский грифон.

Если собака длинношерстная, ростом более 50 см, но менее 70 см, с короткими ушами, то порода – колли.

Если собака длинношерстная, ростом более 50 см и 70 см, с рыжим окрасом и белыми отметинами, то порода – сенбернар.

Если собака длинношерстная, ростом более 50 см и 70 см, с белоснежным окрасом, то порода – ирландский волкодав.

Если собака длинношерстная, ростом более 50 см и 70 см, не с рыжим и не белоснежным окрасом, то порода – ньюфаундленд.

Мы, конечно, специально выбрали систему, в которой потребуется не так уж много знаний. Впрочем, попро­буйте, глядя только в выписанные формулировки, отве­тить на вопрос к какой породе принадлежит собака. Скорее всего, за полминуты это не получится.

Мы будем реализовывать следующий план построения экспертной системы. Сначала строится простейший ва­риант, который будет демонстрировать только основную идею. По сути дела, это решатель. Затем мы добавим остальное — блок объяснения и т.п., что позволит продемон­стрировать работу экспертной системы в полном объеме.

Систему логического вывода (тот самый решатель) мы изобразим орграфом. Каждая вершина графа поме­чена уточняющим вопросом экспертной системы к пользователю или ее ответом на задачу. Для удобства все вершины перенумерованы, начиная с нуля.

Если вершина помечена вопросом экспертной систе­мы, то из нее выходят две дуги. Одна дуга помечена од­ним ответом пользователя, другая – его альтернативным ответом. Вершина, соответствующая ответу экспертной системы на задачу, не имеет выходящих дуг. На рис.2.1 представлен граф, отражающий знания экс­пертной системы. Будем в дальнейшем вершину орграфа называть «состоянием экспертной системы».

 

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

 

По существу, работа экспертной системы означает «путешествие» по этому орграфу. Такое путешествие состоит из последовательности однотипных шагов, на каждом из которых пользователь должен решить, по какой дуге он пойдет из очередной вершины.

Исследуя реляционный подход, мы должны теперь описать этот орграф подходящими таблицами. Сделать это нетрудно: каждую дугу мы опишем номером ее начала и номером ее конца. Кроме того, поскольку дуги у орграфа помечены, мы сделаем в таблице не два столбца — началь­ная и конечная вершины дуги, — а три, добавив столбец «Ответ пользователя». Назовем эту таблицу «Ребра».

 

Таблица 1

Таблица «Ребра»

Начало Конец Ответ пользователя  
    Короткошерстная  
    Длинношерстная  
    Менее 50 см  
    Более 50 см  
    Менее 50 см  
    Более 50 см  
    Короткий  
      Длинный
      Более 50 кг
      Менее 50 кг
      Да
      Нет
      Менее 70 см
      Более 70 см
      Длинные
      Короткие
      Длинные
      Короткие
      Нет
      Да
      Короткое
      Длинное
      Да
      Нет
             

 

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

Таблица 2

Таблица «Имена»

Имя Состояние
Порода - Английский бульдог  
Порода - Датский дог  
Порода - Фоксхаунд  
Порода - Кокер-спаниель  
Порода - Ирландский сеттер  
Порода - Гончая  
Порода - Большой вандейский гриффон  
Порода - Колли  
Порода - Сенбернар  
Порода - Мопс  
Порода - Чихуахуа  
Порода - Ирландский волкодав  
Порода - Ньюфаундленд  
   

 

 

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

 

Таблица 3

Таблица «Текущее»

Состояние
 

 

Сейчас в эту таблицу записано на­чальное состояние экспертной системы.

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

Таблица «Вопросы» также имеет два атрибута: Состояние и Вопрос.

 

Таблица 4

Таблица «Вопросы»

Состояние Вопрос
  Какая собака: длинношерстная или короткошерстная?
  Каков рост собаки менее 50 или более 50 см?
  Каков рост собаки менее 50 или более 50 см?
  У собаки короткий хвост или длинный хвост?
  Собака весит более 50 кг или менее?
  Собака доброжелательна?
  У собаки рост менее 70 см или более?
  Уши длинные или короткие?
  Уши длинные или короткие?
  Окрас рыжий с белыми отметинами?
  Тело длинное или короткое?
  Белоснежный окрас?

2.2. Создание экспертной системы (простейший вариант)

 

Прежде всего, надо создать те таблицы, ко­торые описаны в тек­сте. После таблиц создаем запрос «Варианты», который позволяет выбрать те дуги, по которым пользователь может двигаться из текущего состояния.

 

Рис. 2.2 - Запрос «Варианты»

Теперь нужно предложить пользователю выбрать одну из этих дуг и пометить конец выбранной дуги в таб­лице «Текущее». Все это мы реализуем с помощью фор­мы с полем со списком. Эта форма будет иметь един­ственное поле, в котором и будет выпадать список дуг, доступных в данном состоянии. Эту форму назовем «Варианты».

 

 

Рис. 2.3 - Форма «Варианты»

 

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

 

 

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

 

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

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

и инструмент «Поле со списком»

 

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

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

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

 

 

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

 

С помощью команды «Свойства» меню «Вид» при­своим свойствам следующие значения: Данные — Состояние, Источник строк — Варианты, Число столбцов — 2, Ширина столбцов — 1,9 см.

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

 

Вид данных нужно выбрать из списка (P.S. «Состояние» должно быть в списке, если правильно указан источник данных при создании формы).

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

 

Рис. 2.9 - Макрос 1 открывает и закрывает форму ВАРИАНТЫ

 

При создании макросов необходимо указывать имя формы и режим в соответствии с примечаниями.

Построенный макрос нужно привязать к обновлению поля со списком формы «Варианты». Для этого нужно снопа выделить в режиме конструктора поле со спис­ком, открыть его свойства и приписать событию «После обновления» значение «Макрос1».

 

Рис. 2.10 - Подготовка режима «Обновление поля»

 

Теперь после обновления поля будет выполняться Макрос1.

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

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2021-04-20 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: