Автор работы: Пользователь скрыл имя, 17 Июня 2013 в 23:21, лабораторная работа
Для решения нашей конкретной задачи предположим, что в результате бесед с экспертом в области установления неисправностей и ремонта ОС Windows были установлены следующие эмпирические правила:
Плеер может не включаться, работать стабильно, работать не стабильно.
Если плеер включается, и работает стабильно, значит микросхемы и флеш-диск целы, экран плеера цел, в нем есть закаченная музыка, питание на плеер подается, аудиовыход не сломан, сбоя памяти и программного обеспечения нет, никакого ремонта не требуется.
Если плеер не включился, то нужно узнать, подается ли питание на плеер.
Представление знаний в Информационных Системах
Отчет по лабораторной работе
Тема «Экспертная система установления неисправностей и ремонта flash-плееров»
Отметка о зачете «__________________» Ст. преподаватель кафедры И3 __________________ Толмачев С.Г «___» _________________ 2008 г. |
Выполнила студент гр. И 343
__________ Ксю________ «23» ___Октября_____ 2008 г. |
Для решения нашей конкретной задачи предположим, что в результате бесед с экспертом в области установления неисправностей и ремонта ОС Windows были установлены следующие эмпирические правила:
Имея эти
данные, приступим к решению
; Группа фактов, описывающая состояние плеера
working-state disenabled ; не включается
working-state stable ; работает стабильно
working-state trable ; работает не стабильно
; Группа фактов, описывающая состояние питания плеера
power-state be ; питание есть
power-state not ; питания нет
; Группа фактов, описывающая состояние звука
sound-state be ; звук есть
sound-state not ; звука нет
; Группа фактов, описывающая состояние экрана
display-state norm ; экран исправен
display-state err ; экран неисправен
; Группа фактов, описывающая проигрывания музыки
play-state norm ; экран исправен
play-state err ; экран неисправен
Все приведенные факты, использующиеся для предоставления пользователю рекомендаций по ремонту, во втором поле содержат текстовое значение с рекомендацией по ремонту.
Кроме описанных выше фактов системе могут понадобиться факты, описывающие проявления неисправности. Однако в нашей версии экспертной системы таких фактов не будет. Приведенный выше список фактов вполне достаточен для решения поставленной задачи.
Правило determine-working-state
(defrule determine-working-state ""
(not (working-state ?))
(not (repair ?))
=>
(if (yes-or-no-p "Включается ли у вас player? (yes/no)? ")
then
(if (yes-or-no-p "Требуется ли ремонт плеера? (yes/no)? ")
then
(assert (working-state trable))
else
(assert (repair
"Ремонт плеера не требуется.
Спасибо, за пользование
(assert (working-state stable))
)
else
(assert (working-state disenabled))
)
)
Правило определяющее подается ли питание на плеер, если он не включается.
(defrule determine-power-state ""
(working-state disenabled)
(not (power-state ?))
(not (repair ?))
=>
(if (yes-or-no-p "Питание на плеер подается? (yes/no)? ")
then
(assert (repair "Внутренний флеш-диск, либо микросхемы сгорели или треснули, необходимо отнести его в сервис-центр."))
(assert (power-state be))
else
(assert (repair "Подайте питание на плеер, путём замены батареек."))
(assert (power-state not))
)
)
Правило определяющее есть ли звук в плеере
(defrule determine-sound-state ""
(working-state trable)
(not (sound-state ?))
(not (repair ?))
=>
(if (yes-or-no-p "Проблема
из-за отсутствия звука в
then
(if (yes-or-no-p " Нет загруженных треков в плеер? (yes - треки есть/no - треков нет)? ")
then
(assert (repair "Все
в порядке, просто закачайте
музыку в плеер, следуя
(assert (sound-state not))
else
(if (yes-or-no-p " Сломан аудиовыход? (yes - аудиовыход сломан/no - аудиовыход цел)? ")
then
(assert (repair "Если
аудиовыход сломан, расколот или
видны другие механические
(assert (sound-state not))
else
(assert (repair "Это сбой программного обеспечения плеера. Необходимо подключить плеер к компьютеру, выполнить синхронизацию, и переустановить программное обеспечение плеера."))
(assert (sound-state not))
else
(assert (sound-state be))
)
)
)
)
Правило определяющее состояние экрана
(defrule determine-display-state ""
(working-state trable)
(not (display-state ?))
(not (repair ?))
=>
(if (yes-or-no-p "Неисправность плеера заключается в некорректной работе экрана?(yes/no)?")
then
(if (yes-or-no-p "Выводится ли что либо на экран? (yes/no)? ")
then
(assert (repair "Это сбой программного обеспечения плеера, необходимо подключить плеер к компьютеру, выполнить синхронизацию, и переустановить программное обеспечение плеера."))
(assert (display-state err))
else
(if (yes-or-no-p "Не работает экран?(yes/no)? ")
then
(assert (repair "Это механическая ошибка, необходимо отнести плеер в сервис центр."))
(assert (display-state err))
else
(assert (repair "Причина неисправности экрана не установлена, обратитесь в сервис центр"))
(assert (display-state err))
)
)
else
(assert (display-state norm))
)
)
Правило определяющее подается ли питание на плеер
(defrule determine-play-state ""
(working-state trable)
(not (play-state ?))
(not (repair ?))
=>
(if (yes-or-no-p "Музыка
играет некорректно? (yes-играет плохо/no-
then
(assert (repair "Это сбой памяти, необходимо присоединить плеер к компьютеру и проверить память."))
(assert (play-state err))
else
(assert (play-state norm))
Правило действующее если не удалось определить неисправность
(defrule no-repairs ""
(declare (salience -10))
(not (repair ?))
=>
(assert (repair "obratites' v slujbu poddrejki"))
)
Для запуска программы наберите приведенный в конце отчета листинг в каком-нибудь текстовом редакторе (лучше использовать встроенный редактор CLIPS). Сохраните набранный файл, например, с именем source_Ksu.clp. После этого запустите CLIPS или, если он уже был у вас запущен, очистите его командой (clear) . Загрузите созданный вами файл с помощью команда (load "source_Ksu.clp"). Если файл был набран без ошибок, то вы должны увидеть сообщения, представленные на рис.1.
Рис.1 демонстрирует успешную попытку загрузки файла конструкторов Обратите внимание, что функция load вернула значение true. Если это не так, значит, в синтаксисе определений функций или правил была допущена ошибка. Для загрузки вы также могли бы воспользоваться функцией load*. В этом случае на экран не выводилась бы информация, отражающая процесс загрузки.
Рисунок 1. Загрузка экспертной системы
После удачной загрузки файла убедитесь, что все правила присутствуют в списке правил CLIPS, а функции — в списке функций. Легче всего это выполнить с помощью менеджеров правил и функций соответственно.
Для того чтобы запустить нашу экспертную систему, достаточно выполнить команду reset, которая добавит факт initial-fact, необходимый для правила system-banner, и команду run. После этого вы сразу увидите сообщение "The Engine Diagnosis Expert system", которое означает, что система начала работать, и получите серию вопросов, ответы на которые помогут экспертной системе оценить текущее состояние вашей машины и подобрать соответствующую рекомендацию по ремонту.
Обратите внимание, что если после завершения работы нашей экспертной системы в списке фактов CLIPS остаются факты, описывающие состояние автомобиля, их легко просмотреть с помощью команды Fact Window из меню Window.
Рисунок 2. Результат работы экспертной системы.
;;программу выполнена студенткой группы и-343
;;Федоровой Ксю
;;****************
;;* DEFFUNCTIONS *
;;****************
(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)
(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))
;;Правило determine-working-state
(defrule determine-working-state ""
(not (working-state ?))
(not (repair ?))
=>
(if (yes-or-no-p "Включается ли у вас player? (yes/no)? ")
then
(if (yes-or-no-p "Требуется ли ремонт плеера? (yes/no)? ")
then
(assert (working-state trable))
else
(assert (repair "Ремонт плеера не требуется. Спасибо, за пользование программой"))
(assert (working-state stable))
)
else
(assert (working-state disenabled))
)
)
;;правило определяющее подается ли питание на плеер, если он не включается.
(defrule determine-power-state ""
(working-state disenabled)
(not (power-state ?))
(not (repair ?))
=>
(if (yes-or-no-p "Питание на плеер подается? (yes/no)? ")
then
(assert (repair "Внутренний флеш-диск, либо микросхемы сгорели или треснули, необходимо отнести его в сервис-центр."))
(assert (power-state be))
else
(assert (repair "Подайте
питание на плеер, путём
(assert (power-state not))
)
)
;;Правило определяющее есть ли звук в плеере
(defrule determine-sound-state ""
Информация о работе Экспертная система установления неисправностей и ремонта flash-плееров