Программные средства реализации 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Программные средства реализации



Среда разработки приложений CLIPS 6.3 является удобной средой для разработки ЭС. CLIPS состоит из интерактивной среды: экспертной оболочки со своим способом представления знаний; гибкого и мощного языка и нескольких вспомогательных инструментов. CLIPS распространяется бесплатно.

Реализация приложения

Пользовательский интерфейс состоит из текстовых подсказок: вопросов, на которые система ожидает получить ответ.

В случае безрезультатного поиска заболевания по набору симптомов, приложение сообщит, что заболевания не было найдено в БЗ.

После того, как пользователь ответит на все поставленные системой вопросы, программа выведет на экран название заболевания согласно выбранным симптомам.

База знаний

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

Разработку простейшей экспертной системы в соответствии с заданием следует начать с определения формата хранения знаний. В данной работе знания будут храниться в виде вопросов и ответов на них. Предполагается следующая логика работы экспертной системы: приложение предлагает пользователю вопросы о симптомах, которые возможны. При ответе на данные вопросы формируются факты, с помощью которых и будет выбрано заболевание.

Разделение фактов по группам удобно представить в виде таблицы (табл. 2).

 

Табл. 2. Факты, используемые в экспертной системе

Факты Состояние
Общее состояние человека horosho normal
not notmal
Головная боль gol yes
no
Температура temperatura yes
no
Озноб ozn yes
no
Боль в мышцах mish yes
no
Кашель kashel’ yes
no
Боль или комок в горле gor yes
no
Ощущение сухости или першения в горле far yes
no
Наличие мокроты при кашле mok yes
no
Насморк nasm yes
no
Боли в горле при глотании glot yes
no
Увеличение лимфатических узлов lim yes
no
Онемение шеи onem yes
no
Чувствительность к свету или звукам men yes
no
Рвота enc yes
no

При продукционном виде данных и таком подходе к реализации, удобно хранить их в виде дерева, где каждый узел представляет собой один вопрос, а в дочерних узлах, помеченных различными вариантами ответов, содержит либо конечные ответы, либо новые вопросы, необходимые для уточнения данных (рис. 1).

Рис. 1. Схема базы знаний в виде дерева

В экспертной системе реализуются правила консультации, которые в зависимости от той или иной ситуации будут задавать пользователю необхо­димые вопросы и получать ответ в строго заданной форме. Дальнейшая консультация будет производиться с учетом предыдущих ответов на вопросы, заданные пользователю. Эти ответы будут формировать описание текущей ситуации с помощью фактов, приведенных выше.

Для реализации подобной архитектуры будет необходимо реализовать функцию, задающую пользователю произвольный вопрос и получающую ответ из заданного набора корректных ответов:

(deffunction ask-question (?question $?allowed-values)

(printout t?question)

(bind?answer (read))

(if (lexemep?answer)

then

(bind?answer (lowcase?answer)))

(while (not (member?answer?allowed-values)} do

(printout t?question)

(bind?answer (read))

(if (lexemep?answer)

then

(bind?answer (lowcase?answer))))

?answer)

Функция принимает два аргумента: простую переменную question, которая содержит текст вопроса, и составную переменную allowed-values с набором допустимых ответов. Сразу после своего вызова функция выводит на экран соответствующий вопрос и читает ответ пользователя в переменную answer. Если переменная answer содержит текст, то она будет принудительно приве­дена к прописному алфавиту. После этого функция проверяет, является ли полученный ответ одним из заданных корректных ответов. Если нет, то процесс повторится до получения корректного ответа, иначе функция вер­нет ответ, введенный пользователем.

Будет также очень полезно определить функцию, задающую пользователю вопрос и допускающий ответ в виде да/нет, т. к. это один из самых распро­страненных типов вопросов. С учетом реализации функции ask-question эта функция примет вид, представленный ниже:

(deffunction yes-or-no-p (?question)

(bind?response (ask-question?question yes no y n))

(if (or (eq?response yes) (eq?response y))

then TRUE

else FALSE))

Функция yes-or-no-p вызывает функцию yes-or-no-p с постоянным набо­ром допустимых ответов: yes, no, у и n. В случае если пользователь ввел от­вет yes или у, функция возвращает значение true, иначе — false. Поскольку функция yes-or-no-p использует функцию ask-question, то она должна быть определена после нее.

Механизм логического вывода, используя исходные данные из рабочего поля и знания из базы знаний, формирует такую последовательность правил, которая приводит к решению задачи. Продукционная модель знаний с прямым логическим выводом подразумевает присутствие условия ЕСЛИ(Х) – ТО(Y). Причем, под X подразумевается наличие некоторых фактов, соединенных между собой через «И»/«ИЛИ». Последовательно отвечая на вопросы системы, пользователь формирует совокупность фактов X. При достаточном накоплении этих фактов система делает необходимый вывод. При обратном выводе отправной точкой служат цели, после выбора которых производится проход по графу фактов, принадлежащих выбранной цели.

В языке CLIPS для реализации системы логического вывода используются: правила и факты.

· Правила (defrule) –основа механизма логического вывода в языке CLIPS, пример которой приведён ниже.

(defrule determine-vi-horosho ""

(not(norm?))

(not (repair?))

=>

(if (yes-or-no-p "Вы чувствуете недомогание (y/n)? ")

then

(assert (norm normal))

else

(assert (repair "У Вас нет причин к беспокойству. Вы здоровы"))))

Правила представляют собой логическую конструкцию «ЕСЛИ-ТО», а знак «=>» является разделителем условия и действия.

· Факты (facts) – запись в базе данных (в данной работе динамической) в виде списка, который может содержать одно или несколько полей, принимающих символьные либо числовые значения.

При запуске программы интерпретатор CLIPS запускает машину логического вывода, которая выясняет, какие из правил могут быть активированы. Это действие выполняется циклически. Каждый цикл проверки состоит из 3 шагов:

· Сопоставление фактов находящихся в БД и всех правил программы.

· Выбор правила условия, которого совпадают с фактами в БД и текущим состоянием системы.

· Выполнение действий, предписанных правилом.

Так же были реализованы метод вывода итоговой информации и правила, сооб­щающего пользователю о начале работы. Ниже приведена реализация этих правил.

(defrule system-banner ""

(declare (salience 10))

=>

(printout t crlf crlf)

(printout t ************************************************")

(printout t crlf crlf)

(printout t "* Экспертная система медицинской консультации")

(printout t crlf crlf)

(printout t "Выполнил студент группы 220291 Гусева Светлана Львовна")

(printout t crlf crlf)

(printout t*************************************************")

(printout t crlf crlf))

 

(defrule print-repair ""

(declare (salience 10))

(repair?item)

=>

(printout t crlf crlf)

(printout t "Скорее всего у Вас:")

(printout t crlf crlf)

(format t " %s%n%n%n"?item))



Поделиться:


Последнее изменение этой страницы: 2017-01-24; просмотров: 121; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.212.145 (0.012 с.)