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; // индексы переменных условия и вывода.


Информация о работе «Разработка оболочки экспертной системы»
Раздел: Информатика, программирование
Количество знаков с пробелами: 38841
Количество таблиц: 4
Количество изображений: 15

Похожие работы

Скачать
41873
6
6

... И ТЕСТИРОВАНИЕ ПРОГРАММНОГО СРЕДСТВА 19 РУКОВОДСТВО ПО ЭУСПЛУАТАЦИИ ПРОГРАММНОГО СРЕДСТВА 20 8.1. РУКОВОДСТВО СИСТЕМНОГО ПРОГРАММИСТА 20 ЗАКЛЮЧЕНИЕ 22 ЛИТЕРАТУРА 23 ВВЕДЕНИЕ Тема проекта – «Разработка подсистемы вывода в диагностической экспертной системе». Данная дипломная работа была выполнена на кафедре систем информатики в лаборатории искусственного интеллекта, Института Систем Информатики ...

Скачать
38919
0
2

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

Скачать
78776
2
5

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

Скачать
53767
2
3

... и реализации прототипа и выработка рекомендаций по доводке системы до промышленного варианта. Средняя продолжительность 1 - 2 недели. Глава 3. Анализ теории экспертных систем и выводы  3.1.Выбор подходящей проблемы для разработки экспертной системы. Этот этап включает деятельность, предшествующую решению начать разрабатывать конкретную ЭС. Он включает: - определение проблемной области и ...

0 комментариев


Наверх