Разработка оболочки экспертной системы
пока МПУ(пу+у,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», которые используют в работе одну и ту же базу знаний.
Другие рефераты на тему «Программирование, компьютеры и кибернетика»:
Поиск рефератов
Последние рефераты раздела
- Основные этапы объектно-ориентированного проектирования
- Основные структуры языка Java
- Основные принципы разработки графического пользовательского интерфейса
- Основы дискретной математики
- Программное обеспечение системы принятия решений адаптивного робота
- Программное обеспечение
- Проблемы сохранности информации в процессе предпринимательской деятельности