Разработка экспертных систем

Автор работы: Пользователь скрыл имя, 19 Мая 2013 в 15:29, курсовая работа

Описание работы

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

Содержание работы

Введение
1 Постановка задачи
2 Теоретическая часть
2.1 Основные понятия
2.2 Структура экспертной системы
2.3 Классификация экспертных систем
2.4 Характеристики экспертных систем
2.5 Этапы создания экспертных систем
3 Практическая часть
3.1 Выбор среды разработки программирования
3.2 Алгоритм работы экспертной системы
3.2.1 Алгоритм формирования базы знаний
3.2.2 Алгоритм вывода
3.3 Структура разработанной экспертной системы
3.3.1 Проект «Expert»
3.3.2 Проект «Klient»
3.4 Методическое обеспечение
3.4.1 Руководство эксперта
3.4.2 Руководство пользователя
Заключение
Список использованной литературы

Файлы: 1 файл

вариан1.doc

— 412.50 Кб (Скачать файл)

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

Последним действием  формирования БЗ будет процедура  сохранения МПУ, МПВ, СПУ, СПВ, ТПУ и  ТПВ в виде файла. В данном проекте  база знаний сохраняется в один файл с расширением *.bzn.

Таблица 2.4 –  Структура таблицы переменных вывода

ТПВ.вывод

ТПВ.значение

ТПВ.рекомендация

В1

ЗВ 1

***********

 

ЗВ 3

***********

В2

ЗВ 2

***********


3.2.2 Алгоритм  вывода

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

нап – номер анализируемого правила;

нпу – номер  переменной условия в СПУ

ну – номер  рассматриваемого условия в анализируемом  правиле;

пу – индекс первого условия текущего правила;

кпу – число  условий в анализируемом правиле;

кпв - число полученных выводов;

ЗУ(м) – массив значений условий из правила ;

ЗУТ – значение проверки текущего условия в правиле;

ЗУП(м) – массив значений условий введенных пользователем;

ОПВ() – очередь  переменных вывода, где будут запоминаться переменные вывода «сработанных» правил для организации цепочки рассуждения. Вывод заключается в поиске в базе знаний правил, которые зависят от текущей «рабочей» переменной вывода. Если находим совпадение «рабочей» переменной и переменной вывода, то активизируется процедура проверки правила. Если правило сработало, т.е. введенные пользователем ответы и хранящиеся в БЗ значения совпали, полученная переменная вывода запоминается в очереди переменных вывода для того, чтобы стать следующей «рабочей» переменной вывода. После того, как поиск правил с текущей «рабочей» переменной вывода завершается, она удаляется из очереди. Вывод завершается после того, как очередь переменных вывода опустеет.

Алгоритм вывода можно представить в следующей  последовательности:

1. В ОПВ() помещается  начальная переменная вывода  и количество переменных вывода в очереди устанавливаем как кпв=1.

2. Пока не  пуста ОПВ() выполняем п. 3,4.

3. От п=1 до M*N /организуем просмотр всех правил на совпадение с «рабочей» переменной вывода/

{если МПУ(п,1) = ОПВ(1) то нап=округление до большего  целого (п/м); ну=1;пу= (нап-1)*м; /определяем номер правила, в котором присутствует«рабочая» переменная вывода/

кпу=0

от у=1 до м /проверяем текущее правило/

пока МПУ(пу+у,1)<> «»; ЗУ(у)= МПУ(пу+у,2); кпу=кпу+1;

нпу=МПУ(пу+у,3) /считываем  номер текущей переменной условия из СПУ /

если СПУ (нпу,2) = «», то вывести пользователю вопрос ТПУ.вопрос (нпу) с вариантами ответов из ТПУ.значение(нпу);

записать в  СПУ(нпу,2) выбранный пользователем ответ;

ЗУП(у) = СПУ(нпу,2);

Проверяем правило:

ЗП= Истина; от у=1 до кпу; если ЗУ(у) = ЗУП(у), то ЗУТ=Истина; ЗП=ЗП and ЗУТ;

если ЗП=Истина, то СПВ([МПВ(нап,3),2] = МПВ(нап,2); СПВ([МПВ(нап,3),3] = кпв; кпв=кпв+1; ОПВ(кпв)= МПВ(нап,1);}

Если достигнут  конец МПУ, удаляем из ОПВ() ОПВ(1) и устанавливаем ОПВ(1) следующую  по порядку в очереди переменную.

Выводим на экран  последнюю выведенную СПВ. Если пользователь запрашивает объяснения полученного вывода, выводим все сработанные СПУ в обратном порядке.

3.3 Структура  разработанной экспертной системы

3.3.1 Проект  «Expert»

Проект «Expert» служит для создания базы знаний и для редактирования уже существующей. Модуль «Unit1» проекта служит показательной формой при загрузке экспертной системы в режиме приобретения знаний. В этом режиме эксперт, используя компонент приобретения знаний, наполняет систему знаниями, которые позволяют ЭС в режиме решения самостоятельно (без эксперта) решать задачи из проблемной области. Эксперт описывает проблемную область в виде совокупности данных и правил. В этом модуле эксперт непосредственно создает саму базу знаний, формирует правила. При этом имеется возможность редактирования правил, удаления правил, сохранения базы знаний, загрузки ранее сохраненной базы знаний. Модуль «Unit1» и модуль «Unit 2» необходимы для введения экспертом вопросов к переменным условия и рекомендаций к переменным вывода соответственно.

Модуль «Unit4»  предназначен для вывода справки об авторе.

В программе  используются процедуры и функции, которые написаны для удобства работы и понимания программы.

procedure dobav_uslClick(Sender: TObject) - Добавление условия в правило;

procedure FormCreate(Sender: TObject) – Начальные установки при открытии формы;

procedure udal_uslClick(Sender: TObject) - Удаление условия в правиле;

procedure newClick(Sender: TObject) - Формирование новой базы зныний;

procedure Button4Click(Sender: TObject) - Добавление нового правила;

procedure Button3Click(Sender: TObject) - Перемещение по правилам назад;

procedure Button2Click(Sender: TObject) - Перемещение по правилам вперед;

procedure Button6Click(Sender: TObject) - Удаление правила;

procedure SpiskiShow(Sender: TObject) - Просмотр списков переменных условия и вывода;

procedure tpv1Show(Sender: TObject) - Просмотр таблицы переменных условия;

procedure tpu1Show(Sender: TObject) - Просмотр таблицы переменных вывода;

procedure pravShow(Sender: TObject) - Переход к просмотру правил;

procedure pvEnter(Sender: TObject) - Редактирование переменных вывода;

procedure zn_pvEnter(Sender: TObject) - Редактирование значений переменных вывода;

procedure saveClick(Sender: TObject) - Сохранение базы знаний;

procedure SaveToFile(Name:string) - Сохранения базы знаний в файл;

procedure exit1Click(Sender: TObject) - Выход из программы;

procedure openClick(Sender: TObject) - Открытие базы знаний;

procedure sg1GetEditText(Sender: TObject; ACol, ARow: Integer;

var Value: String) - Проверка на наличие изменений в правиле;

procedure sg1SetEditText(Sender: TObject; ACol, ARow: Integer;

const Value: String) - Проверка на наличие изменений в правиле;

procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean) - Закрытие формы;

procedure N13Click(Sender: TObject) - Вывод информации об авторе;

procedure N14Click(Sender: TObject) - Вывод справки;

procedure sg1KeyPress(Sender: TObject; var Key: Char) - Проверка на наличие изменений в правиле.

Ниже приведены  глобальные переменные, используемые в программе.

strok: string; // строка для отслеживания введенных изменений

path:string; // строка для имени файла базы знаний

tF: TextFile; // текстовый файл для загрузки базы знаний

tek_pr:integer;//Номер текущего правила

Kol_pr:integer;//Кол-во  правил

mp:array of prav;//Массив правил

tpu: array of uslov; // таблица переменных условия

tpv: array of vyvod; // таблица переменных вывода

pr1,pravilo:prav; // текущее правило

dob_pr1,save_pr,izm,otkryt,saved,obn_pr,dob_pr:boolean;

SPU:array of spu1; SPV:array of spu1; // списки переменных условия и вывода

nomer_pu,nomer_pv, nomer_zn_pv:integer; // индексы переменных условия и вывода.

3.3.2 Проект  «Klient»

Проект «Klient» служит для работы экспертной системы в режиме консультации. В этом режиме общение с ЭС осуществляет конечный пользователь, которого интересует результат и (или) способ его получения. В этом модуле пользователь отвечает на вопросы, предлагаемые ему экспертной системой. После получения ответов на все вопросы, экспертная система выдает соответствующий результат и рекомендацию.

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

procedure N2Click(Sender: TObject) - Загрузить существующую базу знаний;

procedure Button1Click(Sender: TObject) - Начало работы системы;

procedure Button2Click(Sender: TObject) - Принятие ответа пользователя;

procedure FormCreate(Sender: TObject);

procedure Button3Click(Sender: TObject) - Вывод пояснения к выводу системы;

procedure N5Click(Sender: TObject) - Начала опроса сначала;

procedure N3Click(Sender: TObject) - Выход из системы.

Ниже приведены  глобальные переменные, используемые в программе.

path:string; // имя файла для открытия базы

tF: TextFile; // текстовый файл для открытия базы

mp:array of prav;//массив правил

tpu: array of uslov; // таблица переменных условий

tpv: array of vyvod; // таблица переменных вывода

SPU:array of spu1; // список переменных условий

SPV:array of spv1; // список переменных вывода

nomer_pu,nomer_pv, nomer_zn_pv:integer; //индексы переменных условия и вывода

n_a_p, // номер анализируемого правила

n_p_u, // номер переменной условия в СПУ

n_u, //номер рассматриваемого условия в анализируемом правиле;

n_p_v, // номер переменной вывода в СПВ

p_u, // индекс первого условия текущего правила

kpu, // число условий в анализируемом правиле;

kpv:integer; // число полученных выводов

z_u:array of string; // массив значений условий из правила

z_p:boolean; // значение проверки текущего условия в правиле z_u_p:array of string; //массив значений условий введенных пользователем;

Opv:array of string; // очередь  переменных вывода

3.4 Методическое  обеспечение

Данная программа  имеет два модуля «Expert» и «Klient», которые используют в работе одну и ту же базу знаний.

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

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

3.4.1 Руководство  для эксперта

Для запуска  программы необходимо открыть исполняемый  файл «Expert.exe». При этом появится окно для создания новой базы знаний (Рисунок 3.1).

Рисунок 3.1 –  Окно для создания новой базы знаний

Если необходимо отредактировать уже существующую базу знаний необходимо выбрать команду меню «Файл - Открыть базу» и выбрать в окне выбора файла (рисунок 3.2) нужную базу - файл с расширением *.bzn. При открытии существующей базы можно приступать к редактированию правил (рисунок 3.3).

Рисунок 3.2 –  Открытие существующей базы знаний

Рисунок 3.3 –  Окно для ввода и редактирования правил

Чтобы добавить новое правило необходимо нажать кнопку «Добавить правило» или выбрать команду меню «Правка - Добавить правило». Для удаления правила можно нажать кнопку «Удалить правило» или выбрать команду меню «Правка - Удалить правило».

Для добавления переменных условия в правило  необходимо нажать кнопку «Добавить условие» или выбрать команду меню «Правка - Добавить условие». Для удаления переменной условия можно нажать кнопку «Удалить условие» или выбрать команду меню «Правка - Удалить условие».

Если какие-то переменные условия не сохранены, эксперту сразу будет предложено ввести вопрос для данной переменной условия (рисунок 3.4).

Рисунок 3.4 –  Окно для ввода вопроса к переменной условия

Если переменной вывода нет в ТПВ, то эксперту будет  предложено ввести рекомендацию для  определенного значения переменной вывода (рисунок 3.5).

Рисунок 3.5 –  Окно для ввода рекомендации к  переменной вывода

Окно данной программы представлено из нескольких вкладок: «Правила», «ТПУ», «ТПВ», «Списки» (рисунок 3.1).

Первая вкладка  предназначена непосредственно  для ввода и редактирования правил.

Вкладка «ТПУ»  предназначена для просмотра  таблицы переменных условия (рисунок 3.6). Если к какой-то переменной условия  еще не было введено вопроса, то в  таблице переменных условия эта  переменная не отмечается «галочкой». Чтобы ввести вопрос, необходимо ввести его в поле «Вопрос к ПУ».

Информация о работе Разработка экспертных систем