Экспертные системы с представлением знаний на основе логики предикатов
Курсовая работа, 16 Мая 2013, автор: пользователь скрыл имя
Краткое описание
Экспертная система - программа, которая использует знания специалистов (экспертов) о некоторой конкретной узкоспециализированной предметной области и в пределах этой области способна принимать решения на уровне эксперта-профессионала.
В основе функционирования ЭС лежит использование знаний, а манипулирование ими осуществляется на базе эвристических правил, сформулированных экспертами. ЭС выдают советы, проводят анализ, выполняют классификацию, дают консультации и ставят диагноз. Они ориентированы на решение задач, обычно требующих проведения экспертизы человеком-специалистом.
Содержание
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
Прикрепленные файлы: 1 файл
курсовой.docx
— 419.91 Кб (Скачать документ)К логическим моделям относятся:
- логика высказываний;
- логика предикатов первого порядка;
- логика Хорна в языке Prolog и ему подобных системах;
- логика предикатов высших порядков;
- трехзначная логика;
- логика возможных миров;
- модальные логики;
- теория нечетких множеств;
- нечеткая логика;
- лингвинистические переменные.
Язык логического программирования
PROLOG
Пролог (Prolog) — язык логического программирования, основанный на логике дизъюнктов Хорна, представляющей собой подмножество логики предикатов первого порядка.
В основе такого представления лежит язык математической логики, позволяющий формально описывать понятия математической логики и связи между ними. В естественном языке существуют грамматические правила, которые задают его синтаксис. Эти правила не связаны со значением слов, т.е. с семантикой языка. Основными компонентами естественного языка являются слова (существительные, глаголы, предлоги, наречия, прилагательные), предложения и контексты. Правила языка задают порядок следования слов в предложениях.
Язык, предназначенный
для формализации знаний, должен иметь
собственный синтаксис и
Предикатом
называется функция, принимающая только
два значения – истина и ложь
– и предназначенная для
Встроенный
в PROLOG режим управления использует
стратегию обратного
С практической точки зрения, пользуясь языком PROLOG, программист в качестве "бесплатного приложения" получает в свое распоряжение следующие возможности:
- индексированную базу данных фраз, которые можно использовать для представления правил, процедур или данных;
- универсальный механизм сопоставления, который позволяет выполнять сопоставление данных и шаблонов, включающих переменные, и возвращать подстановку, которая может обеспечить их совпадение;
- стратегию управления (поиск в глубину — depth-first search), основанную на правилах нисходящего поиска (фразы, которые размещены в базе данных ближе к "голове", обрабатываются первыми) и вычислении слева направо (подцели обрабатываются в том порядке, в котором они перечислены в списке).
Любую программу на ПРОЛОГе можно рассматривать как базу данных. Механизм обработки запросов в ПРОЛОГе называется унификацией. После того как пользователь вводит запрос, интерпретатор приступает к анализу содержимого базы данных, выполняя допустимые подстановки фактов в целевое утверждение, чтобы обосновать его истинность.
Структура программы на Prolog
Программа на языке PROLOG включает следующие основные разделы:
- описание имен и структур объектов (domains);
- описание предикатов – названий отношений, существующих между объектами (predicates);
- раздел целевых утверждений (goal), который может отсутствовать; в этом случае программа будет запрашивать целевое утверждение при запуске;
- описание фактов и правил, описывающих отношения (clauses).
- Имена объектов (констант) в 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. Древовидная структура базы знаний для выбора породы собак
Для построения БЗ на основе предложений-фактов Пролога зададим три предиката:
- - topic -устанавливающий классификацию верхнего уровня дерева структуры БЗ;
- - rule - определяющий связи объектов с древовидной структурой и набором характеристик собак;
- - cond - определяющий характеристики пород для данной ЭС.
Текст основного модуля программы ЭС приводится в Приложении 1.
Предикат topic определяет тип породы (короткошерстная или длинношерстная). Предикат rule указывает название породы, порядковый номер породы (правила) и список номеров характеристик пород. В предикате cond определяются сами характеристики. Предикатом, определяющим цель программы, является предикат do_exspert_ job, открывающий окно ЭС и задающий меню режимов работы ("начало консультаций"/"выход"). После выбора режима консультации пользователь может запросить классификацию, используемую в ЭС, или начать процесс выбора. Последовательность ответов пользователя фиксируется в предикатах базы данных yes и no. Правила erase и clear выполняют очистку БД. Поиск данных по образцу, за данному пользователем, осуществляется при помощи правила check. Организация диалога при помощи меню исключает возможные ошибки пользователя. Результатом диалога - консультации будет либо сообщение о выборе породы собаки, либо ответ о невозможности выбора при заданных пользователем требованиях.
Заключение
Огромный
интерес к экспертным системам вызван
следующими основными причинами. Во-первых,
они ориентированы на решение
широкого круга задач в
В настоящее время в продаже уже имеется довольно много экспертных систем различных фирм, в том числе для персональных компьютеров.
Стоимость выпускаемых экспертных систем пока довольно велика. Работы в области создания экспертных систем активно продолжаются.
Список литературы
- Д. Джарратано. Экспертные системы: принципы разработки и программирование : Д. Джарратано, Г. Райли. – 4-е издание. – М.: ООО "И.Д. Вильямс", 2007.
- П. Джексон. Введение в экспертные системы [Текст]: П. Джексон - М.: ООО "И.Д. Вильямс", 2001.
- А.Н. Адаменко, А.М. Кучуков. Логическое программирование и Prolog СПб.: БХВ—Петербург, 2003.
- И. Братко. Алгоритмы искусственного интеллекта на языке PROLOG. М.: «Вильямс», 2004.
- Экспертная система – Википедия // Режим доступа: http://ru.wikipedia.org/wiki/
Экспертные_системы - Представление знаний – Википедия // Режим доступа: http://ru.wikipedia.org/wiki/
Представление_знаний - Инженерия знаний – Википедия // Режим доступа: http://ru.wikipedia.org/wiki/
Инженерия_знаний
Приложение 1
/* Программа 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(" Извините, я не могу Вам помочь."),