Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Программные средства реализации
Среда разработки приложений CLIPS 6.3 является удобной средой для разработки ЭС. CLIPS состоит из интерактивной среды: экспертной оболочки со своим способом представления знаний; гибкого и мощного языка и нескольких вспомогательных инструментов. CLIPS распространяется бесплатно. Реализация приложения Пользовательский интерфейс состоит из текстовых подсказок: вопросов, на которые система ожидает получить ответ. В случае безрезультатного поиска заболевания по набору симптомов, приложение сообщит, что заболевания не было найдено в БЗ. После того, как пользователь ответит на все поставленные системой вопросы, программа выведет на экран название заболевания согласно выбранным симптомам. База знаний База знаний в экспертной системе предназначена для долгосрочных данных (общих фактов), описывающих рассматриваемую предметную область, и правил, описывающих целесообразные преобразования данных этой области. Разработку простейшей экспертной системы в соответствии с заданием следует начать с определения формата хранения знаний. В данной работе знания будут храниться в виде вопросов и ответов на них. Предполагается следующая логика работы экспертной системы: приложение предлагает пользователю вопросы о симптомах, которые возможны. При ответе на данные вопросы формируются факты, с помощью которых и будет выбрано заболевание. Разделение фактов по группам удобно представить в виде таблицы (табл. 2).
Табл. 2. Факты, используемые в экспертной системе
При продукционном виде данных и таком подходе к реализации, удобно хранить их в виде дерева, где каждый узел представляет собой один вопрос, а в дочерних узлах, помеченных различными вариантами ответов, содержит либо конечные ответы, либо новые вопросы, необходимые для уточнения данных (рис. 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; просмотров: 122; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.42.196 (0.012 с.) |