Разработка прототипа экспертной системы
При разработке прототипа экспертной системы, использующей продукционную модель представления знаний, можно использовать демонстрационный проект \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, !. %END Task Window, id_ консультация
Преобразование текстовых сообщенийДля преобразования текстовых сообщений использовать предикат concat. Для преобразования диалога, организованного на предикате readchar, использовать диалог dlg_ask.
Рекомендации по вызову собственных диалогов или оконДля вызова диалога или окна не из меню, необходимо выполнить два шага:
|








