Экспертные системы, базирующиеся на фактах 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Экспертные системы, базирующиеся на фактах



 

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

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

Интерпретатор выполняет различные функции внутри системы на основе следующей схемы:

1. Система имеет предложения в базе знаний, которые управляют поиском и сопоставлением. Интерпретатор сопоставляет эти предложения с элементами данных в базе данных.

2. Если может быть вызвано более одного правила, то система использует возможности Турбо-Пролога для разрешения конфликта. Следовательно, пользователю/программисту не нужно рассматривать потенциально возможные конфликты.

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

Так же как и в системе, базирующейся на правилах, данный циклический процесс является процессом распознавание-действие. Красота и большие возможности системы, основанной на фактах, заключаются в том, что она отражает структуру самого Турбо-Пролога. Этим объясняется тот факт, что она очень эффективна в работе.

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

rule(1,"Собака","Гончая",[1,2,3,4]).

rule(2,"Собака","Немецкий Дог",[1,5,3,4,6]).

cond(1,"короткошерстная").

cond(2,"высота в холке не более 57 см").

cond(3,"длинные уши").

cond(4,"дружелюбный характер").

cond(5,"низко посаженный хвост").

cond(6,"вес более 45 кг").

Заметьте, что в каждом предложении типа rule первый аргумент - номер правила, второй аргумент - тип объекта ("собака") и третий аргумент - порода собаки. В нашем случае это гончая или дог. Список целых чисел задает номера условий из предложений типа cond (условие). Предложения типа cond содержат все характеристики для любой породы, представленной в базе знаний.

Списки номеров условий служат для хранения множества фактов, согласно которым выбираются предложения типа rule. Интерпретатор в экспертной системе, базирующейся на логике, использует эти номера условий, чтобы делать соответствующий выбор.

Добавление и обновление предложений базы знаний являются простыми операциями (предикаты retract и assert). Экспертные системы, базирующиеся на фактах, легко проектировать, развивать и поддерживать в Турбо-Прологе, так как по мере расширения базы знаний программа не требует модификации. Расширение, прежде всего, заключается в постепенном добавлении новых утверждений.

ЛИСТИНГ

 

/* Программа: Эксперт по породам собак */

/* Пример экспертной системы, базирующейся на логике */

domains= integer *   = integer *

/* Предикаты базы данных */(integer, symbol,symbol, conditions)(integer, symbol)(integer)(integer)

predicates

/* Предикаты системы пользовательского интерфейса */

do_expert_job_consulting(symbol)

/* Предикаты механизма вывода */(history, symbol)(integer, history, conditions)(history, integer, integer, symbol)_answer(history, integer, symbol,integer, integer)_expert_job.

/* База знаний (БЗ) */(1, "Собака", "Короткошерстная собака", [1]).

rule(2,    "Собака", "Длинношерстная собака ", [2]).

rule(3,    "Короткошерстная собака","Английский бульдог",[3,5,7]).

rule(4,    "Короткошерстная собака","Гончая", [3,6,7]).

rule(5,    "Короткошерстная собака","Немецкий Дог", [5,6,7,8]).

rule(6,    "Короткошерстная собака","Американский фоксхаунд",

[4,6,7]).

rule(7,    "Длинношерстная собака ", "Кокер спаниель", [3,5,6,7]).

rule(8,    "Длинношерстная собака ", "Ирландский Сеттер", [4,6]).

rule(9, "Длинношерстная собака ", "Колли", [4,5,7]).

rule(10, "Длинношерстная собака ", "Сенбернар", [5,7,8]).

 

cond(1,"Короткошерстная").

cond(2,"Длинношерстная").

cond(3,"Высота в холке не более 57 см").

cond(4,"Высота в холке не более 77 см ").

cond(5,"Низко посаженный хвост").

cond(6,  "Длинные уши").

cond(7,  "Дружелюбный характер").

cond(8,  "Вес более 45 кг").

/* Система пользовательского интерфейса */

do_expert_job:-

makewindow(1,7,7,"ЭКСПЕРТ ПО ПОРОДАМ СОБАК", 0, 0, 25, 80),

do_consulting, nl, nl, nl, nl, write("Нажмите любую клавишу"),(_), exit._consulting:-goes(Mygoal),go([],Mygoal),!._consulting:-nl, write("Извините, я не смогу Вам помочь"),clear.

do_consulting.(Mygoal):- clear,clearwindow, nl, nl,nl,nl,("ДОБРО ПОЖАЛОВАТЬ"),nl, nl, nl,

write("Проводится идентификация породы"),nl,

write("Для того, чтобы начать процесс идентификации,"),nl,

write("введите слово 'Собака'. "), nl, nl, readln(Mygoal),!.

inpo(HISTORY,RNO,BNO,TEXT):-write("?:- ",TEXT,"? "),

makewindow(2,7,7,"Для ответа на вопрос",10,54,7,35),

write("введите 1, если Ваш ответ 'да',"),

write("введите 2, если Ваш ответ 'нет',"),

write("введите 0, для выхода из системы"),nl,

readint(RESPONSE),,shiftwindow(1),_answer(HISTORY,RNO,TEXT,BNO,RESPONSE).

/*  Механизм вывода   */(HISTORY, Mygoal):-rule(RNO,Mygoal,NY,COND),(RNO,HISTORY,COND),!,([RNO|HISTORY],NY).(_,Mygoal):-not(rule(_,Mygoal,_,_)),!,,write("Вероятно Ваша собака - ",Mygoal,"."), nl, nl, nl.(RNO,HISTORY,[BNO|REST]):-

yes(BNO),!,check(RNO,HISTORY,REST).(_,_,[BNO|_]):- no(BNO),!,fail.(RNO,HISTORY,[BNO|REST]):-cond(BNO,TEXT),(HISTORY,RNO,BNO,TEXT),(RNO,HISTORY,REST).(_,_,[])._answer(_,_,_,_,0):- exit._answer(_,_,_,BNO,1):-assert(yes(BNO)),write(yes),nl._answer(_,_,_,BNO,2):-assert(no(BNO)),write(no),nl,fail.:- retract(yes(_)),retract(no(_)),fail,!..

/*  Конец программы  */

Выбор типа ЭС

 

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

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

Если же Ваша экспертная система будет содержать не более нескольких сотен правил, использование системы, базирующейся на правилах более предпочтительно. В силу того, что продукционные правила почти не зависят друг от друга, создание и тестирование такой экспертной системы проще. Просто осуществляется и изменение правил с целью изучить эффект, вызванный таким изменением. В системах же, базирующихся на фактах, изменение параметров внутри базы знаний должно производится с большей осторожностью, так как изменения менее заметны, а результат может быть разрушительным и восстановление затруднительным.

Если быстрота является главным требованием к разрабатываемой экспертной системе, то можно выбрать либо систему на фактах, полностью находящуюся в оперативной памяти, либо систему, базирующуюся на правилах. Обе будут работать хорошо. Если, однако, экспертная система должна содержать большую базу знаний, то у разработчика имеется единственный вариант - система на фактах, находящаяся на диске.


КОНТРОЛЬНЫЕ ВОПРОСЫ

 

1. Для чего служит и что содержит секция database?

2. Какое имя получает БД по умолчанию.

3. Перечислить достоинства и недостатки использования резидентных БД.

.   Перечислить достоинства и недостатки использования нерезидентных БД.

5. Для чего предназначены и как выполняются стандартные предикаты asserta, assertz, retract, save, consult, readterm, findall.

6. Опишите работу стандартного предиката dir. Приведите примеры.

.   Для каких целей используется стандартный предикат disk? Приведите примеры его использования.

8. Как в Прологе описываются файлы.

9. Привести стандартные предикаты для работы с резидентными БД.

10. Для чего предназначены и как выполняются стандартные предикаты openread, openwrite, openappend, openmodify, readdevice, writedevice, closefile.


ПРАКТИЧЕСКИЕ ЗАДАНИЯ

 

Написать Пролог-программу, реализующую основные функции работы с резидентной и нерезидентной БД в предметной области, соответствующей варианту задачи.

1. Личная библиотека. Картотека домашней библиотеки: выходные данные книги (авторы, название, издательство и так далее), раздел библиотеки (специальная литература, хобби, домашнее хозяйство, беллетристика и так далее), происхождение и наличие книги в данный момент, субъективная оценка книги. Выбор книг по произвольному запросу; инвентаризация библиотеки.

2. Касса аэрофлота. Расписание: номер рейса, маршрут, пункты промежуточной посадки, время отправления, дни полета. Количество свободных мест на каждом рейсе. Выбор ближайшего рейса до заданного пункта (при наличии свободных мест), оформление заданного числа билетов по согласованию с пассажиром (с уменьшением числа свободных мест), оформление посадочной ведомости.

3. Магазин с одним продавцом. Компьютер вместо кассового аппарата. База наличия товаров: наименование, единица измерения, цена единицы, количество, дата последнего завоза. Регистрация поступления товара (как старых, так и новых наименований). Оформление покупки: выписка чека, корректировка базы. Проблема уценки и списания. Инвентаризация остатков товара с вычислением суммарной стоимости.

4. Отдел кадров. База данных о сотрудниках фирмы: паспортные данные, образование, специальность, подразделение, должность, оклад, даты поступления в фирму и последнего назначения и т. д. Выбор по произвольному шаблону. Сокращение штатов: выбор для увольнения лиц пенсионного и предпенсионного возраста, подготовка приказа.

5. Склад, База товаров, хранящихся на складе: наименование, единица измерения, цена единицы, количество, дата последнего завоза. Регистрация поступления товара (формирование приходной накладной) и отгрузки (расходная накладная). Вывод инвентарной ведомости.

6. Администратор гостиницы. Список номеров: класс, число мест. Список гостей: паспортные данные, даты приезда и отъезда, номер. Поселение гостей: выбор подходящего номера (при наличии свободных мест), регистрация, оформление квитанции. Отъезд: выбор всех постояльцев, отъезжающих сегодня, освобождение места или оформление задержки с выпиской дополнительной квитанции. Поиск гостя по произвольному признаку.

7. Справочник меломана. База групп и исполнителей; база песен; база дисков с перечнем песен (в виде ссылок). Выбор всех песен заданной группы; всех дисков, где встречается заданная песня.

8. Ежедневник. База намечаемых мероприятий - дата, время и протяженность, место проведения. Автоматическое напоминание ближайшего дела: по текущей дате и времени; удаление вчерашних дел либо перенос на будущее. Анализ «накладок» - пересечений планируемых дел. Просмотр дел на завтра, послезавтра и так далее.

9. Терминология. База определений какой-либо науки: вводимый термин, его толкование (определение), ссылки на используемые термины. Возможность просмотра всей цепочки от заданного термина до первичных понятий.

10. Справочник лекаря. База болезней: название, симптомы, процедуры, перечень рекомендуемых лекарств с указанием требуемого количества. База медикаментов на складе: название, количество, взаимозаменяемость. Формирование рецепта после осмотра больного, проверка наличия лекарств, корректировка запасов.

11. Сбербанк. Сведения о вкладчиках банка: номер лицевого счета, категория вклада, паспортные данные, текущая сумма вклада, дата последней операции. Операции приема и выдачи любой суммы, автоматическое начисление процентов.

.   Ломбард. База хранимых товаров и недвижимости: анкетные данные клиента, наименование товара, оценочная стоимость; сумма, выданная под залог, дата сдачи, срок хранения. Операции приема товара, возврата, продажи по истечении срока хранения.


ТРЕБОВАНИЯ К ОТЧЕТУ

 

Отчет должен содержать задание, структуру таблиц БД, тексты программы на языке Турбо-Пролог, распечатку результата работы тестового примера.

 


БИБЛИОГРАФИЧЕСКИЙ СПИСОК

 

1. Братко И. Программирование на языке Пролог для искусственного интеллекта. / Пер. с англ. - М.: Мир, 1990. - 560 с.

. Стерлинг Л. Искусство программирования на языке Пролог. / Л. Стерлинг, Э. Шапиро; Пер. с англ. - М.: Мир, 1990. - 225 с.

. Ин Ц. Использование Турбо-Пролога. / Ц. Ин, Д. Соломин; Пер. с англ. - М.: Мир, 1993. - 608 с.

. Рыжков Ю. И. Информатика. Лекции и практикум. - СПб.: КОРОНА принт, 2000. - 256 с.

. Основы современных компьютерных технологий: Учеб. пособие / Б. Н. Артамонов, Г. И. Брикалов, В. Э. Гофман, Я. Е. Кадигроб, Р. И. Компаниец, А. Г. Липецких, М. Г. Мальцев, Ю. И. Рыжков, А. Д. Хоменко, В. М. Цыганов; Под ред. проф. Хомоненко А.Д. - СПб.: КОРОНА принт, 1998. - 448 с.

7. Основы программирования на языке Турбо-пролог: Методические указания к практическим занятиям по курсу «Представление знаний в информационных системах» / Воронеж. гос. технол. акад.; Сост. И.О. Павлов, С.В. Кулакова. - Воронеж, 2001. - 32 с.


Учебное издание

 

РАЗРАБОТКА ЭКСПЕРТНЫХ СИСТЕМ

СРЕДСТВАМИ ЯЗЫКА ТУРБО-ПРОЛОГ

Методические указания к практическим занятиям

по курсу «Представление знаний

в информационных системах».

Для студентов специальности 071900 -

«Информационные системы и технологии»

Составители ПАВЛОВ Игорь Олегович,

КУЛАКОВА Светлана Владимировна

Редактор Н.А. Сотникова

Корректор Н.В. Бургонова

Компьютерный набор и верстка С. В. Кулакова

Подписано в печать.2003.

Формат 60х84 1/16. Бумага офсетная. Гарнитура. Таймс. Ризография.

Усл. печ. л. 2,09. Уч.-изд. л. 2,0. Тираж 200 экз. Заказ.С-.

Воронежская государственная технологическая академия (ВГТА)

Участок оперативной полиграфии ВГТА

Адрес академии и участка оперативной полиграфии ВГТА:

Воронеж, пр. Революции, 19



Поделиться:


Последнее изменение этой страницы: 2020-03-14; просмотров: 268; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.141.47.221 (0.054 с.)