Экспертная система Турбо-Пролог
Турбо-Пролог - компиляторно-ориентированный язык программирования высокого уровня. Теоретические сведения о программе. Отладка, модификация и структурная схема программы. Описание предикатов, текст и тестирование программы, руководство пользователя.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 18.02.2012 |
Размер файла | 1,2 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Белорусский национальный технический университет
Факультет информационных технологий и робототехники
Кафедра ПОВТ и АС
Курсовой проект
по дисциплине «Функциональное и логическое программирование»
на тему
«Экспертная система»
Исполнитель: студентка ФИТР 3 курса гр. 107329
Курневич Ю.В.
Руководитель:доцент Ковальков А.Т.
МИНСК 2011
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
ПОСТАНОВКА ЗАДАЧИ
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
СТРУКТУРНАЯ СХЕМА ПРОГРАММЫ
ОПИСАНИЕ ПРЕДИКАТОВ
ТЕКСТ ПРОГРАММЫ
ТЕСТИРОВАНИЕ ПРОГРАММЫ
РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
ВЫВОДЫ
ЛИТЕРАТУРА
ПРИЛОЖЕНИЕ
ВВЕДЕНИЕ
Турбо-Пролог является компиляторно-ориентированным языком программирования высокого уровня; разработан фирмой Borland International и предназначен для программирования задач из области искусственного интеллекта. Как язык программирования ИИ Турбо-Пролог особенно хорош для создания экспертных систем, динамических баз данных, программ с применением естественно-языковых конструкций; он также может быть использован и для других задач общего характера. Турбо-Пролог имеет окна, цветную графику и интерактивные средства ввода-вывода, что свидетельствует о его максимальном удобстве для пользователя прикладных программ.
В экспертных системах, базирующихся на логике, база знаний состоит из утверждений в виде предложений логики предикатов. Такие предложения могут группироваться, образуя базу данных Турбо-Пролога. Правила могут либо описывать данные, либо управлять процессом внутренней унификации Турбо-Пролога. Так же как и в системе на правилах экспертная система, базирующаяся на логике, имеет множество правил, которые могут вызываться с помощью данных из входного потока. Система имеет также интерпретатор, который может выбирать и активизировать модули, включаемые в работу системы. Интерпретатор выполняет различные функции внутри системы на основе следующей схемы:
1. Система имеет предложения в базе знаний, которые управляют поиском и сопоставлением. Интерпретатор сопоставляет эти предложения с элементами данных в базе данных.
2. Если может быть вызвано более одного правила, то система использует возможности Турбо-Пролога для разрешения конфликта. Следовательно, пользователю/программисту не нужно рассматривать потенциально возможные конфликты.
3. Система получает результаты унификационного процесса автоматически, поэтому они могут направляться на нужное устройство вывода информации.
Так же как и в системе, базирующейся на правилах, данный циклический процесс является процессом распознавание-действие. Красота и большие возможности системы, основанной на логике, заключаются в том, что она отражает структуру самого Турбо-Пролога.
Наиболее важным аспектом для базы знаний в системе, основанной на логике, является проектирование базы знаний, ее утверждений и их структуры. База знаний должна иметь недвусмысленную логическую организацию, и она должна содержать минимум избыточной информации. Так же как и в системе, базирующейся на правилах, минимально достаточное количество данных образуют наиболее эффективную систему.
ПОСТАНОВКА ЗАДАЧИ
Отладить и модифицировать программу из раздела 10.11: все сообщения, выдаваемые на экран, должны быть на русском языке, выполнить упражнения 10.1 и 10.2, модифицировать экспертную систему в соответствии с требованием упражнения 10.3.
Упражнения.
10.1. Вызовите экспертную систему, базирующуюся на логике, для выбора породы собаки. Введите различные последовательности ответов "yes"( да) и "no"(нет), наблюдая как работает программа.
10.2. Пронаблюдайте, что происходит, когда ваши ответы подобраны так, что их нельзя сопоставить с породами, характеристики которых хранятся в базе знаний. Вы увидите, что внутренние программы унификации Турбо-Пролога производят исчерпывающее сопоставление. Только когда никакое сопоставление не возможно, система выдает соответствующее сообщение.
10.3 Модифицируйте базирующуюся на логике экспертную систему для выбора породы собаки, добавив гипотетическую породу. Проверьте программу и убедитесь, что она идентифицирует породу, которую вы "спроектировали". Заметьте, что ваши характеристики собаки должны быть комбинацией характеристик уже существующих в программе, но комбинация должна отличаться от комбинаций для других пород.
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
турбо пролог структура предикат
Экспертная система - это компьютерная программа, которая в некоторой области проявляет степень познаний равнозначную степени познания человека-эксперта. Обычно эта область строго ограничена. Однако, количество приложений огромно. Сюда входят понимание речи, анализ изображений, прогноз погоды, оценка будущего урожая, медицинская диагностика, разработка интегральных схем, финансирование, управление воздушным движением, управление боем и т.д.
Чтобы проводить экспертизу, компьютерная программа должна быть способна решать задачи посредством логического вывода и получать при этом достаточно надежные результаты. Программа должна иметь доступ к системе фактов, называемой базой знаний. Программа также должна во время консультации выводить заключения из информации, имеющейся в базе знаний. Некоторые экспертные системы могут также использовать новую информацию, добавляемую во время консультации. Экспертную систему, таким образом, можно представлять состоящей из трех частей:
1. База знаний (БЗ).
2. Механизм вывода (МВ).
3. Система пользовательского интерфейса (СПИ).
База знаний - центральная часть экспертной системы. Она содержит правила, описывающие отношения или явления, методы и знания для решения задач из области применения системы. Можно представлять базу знаний состоящей из фактических знаний и знаний, которые используются для вывода других знаний. Утверждение "Джон Ф. Кеннеди был 35-м президентом Соединенных Штатов" - пример фактического знания. "Если у вас болит голова,то примите две таблетки цитрамона" - пример знания для вывода. Сама база знаний обычно располагается на диске или другом носителе.
Механизм вывода содержит принципы и правила работы. Механизм вывода "знает", как использовать базу знаний так, чтобы можно было получать разумно согласующиеся заключения (выводы) из информации, находящейся в ней.
Когда экспертной системе задается вопрос, механизм вывода выбирает способ применения правил базы знаний для решения задачи, поставленной в вопросе. Фактически, механизм вывода запускает экспертную систему в работу, определяя какие правила нужно вызвать и организуя к ним доступ в базу знаний. Механизм вывода выполняет правила, определяет, когда найдено приемлемое решение и передает результаты программе интерфейса с пользователем. Когда вопрос должен быть предварительно обработан, то доступ к базе знаний осуществляется через интерфейс с пользователем. Интерфейс - это часть экспертной системы, которая взаимодействует с пользователем.
Как правило, пользователи мало знают об организации базы знаний, поэтому интерфейс может помочь им работать с экспертной системой даже, если они не знают, как она организована. Интерфейс может также объяснить пользователю , каким образом экспертная система выводит результат.
Система интерфейса с пользователем принимает информацию от пользователя и передает ему информацию. Просто говоря, система интерфейса должна убедиться, что, после того как пользователь описал задачу, вся необходимая информация получена. Интерфейс, основываясь на виде и природе информации, введенной пользователем, передает необходимую информацию механизму вывода. Когда механизм вывода возвращает знания, выведенные из базы знаний, интерфейс передает их обратно пользователю в удобной форме. Интерфейс с пользователем и механизм вывода могут рассматриваться как "приложение" к базе знаний. Они вместе составляют оболочку экспертной системы. Для базы знаний, которая содержит обширную и разнообразную информацию, могут быть разработаны и реализованы несколько разных оболочек. Хорошо разработанные оболочки экспертных систем обычно содержат механизм для добавления и обновления информации в базе знаний.
Представление знаний - это множество соглашений по синтаксису и семантике, согласно которым описываются объекты. Хорошее правило при проектировании представления знаний - это организация знаний в такой форме, которая позволяет легко осуществлять доступ с помощью естественных и простых механизмов. "Чем проще, тем лучше" - правило, которое нужно помнить, при работе с представлением знаний.
Метод вывода - это систематический способ для доказательства того, что из множества предположений следует некоторое заключение. Этот систематический метод закодирован в правилах вывода, которые специфицируют принятую логику получения заключения. Вывод осуществляется посредством поиска и сопоставления по образцу. Другие языки требуют написания собственных правил поиска и сопоставления по образцу. В Турбо-Прологе эти задачи выполняются с помощью внутренних программ унификации, поэтому в данном случае требуется только написать необходимые спецификацию. Как в системах, базирующихся на правилах, так и в системах, базирующихся на логике, пользователь получает ответы на свои запросы в соответствии с логикой, заложенной в системе. В первом случае запросы пользователя трансформируются в форму, сопоставимую с формой правил базы знаний. Механизм вывода инициализирует процесс сопоставления, начиная с "верхнего" правила. Обращение к правилу называется "вызовом". Вызов соответствующих правил в процессе сопоставления продолжается до тех пор, пока не произошло сопоставление или не исчерпана вся база знаний, а сопоставление не найдено. Во втором случае трансформированные запросы являются значениями, которые сопоставляются со значениями, находящимися в базе знаний.
Если механизм вывода обнаруживает, что можно вызвать более одного правила, то необходимо осуществить определенный выбор. При этом приоритет отдается обычно либо правилам, которые более специфицированы, либо правилам, которые учитывают больше текущих данных. Этот процесс называется разрешением конфликта.
Система пользовательского интерфейса обеспечивает взаимодействие между экспертной системой и пользователем. Это взаимодействие обычно включает несколько функций:
1. Обработка данных, полученных с клавиатуры, и высвечивание вводимых и выводимых данных на экране.
2. Поддержка диалога между пользователем и системой.
3. Распознавание ситуации непонимания между пользователем и системой.
4. Обеспечение "дружественности" по отношению к пользователю.
Система интерфейса с пользователем должна эффективно обрабатывать ввод и вывод. Для этого необходимо обрабатывать вводимые и выводимые данные быстро, в ясной и выразительной форме. Необходимо также включить возможность работы с дополнительными средствами такими, как печатающие устройства, магнитные диски и дополнительные файлы данных.
Кроме того, система интерфейса должна поддерживать соответствующий диалог между пользователем и системой. Диалог - это общая форма консультации с экспертной системой. Консультация должна завершаться ясным утверждением, выдаваемым системой, и объяснением последовательности вывода, приведшей к этому утверждению.
Система пользовательского интерфейса должна также распознавать непонимание, между пользователем и системой, возникшее либо из-за ошибки, либо на принципиальной основе . Система должна реагировать соответствующим образом на эту ситуацию. Например, не должно произойти сбоя системы, если пользователь вводит 1, когда ожидается "да" или "нет", или когда пользователь задает бессмысленный вопрос.
Способность экспертной системы моделировать человека эксперта может меняться от простых познавательных процессов до включения новых знаний или новых способов решения задачи. Система интерфейса должна информировать пользователя о методике работы системы и ее развитии, если такое развитие предусмотрено в системе.
Наконец, система пользовательского интерфейса должна быть "дружелюбной" к пользователю. Например, последовательность меню, показывающая задачи, которые пользователь может выбрать, является необходимой чертой экспертной системы. Пользователь также должен иметь возможность взаимодействовать с экспертной системой естественным образом. В идеале пользователь должен иметь возможность использовать естественный язык.
СТРУКТУРНАЯ СХЕМА ПРОГРАММЫ
Работа программы организована согласно схеме представленной на рис. 3.1. Выполнение программы начинается с вызовом предикат expert. После этого программа ожидает действий пользователя и в зависимости от этих действий вызывает соответствующие пользовательские предикаты.
Размещено на http://www.allbest.ru/
Рис. 3.1 - Структурная схема программы
ОПИСАНИЕ ПРЕДИКАТОВ
repeat - организация в программе цикла.
make_menu - создание меню и графического интерфейса.
process(Key)(char): (i) -создание системы запросов в меню. Key обозначает пункт меню.
load_basa - загрузка базы знаний из файла.
save_basa - сохранение базы знаний в файл.
clear_basa - очистка базы знаний.
expert- главный предикат
consulting (Poroda, Cond, Ans)(string,str(integer, string)*,integer*):
(i, i, o) - консультация пользователя с оболочкой ЭС, где Poroda - порода собаки, Cond - список структуры Номер-Характеристика, Ans - список положительных ответов пользователя.
transform (C1, C2)(char, char): (i, o) - преобразование символа С1 в символ С2.
add_list (C, El, List1, List2)(char, integer, integer*, integer*): (i, i, i, o) -добавление элемента El к списку List1, которое зависит от параметра C, где List2 - полученный список.
find_poroda (Poroda, Cond)(string, integer*): (o, i) - поиск породы собаки Poroda, в зависимости от списка ответов пользователя Cond.
ravno (List1, List2)(integer*, integer*): (i, i) - проверка равенства списков List1 и List2.
belong (El, List)(integer, integer*): (i, i) - проверка принадлежности элемента El списку List.
title - вывод заголовка экспертной системы на экран.
ТЕКСТ ПРОГРАММЫ
DOMAINS
% Список элементов типа INTEGER
l_i=integer*
% Список элементов типа STRING
l_s=string*
i=integer
s=string
c=char
% Структура Порода-Параметры и его список
structura=str(i,s)
l_str=structura*
file=myfile
DATABASE
rule(s,l_i)
cond(structura)
PREDICATES
% Создание цикла
nondeterm repeat
% Главный предикат
nondeterm expert
% Создание меню
nondeterm make_menu
nondeterm process(c)
% Загрузка базы знаний
nondeterm load_basa
% Сохранение базы знаний
nondeterm save_basa
% Очистка базы знаний
nondeterm clear_basa
% Консультация
nondeterm consulting(s,l_str,l_i)
% Преобразование символов
nondeterm transform(c,c)
% Добавление элемента к списку
nondeterm add_list(c,i,l_i,l_i)
% Поиск породы собаки
nondeterm find_poroda(s,l_i)
% Проверка равенства списков
nondeterm ravno(l_i,l_i)
% Проверка принадлежности элемента списка
nondeterm belong(i,l_i)
%Заголовок экспертной системы
nondeterm title
CLAUSES
expert:-
title,
load_basa,
make_menu,
save_basa,
clear_basa.
make_menu:-
repeat,
write("***********************************************"),nl,nl,
write("Выберите один из пунктов меню:"),nl,nl,
write("1. Консультация."),nl,
write("2. Просмотр базы знаний."),nl,
write("3. Добавление нового знания."),nl,
write("4. Удаление знаниня."),nl,
write(""),nl,
write(" 0 - Выход."),nl,nl,
write("***********************************************"),nl,nl,
readchar(C),
process(C),!.
process('1'):-
save_basa,
clear_basa,
load_basa,
nl,write(""),nl,
findall(Str,cond(Str),List),
consulting(" ",List,Cond),
find_poroda(Poroda,Cond),
nl,write(" ",Poroda),nl,nl,
make_menu.
process('2'):-
save_basa,
clear_basa,
load_basa,
existfile("basa.exp"),
file_str("basa.exp",Str),
write(Str),nl,
make_menu.
process('3'):-
save_basa,
clear_basa,
load_basa,
nl,write(" Введите название породы собаки для добавления: "),
readln(Poroda),nl,
findall(Str,cond(Str),List),
consulting(Poroda,List,Cond),
assertz(rule(Poroda,Cond)),nl,nl,
write(" Добавление прошло успешно."),nl,nl,
make_menu;
nl,write(" Ошибка при вводе !!!"),
make_menu.
process('4'):-
save_basa,
clear_basa,
load_basa,
nl,write(" Введите название породы собаки для удаления: "),
readln(Poroda),nl,
retract(rule(Poroda,_)),
write(" Удаление прошло успешно !"),nl,nl,
make_menu;
nl,write(" Ошибка при вводе !!!"),nl,nl,
make_menu.
process('0'):-write("Выйти из программы ???(y/n) "),
readln(Ans),
upper_lower(Ans,Ans1),
frontchar(Ans1,'y',_),!.
process(_):-
write(" Ошибка при вводе."),nl,!.
repeat.
repeat:-repeat.
load_basa:-consult("basa.exp"),!.
load_basa:-write(" Ошибка при загрузке правил из файла !").
save_basa:-save("basa.exp").
title:-write("***************ЭКСПЕРТНАЯ СИСТЕМА***************"),nl,
write("**********ОПРЕДЕЛЕНИЕ ПОРОДЫ СОБАК*********"),nl,nl.
clear_basa:-
retractall(rule(_,_)),
retractall(cond(_)).
consulting(_,[],[]).
consulting(Poroda,[str(N,Cond)|T1],List1):-
nl,
write(Cond,"? (д/н)"),nl,
readchar(Answer1),
write(Answer1),
transform(Answer1,Answer2),
consulting(Poroda,T1,List2),
add_list(Answer2,N,List2,List1),!.
transform('д','y').
transform('Д','y').
transform('Y','y').
transform('y','y').
transform('1','y').
transform(_,'n').
add_list('y',H,T,[H|T]):-!.
add_list(_,_,List,List).
find_poroda(Str,Cond1):-
rule(Poroda,Cond2),
ravno(Cond1,Cond2),
ravno(Cond2,Cond1),
concat(Poroda," является искомой породой собаки.",Str),!.
find_poroda("Извините, но соответствующей параметрам породы не найдено.",_).
ravno([],_).
ravno([H|T],L):-
belong(H,L),
ravno(T,L).
belong(El,[El|_]).
belong(El,[H|T]):-
El<>H,
belong(El,T).
GOAL
expert.
ТЕСТИРОВАНИЕ ПРОГРАММЫ
Первоначальное меню, появляющееся при запуске программы.
Рис. 1. - Меню программы
При выборе первого пункта меню ЭС будет проводить консультацию с пользователем для опознания породы собаки.
Рис. 2. - Консультация
Полученный ответ ЭС при данной комбинации ответов пользователя.
Рис. 3. - Результат консультации
Если породы, соответствующей ответам пользователя, не найдено, тогда выдается следующее сообщение.
Рис. 4. - Отрицательный поиск породы
При выборе пункта меню Просмотр базы знаний все данные о породах собак будут считаны из файла basa.exp и выведены на экран.
Рис. 5. - Породы собак, находящиеся в базе знаний
Рис. 6. - Параметры поиска породы
При добавлении нового знания ЭС проводит консультацию с пользователем, запрашивая породу собаки и ее характеристики.
Рис.7. - Добавление нового знания
Для удаления знания достаточно ввести породу собаки.
Рис. 8. - Удаление знания
Для выхода из программы достаточно нажать кнопку ESC.
Рис. 9. - Выход
РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
Программа содержит понятный интерфейс на русском языке. Все взаимодействие с пользователем ведется через главное меню. При запуске программы первым пользователь увидит именно его. В меню представлены следующие пункты:
1-Консультация
2-Просмотр базы знаний
3-Добавление нового знания
4-Удаление знания
0-Выход
Первый пункт меню позволяет провести консультация, по определению породы собаки, второй - просмотреть список пород собак и их характеристик, по критериям которых проводится консультация, третий - добавить в БЗ новое знание, четвертый - удалить знание из БЗ, пятый - выйти из программы.
При добавлении записей в БЗ необходимо указать породу собаки и ответить на предоставленные вопросы, которые будут характеризовать данную породу собаки. Для того чтобы просмотреть БЗ или ее части соответственно заданиям необходимо просто выбрать нужный пункт меню.
ВЫВОДЫ
Разработанная экспертная система является хорошим примером того типа задач, который наиболее приемлем для языка программирования ТурбоПролог. Полученная программа была протестирована и дала корректные результаты. При незначительной модификация программы может быть оболочкой для экспертной системы любой другой тематики.
ЛИТЕРАТУРА
Братко И. Программирование на языке Пролог для искусственного интеллекта. Москва Мир 1990.
Ин Ц., Соломон Д. Использование ТурбоПролога. Москва Мир 1993.
Янсон А. Использование ТурбоПролога в сжатом изложении. Москва Мир 1991.
Размещено на Allbest.ru
Подобные документы
Сравнительный анализ языков программирования высокого уровня Си и Паскаль. Реализация алгоритма обработки данных. Тестирование и отладка программы или пакета программ. Структура программы на языке Турбо Паскаль. Указатели и векторные типы данных.
курсовая работа [233,5 K], добавлен 14.12.2012Ознакомление с возможностями языка Си как средой программирования высокого уровня. Циклы программирования параметрического оператора for и функции форматированного ввода. Разработка программы средствами Си: блок-схема, текст и тестирование программы.
контрольная работа [204,4 K], добавлен 26.01.2013Основные сведения о системе программирования Турбо Паскаль. Структура программы на Паскале и ее компоненты. Особенности и элементы языка Турбо Паскаль. Порядок выполнения операций в арифметическом выражении, стандартные функции и оператор присваивания.
лекция [55,7 K], добавлен 21.05.2009Ханойские башни: постановка задачи, условия перемещения дисков со стержня на стержень. Стратегия решения, используемые предикаты. Текст программы на языке Пролог. Построение модели решения задачи о ферзях. Примеры использования списков в языке Пролог.
презентация [72,0 K], добавлен 29.07.2012Ознакомление с методами разработки экспертных систем, предназначенных для обобщения, хранения, использования знаний и опыта, накопленного специалистами в конкретных предметных областях. Проектирование программы на языке Пролог, ее отладка и тестирование.
курсовая работа [69,6 K], добавлен 12.05.2013Развертывание системы на жестком диске, диалоговая система программирования Турбо Паскаль, запуск программы и выполнение задания. Функциональные клавиши и их назначение. Текстовый редактор, средства создания и редактирования текстов программ, курсор.
реферат [18,6 K], добавлен 01.04.2010Освоение технологии структурного программирования и применения стандартных методов работы с одномерными массивами при разработке и создании программы на языке Турбо Паскаль. Разработка программы методом пошаговой детализации с помощью псевдокода.
реферат [276,9 K], добавлен 27.02.2008Описание входной и выходной информации. Программа и схема взаимосвязи модулей, руководство пользователю. Подготовка и компиляция программы, тестирование и отладка. Операционная система Windows 7 Ultimate x86. Язык программирования Embarcadero DELPHI 2010.
дипломная работа [3,6 M], добавлен 29.10.2013Язык программирования Турбо Паскаль. Запись алгоритма на языке программирования и отладка программы. Правила записи арифметических выражений. Стандартное расширение имени файла, созданного системным редактором. Составной оператор и вложенные условия.
курсовая работа [75,0 K], добавлен 21.03.2013Разработка комплекса алгоритмов. Кодирование и компиляция. Тестирование, отладка, испытание и сдача программы. Минимальные системные требования для использования Delphi 7. Написание программы с использованием инструментального языка высокого уровня.
курсовая работа [2,7 M], добавлен 21.02.2011