Автор работы: Пользователь скрыл имя, 16 Мая 2013 в 18:28, курсовая работа
Экспертная система - программа, которая использует знания специалистов (экспертов) о некоторой конкретной узкоспециализированной предметной области и в пределах этой области способна принимать решения на уровне эксперта-профессионала.
В основе функционирования ЭС лежит использование знаний, а манипулирование ими осуществляется на базе эвристических правил, сформулированных экспертами. ЭС выдают советы, проводят анализ, выполняют классификацию, дают консультации и ставят диагноз. Они ориентированы на решение задач, обычно требующих проведения экспертизы человеком-специалистом.
2 Введение………………………………………….… ….…….... .…..3
3 Теоретические сведения…………………… . . . .……......….….....5
3.1 Классификация экспертных систем…………… …..……..…..…5
3.2 Область применения экспертных систем…………..………. . …5
3.3 Типовая структура экспертных систем….……….…..…..…….. 8
3.4 Функционирование ЭС…………………………….…....….….…12
3.5 Основные понятия и состав знаний…………….. .………..……13
3.5.1 Состав знаний……………………………………..…….………14
3.5.2 Модели представления знаний……………………….……….16
4 Логическая модель………………………………….….….…….….17
4.1 Язык логического программирования PROLOG……….. .…….21
4.1.1 Структура программы на Prolog……………….……...………22
4.1.2 Запросы к Prolog программе……………………… ….….……23
4.1.3 Базы данных и знаний на прологе…………… ………..……..26
5. Пример ЭС, базирующейся на логике предикатов……….…….26
6. Заключение…………………………………………………….…...29
7. Список литературы……………………………………….…….….30
8. Приложение 1………………………………………………..……..31
К логическим моделям относятся:
Пролог (Prolog) — язык логического программирования, основанный на логике дизъюнктов Хорна, представляющей собой подмножество логики предикатов первого порядка.
В основе такого представления лежит язык математической логики, позволяющий формально описывать понятия математической логики и связи между ними. В естественном языке существуют грамматические правила, которые задают его синтаксис. Эти правила не связаны со значением слов, т.е. с семантикой языка. Основными компонентами естественного языка являются слова (существительные, глаголы, предлоги, наречия, прилагательные), предложения и контексты. Правила языка задают порядок следования слов в предложениях.
Язык, предназначенный
для формализации знаний, должен иметь
собственный синтаксис и
Предикатом
называется функция, принимающая только
два значения – истина и ложь
– и предназначенная для
Встроенный
в PROLOG режим управления использует
стратегию обратного
С практической точки зрения, пользуясь языком PROLOG, программист в качестве "бесплатного приложения" получает в свое распоряжение следующие возможности:
Любую программу на ПРОЛОГе можно рассматривать как базу данных. Механизм обработки запросов в ПРОЛОГе называется унификацией. После того как пользователь вводит запрос, интерпретатор приступает к анализу содержимого базы данных, выполняя допустимые подстановки фактов в целевое утверждение, чтобы обосновать его истинность.
Программа на языке PROLOG включает следующие основные разделы:
В PROLOG можно использовать составные объекты. Составные объекты позволяют описывать иерархические структуры, в которых описание одного предиката включает в себя описание других предикатов. PROLOG имеет большое количество встроенных предикатов, т.е. предикаты, определяемые автоматически.
При описании конкретной предметной
области обычно имеется набор
исходных фактов и правдоподобных допущений,
на основании которых
Запрос
– это последовательность из одного
предиката или множества
Простые запросы, не содержащие переменных, называют да-нет-вопросами. Они допускают лишь два возможных ответа: “Yes” или “No”. В случае ответа “Yes” говорят, что запрос завершился успехом, цель достигнута.
Как правило, в системе, предназначенной для выполнения операторов PROLOG, применяется интерпретатор, хотя в некоторых системах может вырабатываться компилированный код. Общая структура системы PROLOG показана на рисунке 2. Пользователь взаимодействует с системой PROLOG, вводя запросы в форме предикатов и получая ответы. Предикативная база данных содержит предикаты, представленные в виде правил и фактов, которые были в нее введены и в результате сформировали базу знаний. Интерпретатор предпринимает попытки определить, следует ли предикат запроса, введенный пользователем, из базы данных. Если запрос сформулирован как факт и этот факт находится в базе данных, интерпретатор возвращает ответ yes, а если этот факт в базе данных отсутствует — возвращает ответ no.
Рисунок 2. Общая организация системы PROLOG
С другой
стороны, если запрос сформулирован
в виде правила, то интерпретатор
предпринимает попытки
Рисунок 3. Поиск в глубину и поиск в ширину применительно к дереву произвольной формы
После того как система PROLOG принимает этот входной запрос, начинается поиск выражения, голова которого согласуется с входным шаблоном. Такая процедура называется сопоставлением с шаблоном и полностью аналогична сопоставлению с шаблоном, в котором участвуют факты и антецеденты продукционного правила. Поиск начинается с первого введенного оператора, который находится в начале списка операторов, и происходит в направлении к последнему оператору, находящемуся в конце списка.
Когда голова
предиката согласована, система
PROLOG предпринимает попытку
Факты, описанные в разделе clauses, можно рассматривать, как статическую базу данных (БД). Эти факты являются частью кода программы и не могут быть оперативно изменены. Для создания динамической базы данных в PROLOG предусмотрен специальный раздел database. Предикаты в этом разделе могут иметь такую же форму представления, что и в статической части PROLOG -программы, но должны иметь другое имя.
Главное достоинство БД на PROLOG, как и любой другой БД, заключается в возможности быстрого выборочного доступа к информации.
Таким образом, можно сказать, что любая PROLOG -программа может быть названа базой данных. В БД можно только извлекать существующие сведения или изменять данные по заданному закону. В PROLOG -программе за счет использования правил и логического вывода можно получать новые знания. Поэтому PROLOG -программа может рассматриваться в качестве базы знаний (экспертной системы).
Структура предметной области, а, следовательно, и структура базы знаний ЭС данной программы аналогична структуре, изображенной на рисунке 4.
Рисунок 4. Древовидная структура базы знаний для выбора породы собак
Для построения БЗ на основе предложений-фактов Пролога зададим три предиката:
Текст основного модуля программы ЭС приводится в Приложении 1.
Предикат topic определяет тип породы (короткошерстная или длинношерстная). Предикат rule указывает название породы, порядковый номер породы (правила) и список номеров характеристик пород. В предикате cond определяются сами характеристики. Предикатом, определяющим цель программы, является предикат do_exspert_ job, открывающий окно ЭС и задающий меню режимов работы ("начало консультаций"/"выход"). После выбора режима консультации пользователь может запросить классификацию, используемую в ЭС, или начать процесс выбора. Последовательность ответов пользователя фиксируется в предикатах базы данных yes и no. Правила erase и clear выполняют очистку БД. Поиск данных по образцу, за данному пользователем, осуществляется при помощи правила check. Организация диалога при помощи меню исключает возможные ошибки пользователя. Результатом диалога - консультации будет либо сообщение о выборе породы собаки, либо ответ о невозможности выбора при заданных пользователем требованиях.
Огромный
интерес к экспертным системам вызван
следующими основными причинами. Во-первых,
они ориентированы на решение
широкого круга задач в
В настоящее время в продаже уже имеется довольно много экспертных систем различных фирм, в том числе для персональных компьютеров.
Стоимость выпускаемых экспертных систем пока довольно велика. Работы в области создания экспертных систем активно продолжаются.
/* Программа EXPERT2 */
#M
include "menu2.pro"
domains
CONDITIONS = BNO *
HISTORY = RNO *
RNO, BNO, FNO = INTEGER
CATEGORY = SYMBOL
database
/* Предикаты базы данных */
rule(RNO, string, CATEGORY, CONDITIONS)
cond(BNO, string)
yes(BNO)
no(BNO)
topic(string)
predicates
/* Предикаты системы
do_expert_job
show_menu
do_consulting
process(integer)
trangoal(integer,CATEGORY)
info(CATEGORY)
goes(CATEGORY)
listopt
erase
clear
eval_reply(char)
/* Предикаты механизма вывода */
go(HISTORY, CATEGORY)
check(RNO, HISTORY, CONDITIONS)
notest(BNO)
inpo(HISTORY, RNO, BNO, STRING)
do_answer(HISTORY, RNO, STRING, BNO, INTEGER)
goal
do_expert_job.
clauses
/*------- Предикаты системы пользовательского интерфейса --------*/
do_expert_job :-
makewindow(1,$0A,$0B," СОБАКА - ДРУГ ЧЕЛОВЕКА ",
0,0,25,80),
show_menu,
nl,write(" Нажмите клавишу пробела ... "),
readchar(_),
exit.
show_menu :-
menu(10,20,$13,$13,
[" Консультация", " Выход из системы "],
"", 1,Choice),
process (Choice).
process(1) :-
consult("dogs.dba"),
do_consulting.
process(2) :-
removewindow,
exit.
do_consulting :-
goes(Mygoal),
go([],Mygoal),
!.
do_consulting :-
nl, write(" Извините, я не могу Вам помочь."),
Информация о работе Экспертные системы с представлением знаний на основе логики предикатов