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

При разработке прототипа экспертной системы, использующей продукционную модель представления знаний, можно использовать демонстрационный проект \EXAMPLES\GENI.VPR.

Рис. 12.4. Рабочее окно программы GENI

Представим фрагмент базы знаний geni.gni.

rule(1,"carnivore","cheetah",[1,2])

rule(2,"carnivore","tiger",[1,3])

cond(1,"it has tawny color")

cond(2,"it has dark spots")

cond(3,"it has black stripes")

Структура rule: номер правила, категория, подкатегория, список условий для выполнения правила.

Структура cond: номер условия, текст условия.

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

Начальные действия

1. Создать папку для проекта, скопировав в нее файл geni.pro.

2. Запустить Visual Prolog, выполнить действия, представленные на рисунках.

3. В опция компиляции (Options – Project (.VPR) – Compiler Options) выставить соответствующие параметры.

4. Добавить запись

include "geni.pro"

в файл geniwin.pro

5. Закомментировать goal в geni.pro.

6. Проверить работоспособность проекта.

Загрузка базы знаний

1. Модифицировать меню проекта.

2. Добавить код вызывающий стандартный диалог выбора файла dlg_GetFileName.

%BEGIN Task Window, id_file_open
task_win_eh(_Win,e_Menu(id_file_open,_ShiftCtlAlt),0):-!,
FILENAME = dlg_GetFileName("*.gni",["gni","*.gni"],
"Загрузка базы знаний",[],"",_OutListFiles),
consult (FILENAME, geni),
!.
%END Task Window, id_file_open

Оформление вызова целевого предиката

1. Создать целевой предикат.

Целевой предикат создается из модификации цели в файле geni.pro.

work if topic(MAINGOAL,PURPOSE),
%write(PURPOSE),nl,
Title="Начало работы",
dlg_Note(Title, PURPOSE),
go([],MAINGOAL).
work if Title="Предупреждение",
dlg_Note(Title,"База знаний не загружена!").
% dlg_Error("База знаний не загружена!").

2. Добавить в меню пункт «Консультация» и в текст программы  вызов предиката work.

%BEGIN Task Window, id_ консультация
task_win_eh(_Win,e_Menu(id_консультация,_ShiftCtlAlt),0):-!,
work,
<p>!.
%END Task Window, id_ консультация</p>
 

Преобразование текстовых сообщений

Для преобразования текстовых сообщений использовать предикат concat.

Для преобразования диалога, организованного на предикате readchar, использовать диалог dlg_ask.

Рекомендации по вызову собственных диалогов или окон

Для вызова диалога или окна не из меню, необходимо выполнить два шага:

  • ранее сохранить дескриптор окна в базе данных (тип дескриптора WINDOW);
  • взять из базы данных дескриптор окна и его использовать для подстановки в предикат, вызывающий собственный диалог.
  1. Какие существуют стандартные диалоги?
  2. Как создать окно, предназначенное для просмотра текста?
  3. Как создать окно редактора?
  4. Каким образом организовать просмотр базы данных?
  5. Почему база знаний в программе GENI создана на основе фактов?
  6. Как тип вывода используется в программе GENI?
  7. Является программа GENI оболочкой экспертной системы?
  8. Разработайте модуль просмотра базы знаний.
  9. Разработайте модуль редактирования базы знаний.
  10. Разработайте модуль добавления правил в базу знаний.
Расскажи друзьям