Элементарные экспертные системы. Разработка экспертной системы для тестирования знаний по теме «Списки и рекурсия».

Страницы работы

Содержание работы

Министерство образования и науки Российской Федерации

Федеральное агентство по образованию

Государственное образовательное учреждение

высшего профессионального образования

«Комсомольский – на - Амуре государственный технический университет»

Кафедра математического обеспечения и применения ЭВМ

ЛАБОРАТОРНАЯ РАБОТА № 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),!.

Похожие материалы

Информация о работе