Разработка экспертной системы "Подбор сотовых телефонов" - Курсовая работа

бесплатно 0
4.5 105
Структура экспертной системы: база знаний, механизм вывода, система пользовательского интерфейса. Анализ требований, проектирование системы "Подбор сотовых телефонов". Спецификация области, кодирование. Листинг программы, результаты тестирования.

Скачать работу Скачать уникальную работу

Чтобы скачать работу, Вы должны пройти проверку:


Аннотация к работе
Она содержит правила, описывающие отношения или явления, методы и знания для решения задач из области применения системы. Можно представлять базу знаний состоящей из фактических знаний и знаний, которые используются для вывода других знаний. Когда экспертной системе задается вопрос, механизм вывода выбирает способ применения правил базы знаний для решения задачи, поставленной в вопросе. Фактически, механизм вывода запускает экспертную систему в работу, определяя какие правила нужно вызвать и организуя к ним доступ в базу знаний. Когда механизм вывода возвращает знания, выведенные из базы знаний, интерфейс передает их обратно пользователю в удобной форме.В данной курсовой работе была поставлена задача разработки и программной реализации экспертной системы “Сотовые телефоны”.Predicates rule(RNO,GATE,GATE,Cond,Cond) Clauses rule(1,"ТЕЛЕФОН","Alcatel One Touch 512",[10,20,30,40,111,120],[53,64,70,80,90,100,130,140,151,160,171,181,191,201,211]). rule(2,"ТЕЛЕФОН","Alcatel One Touch 512i",[10,20,30,40,111,120],[53,64,70,80,90,100,130,140,151,160,171,181,191,201,210]). rule(3,"ТЕЛЕФОН","Motorolla T190",[10,20,31,41,110,120],[51,63,70,80,91,100,131,140,150,160,170,181,191,201,211]). rule(4,"ТЕЛЕФОН","Ericsson T65",[11,21,30,40,111,120],[53,62,70,81,90,101,130,141,151,160,170,180,191,204,211]). rule(5,"ТЕЛЕФОН","LG W7000",[10,20,30,40,113,121],[54,65,71,80,91,101,130,140,150,160,170,181,190,204,211]). rule(6,"ТЕЛЕФОН","LG W5200",[12,20,30,40,113,121],[50,65,71,80,91,100,130,141,150,161,170,180,190,204,211]). rule(7,"ТЕЛЕФОН","Motorolla T720",[10,20,30,40,113,121],[52,64,71,80,90,100,131,140,150,160,170,181,190,201,210]). rule(8,"ТЕЛЕФОН","Nokia 6100",[12,20,31,40,113,120],[52,66,70,80,90,100,130,140,150,160,170,180,190,203,210]). rule(9,"ТЕЛЕФОН","Sony CMP-J70",[10,21,30,41,110,120],[53,61,71,80,91,100,131,141,151,160,170,181,191,202,211]). rule(10,"ТЕЛЕФОН","Siemens C55",[10,21,30,41,111,120],[52,60,71,81,91,100,131,140,151,161,170,181,191,200,211]). rule(11,"ТЕЛЕФОН","Ericsson R520",[10,21,30,41,110,120],[52,62,70,81,91,101,130,140,151,160,171,180,191,203,211]). rule(12,"ТЕЛЕФОН","Alcatel One Touch 715",[11,20,31,40,112,120],[52,61,71,80,90,100,131,141,150,161,170,181,190,202,211]). rule(13,"ТЕЛЕФОН","Alcatel One Touch 310",[10,20,30,41,110,120],[52,61,70,80,91,101,130,141,151,160,171,181,191,200,211]). Rabota(History,X,_):-rule(RNO,X,Ny,Cond1,Cond), Proverka_crit(RNO,History,Cond1), Proverka(RNO,History,Cond,100,Z), Vivod_Yes, Rabota([RNO|History],Ny,Z),fail. Vopros_crit(History,RNO,BNO,TEXT):-Write("Вопрос: ",TEXT,"?"), Write(" (1-Да;2-Нет) "), openappend(myfile,"List.txt"), writedevice(myfile), Write("Вопрос: ",TEXT,"?"), Write(" (1-Да;2-Нет) "), closefile(myfile), Readint(Resp), Otvet_crit(History,RNO,TEXT,BNO,Resp). Write("Вопрос: ",TEXT,"?"), Write(" (1-да;2-нет;3-не уверен.) "), openappend(myfile,"List.txt"), writedevice(myfile), Write("Вопрос: ",TEXT,"?"), Write(" (1-да;2-нет;3-не уверен.) "), closefile(myfile), Readint(Resp), Otvet(History,RNO,TEXT,BNO,Resp,P,P1).(1-да;2-нет;3-не уверен.) (1-да;2-нет;3-не уверен.) (1-да;2-нет;3-не уверен.) (1-да;2-нет;3-не уверен.) (1-да;2-нет;3-не уверен.

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

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

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

2. Механизм вывода (МВ).

3. Система пользовательского интерфейса (СПИ).

База знаний - центральная часть экспертной системы. Она содержит правила, описывающие отношения или явления, методы и знания для решения задач из области применения системы. Можно представлять базу знаний состоящей из фактических знаний и знаний, которые используются для вывода других знаний. Утверждение "Джон Ф. Кеннеди был 35-м президентом Соединенных Штатов" - пример фактического знания. "Если у вас болит голова, то примите две таблетки цитрамона" - пример знания для вывода. Сама база знаний обычно располагается на диске или другом носителе.

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

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

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

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

Хорошо разработанные оболочки экспертных систем обычно содержат механизм для добавления и обновления информации в базе знаний.

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

1. Анализ требований экспертный система интерфейс программа

Необходимо разработать на языке Turbo Prolog экспертную систему с предметной областью «Подбор сотовых телефонов».

Разработанное программное средство должно: содержать базу данных;

выдавать точное или приближенное решение (возможно с определенной вероятностью);

содержать удобный и понятный интерфейс.

Информационная система должна быть разработана в среде Turbo- Prolog 2.0. и функционировать в операционной системе MS-DOS 7.0.

Программа должна реализовать опрос человека, который не может подобрать себе сотовый телефон, при помощи вопросов двух групп: первая группа вопросов предполагает ответы: 1 - да, 2 - нет; вторая группа вопросов предполагает ответы: 1- да, 2 - нет, 3 - неуверен. Пользователь данной экспертной системы опрашивается по следующим характеристикам сотовых телефонов: Стандарт.

Виброзвонок.

Язык меню.

Имеется ли доступ в Интернет.

Тип корпуса (обычный или книжка).

Цена.

Количество строк на экране.

Количество мелодий.

Возможность программирования новых мелодий.

Наличие калькулятора.

Голосовой набор.

Наличие игр

Звуковая индикация клавиш

Сменные панели

Наличие будильника

Контроль времени разговора

Часы

Календарь

Диктофон

Время работы в режиме разговора

MP-3 плеер

Необходимо выделить следующие основные характеристики, для приближенного поиска: Стандарт

Виброзвонок

Язык меню

Наличие доступа в Интернет

Тип корпуса

Цена

Не должен задаваться вопрос того же типа, на который уже было отвечено “да”.

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

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

2. Проектирование

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

Признаки записываются следующим образом: Conds(Признак, Значение_признака, Идентификатор_признака).

Правила же формируются так: Rules(№ правила,Текст, Результат, Сочетание_основных_признаков, Сочетание_второстепенных_признаков).

База знаний программы представляет собой 2 файла: 1)Файл с описанием сотовых телефонов со списком характеристик (Baza.pro).

2)Файл с вопросами или с характеристиками(Vopros.pro).

3. Спецификация предметной области

Областью, исследуемой в данной курсовой работе, являются сотовые телефоны.

Задачи экспертной системы подобрать сотовый телефон для опрашиваемого по признакам.

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

Если не будет найден сотовый телефон с требуемыми характеристиками, то на экран будут выведены сотовые телефоны, соответствующие основным критериям

Если во второй группе вопросов опрашиваемый не уверен хотя бы при ответе на некоторые вопросы, на экран будут выведены сотовые телефоны, соответствующие основным критериям с вероятностью подхода к требованиям опрашиваемого. вероятность(R) равна: предыдущая вероятность(Р) минус результат от деления предыдущей вероятности (P) на количество вопросов данного типа(K).Формула: R=P-P/K.

4. Кодирование

Кодирование осуществлено на языке Пролог. Результат кодирования приведен в приложении А.

Были использованы следующие домены: Cond=integer*

GATE=Symbol

BNO,RNO,Nom=integer

Краткая спецификация предикатов: Nachalo - главный предикат он предназначен для вызова предиката реализующего меню.

My_menu - предикат предназначен для прорисования меню и ждет, какой пункт меню выбран

READKEY, READKEY 1, READKEY 2 - предикаты анализа нажатой клавиши

KEYSELECT - в зависимости от нажатой клавиши выделяет активный пункт меню

Nach_cur - устанавливает курсор в исходное положение (1-й пункт меню)

Proces(integer) - реализует выбранный пункт меню. Параметр его показывает, какой пункт меню выбран (выход или консультация).

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

Clear - предикат очистки баз знаний.

Init(integer,integer,integer,integer) - предикат для инициализации, какая клавиша нажата и если это клавиша вверх или вниз, то выполнение соответствующих действий. Первый параметр содержит код нажатой клавиши, второй содержит текущий пункт, третий возвращает следующий пункт, последний параметр содержит количество пунктов в меню.

Readkey(integer,integer,integer,integer) - предназначен для возврата, какой пункт меню выбран и для перерисовки выделенного пункта меню. Первый пункт содержи код нажатой клавиши, второй содержит текущий пункт, третий содержит количество пунктов меню, и последний возвращает результат выбора.

Zapis_No(BNO) - промежуточный предикат для вызова, следующего предиката. Параметр содержит номер вопроса, на который было отвечено “да”.

Zapis_Yes(Nom,BNO) - предикат предназначен, для того чтобы поместить в динамическую базу yes () номера вопросов типа nom кроме вопроса с номером BNO. Параметр первый содержит тип вопроса, на который отвечено “да”, второй параметр содержит номер вопроса, на который отвечено “да”.

Neuveren_1is(BNO) - промежуточный предикат для вызова, следующего предиката. Параметр содержит номер вопроса, на который было отвечено “неуверен”.

Zapis_number(Nom) - предикат предназначен, для того чтобы поместить в динамическую базу neuveren() номера вопросов типа nom. Параметр содержит тип вопроса, на который отвечено “неуверен”.

Rabota(Cond,GATE,real) - начинает работать с базой знаний и перебирает все возможные варианты ответа, а также выводит результат поиска и опроса на экран. Параметр первый содержит список перебранных вариантов, но в данном случае он содержит только один номер ответа, второй содержит ответ или название гриба, третий вероятность ответа.

Proverka(RNO,Cond,Cond) - проверяет, был ли задан вопрос с текущим номером и в какой базе он находится и делает соответствующие действия если его ни водной базе, то он задает это вопрос. Первый параметр содержит номер текущего варианта ответа, второй должен содержать список перебранных вариантов, но в данном случае не задействован, третий содержит список оставшихся не выясненных характеристик.

Vopros(Cond,RNO,BNO,String) - выводит текст вопроса на экран и ждет выбора ответа и передает свои полномочия предикату OTVET(). Первый параметр содержит список перебранных вариантов ответов, второй номер текущего варианта ответа, третий номер текущего вопроса

Otvet(Cond,RNO,String,BNO,integer,real,real) - проверят какой выбран ответ и в соответствии с этим выполнят некоторые действия. Первый параметр содержит список перебранных вариантов ответов, второй номер текущего варианта ответа, третий текст вопроса, четвертый номер текущего вопроса, пятый номер варианта ответа, 5 и 6 содержит вероятности, причем 5 текущую, а 6 результирующую.

Proverka_crit(RNO,Cond,Condl) - проверяет, был ли задан вопрос с текущим номером и в какой базе он находится и делает соответствующие действия если его ни водной базе, то он задает это вопрос. Первый параметр содержит номер текущего варианта ответа, второй должен содержать список перебранных вариантов, но в данном случае не задействован, третий содержит список оставшихся не выясненных характеристик,4 и 5 содержит вероятности, причем 4 текущую, а 5 результирующую.

Vopros_crit(Cond,RNO,BNO,String,real,real) - выводит текст вопроса на экран и ждет выбора ответа и передает свои полномочия предикату OTVET(). Первый параметр содержит список перебранных вариантов ответов, второй номер текущего варианта ответа, третий номер текущего вопроса, четвертый текст вопроса, 5 и 6 содержит вероятности, причем 5 текущую, а 6 результирующую.

Otvet_crit(Cond,RNO,String,BNO,integer,real,real) - проверят какой выбран ответ и в соответствии с этим выполнят некоторые действия. Первый параметр содержит список перебранных вариантов ответов, второй номер текущего варианта ответа, третий текст вопроса, четвертый номер текущего вопроса, пятый номер варианта ответа, 5 и 6 содержит вероятности, причем 5 текущую, а 6 результирующую.

Opred_Kolva_Cond(integer,integer) - промежуточный предикат для подсчета количества вопросов одного типа. Первый параметр номер текущего вопроса, второй возвращает количество вопросов.

Kolvo(Cond,integer,integer) - подсчитывает количество вопросов заданного типа. Первый параметр содержит список вопросов одного типа, второй текущее количество, третий возвращает результат.

Vivod_Yes - предикат помещает в данных базу данных OTV() единицу если был выбран хотя бы один вариант ответа.

In_Cond(BNO,Cond) - проверяет, находится ли «да» критерий в списке свойств

Param_Rule(Cond,Cond) - проверяет, находится ли все «да» критерии в списке свойств

Otvet_y(Cond,Cond) - выбирает изо всех критериев те, на которые ответили «да»

Pol_Param(Cond) - возвращает «да» критерии.

Pol_Other_Rule - Подбор сотового телефона по основным параметрам.

5. Тестирование

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

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

Вывод
В данной курсовой работе была поставлена задача разработки и программной реализации экспертной системы “Сотовые телефоны”.

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

Список литературы
1. Малпас Дж. Реляционный язык Пролог и его применение.- М.: Наука, 1990.-464 с.

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

3. Курс лекций по предмету “Системы искусственного интеллекта” Михалев А.Г.

4. «Встроенные предикаты Турбо- Пролога»: методические указания часть 1,2,3/ Б.В. Казаков, И.А. Казакова, А.Г. Михалев, О.С. Дорофеева; под редакцией проф. Б.Г. Хмелевского. - Пенза: издательство ПГУ, 1998 г.

Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность
своей работы


Новые загруженные работы

Дисциплины научных работ





Хотите, перезвоним вам?