Министерство образования и науки Российской Федерации
Федеральное агентство по образованию
Государственное образовательное учреждение
высшего профессионального образования
«Комсомольский – на - Амуре государственный технический университет»
Кафедра математического обеспечения и применения ЭВМ
ЛАБОРАТОРНАЯ РАБОТА № 5
По курсу: «Функциональное программирование»
Студент группы 4ВС-1: Шелестов И.А.
Рогозин В.А.
Преподаватель: Абарникова Е.Б.
2007 г.
Тема: Элементарные экспертные системы
Цель: Изучить базовые структуры экспертных систем
Задание: Разработать экспертную систему для тестирования знаний по теме «Списки и рекурсия».
Экспертные системы.
|
|
|
|
|
|
|
|
Классификация
ЭС интерпретации – используют прямую цепочку рассуждений. Основная идея: по набору введённых признаков определить объект.
ЭС диагностики – используют обратную цепочку рассуждений. Основная идея: по определённому действию объекта определить причину его появления.
ЭС управления – используют прямую и обратную цепочку рассуждений. Основная идея: по набору заданных характеристик определить реакцию системы.
ЭС прогнозирования. Основная идея: по набору соответствующих характеристик и знаний спрогнозировать ее поведение в будущем
ЭС обучающие – разновидность ЭС интерпретации, пользователь не только отвечает на вопрос, но и получает оценку.
Основные предикаты, используемые в программе.
combine_lists(ilist,ilist,ilist) - объединяет списки, исключая повторения. Параметры: первые два – объединяемые списки, результирующий список
countScores(integer,integer,integer) - подсчитывает очки. Параметры: первый – номер ткущего вопроса, общее количество вопросов, итоговый результат.
evaluateBall(integer,integer) - вычисляет оценку. Параметры: первый - количество полученных баллов, второй – оценка по пятибалльной шкале.
getNextQuestion(integer,integer,integer) - получить индекс следующего вопроса. Параметры: первый – номер текущего вопроса, второй номер следующего, третий общее число вопросов
getScores(integer,integer,integer) - число очков для данного ответа. Параметры: номер вопроса, ответ на вопрос, баллы за ответ
is_member(integer,ilist) - проверяет, входит ли элемент в список. Параметр: проверяемый элемент, проверяемый список.
readConfig - читает базу данных из файла
do_inquiry(WINDOW) - задает очередной вопрос. Параметр: Хэндл окна explainResults(integer,integer,integer) - объяснить результат. Параметры: первый – определяет выводить ли объяснение оценки, второй – оценка по пятибалльной шкале, третий – количество баллов.
getExplanation(integer,integer,string) - вырабатывает строку объяснения. Параметры: первый – текущий номер вопроса, второй – общее количество вопросов, третий – строка объяснения.
printResults(WINDOW) - печатает результаты теста. Параметр: Хэндл окна
Текст программы.
include "lab5.inc"
include "lab5.con"
/***************************************************************************
Предикаты общего назначения
***************************************************************************/
constants
cfg_name = "F:/lab5.cfg"
global domains
file = config_file
database - expert
answer(integer,integer,string) % ответы по номерам
q_num(integer) % число вопросов в базе данных
question(integer,string) % сами вопросы по номеру
right(integer,integer) % номера правильных ответов
database - special
cur_question(integer) % текущий вопрос
cur_record(integer) % текущая запись
has_got % строка получена
is_modified % изменены ли данные в текущем диалоге
is_added % добавлен ли элемент в listedit
result(integer,integer) % очки за каждый вопрос
predicates
combine_lists(ilist,ilist,ilist) % объединяет списки, исключая повторения
countScores(integer,integer,integer) % подсчитывает очки
evaluateBall(integer,integer) % вычисляет оценку
getNextQuestion(integer,integer,integer) % получить индекс следующего вопроса
getScores(integer,integer,integer) % число очков для данного ответа
is_member(integer,ilist) % проверяет, входит ли элемент в список
readConfig % читает базу данных из файла
treatCR(string,string,integer) % заменяет '\' на '\n'
treatCR(char,char) % заменяет '\' на '\n'
clauses
% исключить вопросы, ассоциированные с данным
addExcluded(Q,0):links(Q,L),
excluded(Ex),
combine_lists(Ex,L,L1),
retractall(excluded(_)), assert(excluded(L1)),!.
addExcluded(_,_).
% проверяет принадлежность к списку excluded
belongsToExcluded(K):excluded(L),
is_member(K,L),!.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.