Главная страница

кр. Ю. Ю. Громов, О. Г. Иванова, В. В. Алексеев, М. П. Беляев, Д. П. Швец, аи. Елисеев интеллектуальные информационные системы и технологии


Скачать 2.03 Mb.
НазваниеЮ. Ю. Громов, О. Г. Иванова, В. В. Алексеев, М. П. Беляев, Д. П. Швец, аи. Елисеев интеллектуальные информационные системы и технологии
Дата17.02.2023
Размер2.03 Mb.
Формат файлаpdf
Имя файлаgromov2-a.pdf
ТипДокументы
#941483
страница17 из 20
1   ...   12   13   14   15   16   17   18   19   20
177 Напишите конструкцию deffunction, в которой не используется рекурсия для вычисления факториала целого числа N. Напишите конструкцию deffunction, которая преобразовывает двоичную строку, состоящую из нулей и единиц, в десятичное число. Без использования функций if или switch напишите ряд методов, предназначенных для преобразования данных, представленных с помощью таких единиц, как дюймы (inches), футы (feet) и ярды (yards). Разработайте экспертную систему для выбора университета, факультета и специальности в соответствии с интересами абитуриента. Разработайте экспертную систему, используя принципы объ- ектно-ориентированного программирования.
6.6. Список литературы Адрес языка CLIPS в Интернете http://www.ghg.net/clips/
CLIPS.html. Базы данных. Интеллектуальная обработка информации /
В.В. Корнеев и др. – М. : Нолидж, 2000.
3.
Вахтин, А.А. Лабораторный практикум по программированию на языке CLIPS для курса Представление знаний в информационных системах : учебно-методическое пособие для вузов / А.А. Вахтин,
В.В. Гришина. – Издательско-полиграфический центр ВГУ, 2010. – 95 с.
4.
Джарантино, Дж. Экспертные системы принципы разработки и программирования / Дж. Джарантино, Г. Райли. – е изд. ; перс англ. – М. : Изд. дом «Вильямc», 2007. – 1152 с.
5.
Джексон, П. Введение в экспертные системы / П. Джексон ; перс англ. – М. : Изд. дом «Вильямc», 2001. – 622 с.
6.
Люгер, Дж. Искусственный интеллект стратегии и методы решения сложных проблем / Дж. Люгер, С. Рассел, П. Норвиг. – е изд. ; перс англ. – М. : Изд. дом «Вильямc», 2003. – 864 с.
7.
Рассел, С. Искусственный интеллект современный подход /
C. Рассел, П. Норвиг. – е изд. ; перс англ. – М. : Изд. дом «Вильямc»,
2006. – 1408 с.
8.
Частиков, А.П. Разработка экспертных систем. Среда CLIPS /
А.П. Частиков, ТА. Гаврилов, Д.Л. Белов. – СПб. : БХВ-Петербург,
2003. – 608 с.

178 ЗАКЛЮЧЕНИЕ Поскольку в сферу приложений искусственного интеллекта вошли практически все направления современной информатики, мы не ставили перед собой цели объять необъятное, а включили в учебник разделы, содержащие описание традиционных моделей и технологий создания интеллектуальных система также новых перспективных подходов к решению проблем, возникающих в области искусственного интеллекта. При написании книги мы видели свою цель в том, чтобы познакомить читателя с принципами создания и функционирования интеллектуальных информационных систем. Практический опыт показывает, что люди, незнакомые с этими принципами, испытывают большие трудности, выступая в роли пользователей интеллектуального программного обеспечения. При всём многообразии видов интеллектуального программного обеспечения, имеющегося в настоящее время, мы достаточно подробно рассмотрели среду CLIPS. Это объясняется её доступностью и тем, что языки среда CLIPS предоставляют пользователям возможность быстро создавать эффективные, компактные и легко управляемые экспертные системы. Несмотря на то, что CLIPS распространяется бесплатно, он весьма успешно конкурирует даже с самыми известными коммерческими проектами. Научиться программировать можно только программируя, решая конкретные задачи. В приложения учебника мы целенаправленно включили сравнительно большие по объёму практические примеры экспертных систем на языке CLIPS. Поэтому разбирайте примеры, ставьте себе задачи и программируйте. Авторы надеются, что знания, полученные при изучении данной книги, и приведённые практические примеры помогут читателю в самостоятельном освоении языка CLIPS, а также позволят расширить кругозор в области интеллектуальных информационных систем и технологий ПРИЛОЖЕНИЯ Приложение А Файл kurs.clp
;;;;;;;;;;;;;;;;;;;;; Определение классов
;;;;;;;;;;;;;;;;;;;;; Определение абстрактного класса принтера
(defclass PRINTER "Printer defclass"
(is-a USER)
(role abstract)
(slot power
(type SYMBOL)
(create-accessor read-write)
(storage local)
(default none))
(slot podkl_el
(type SYMBOL)
(create-accessor read-write)
(storage local)
(default none))
(slot shnur
(type SYMBOL)
(create-accessor read-write)
(storage local)
(default none))
(slot napr
(type SYMBOL)
(create-accessor read-write)
(storage local)
(default none))
(slot print_doc
(type SYMBOL)
(create-accessor read-write)
(storage local)
(default none)) Определение конкретного класса лазерного принтера
(defclass PRINTER_LASER "Laser printer defclass"
(is-a PRINTER)
(role concrete)
(pattern-match reactive)
(slot zastr_cart
(type SYMBOL)
(create-accessor read-write)
(storage local)
(default none))

180
(slot zastr_vyhod
(type SYMBOL)
(create-accessor read-write)
(storage local)
(default none))
(slot zaderzh
(type SYMBOL)
(create-accessor read-write)
(storage local)
(default none))
(slot shum
(type SYMBOL)
(create-accessor read-write)
(storage local)
(default none))
(slot kachestvo
(type SYMBOL)
(create-accessor read-write)
(storage local)
(default none))
(slot install_skrip
(type SYMBOL)
(create-accessor read-write)
(storage local)
(default none))
(slot opred_cart
(type SYMBOL)
(create-accessor read-write)
(storage local)
(default none))
(slot opred_bum
(type SYMBOL)
(create-accessor read-write)
(storage local)
(default none))
(slot zahvat_bum
(type SYMBOL)
(create-accessor read-write)
(storage local)
(default none)) Определение конкретного класса струйного принтера
(defclass PRINTER_INK "Inkjet printer defclass"
(is-a PRINTER)
(role concrete)
(pattern-match reactive)

181
(slot otkl_val
(type SYMBOL)
(create-accessor read-write)
(storage local)
(default none))
(slot skrip
(type SYMBOL)
(create-accessor read-write)
(storage local)
(default none))
(slot bum_perekos
(type SYMBOL)
(create-accessor read-write)
(storage local)
(default none))
(slot nesk_listov
(type SYMBOL)
(create-accessor read-write)
(storage local)
(default none))
(slot zastr_raboch
(type SYMBOL)
(create-accessor read-write)
(storage local)
(default none))
(slot kachestvo
(type SYMBOL)
(create-accessor read-write)
(storage local)
(default none))
(slot caret_upor
(type SYMBOL)
(create-accessor read-write)
(storage local)
(default none))
(slot coord_lenta
(type SYMBOL)
(create-accessor read-write)
(storage local)
(default none))
(slot opred_cart
(type SYMBOL)
(create-accessor read-write)
(storage local)
(default none))

182
(slot pod_bum
(type SYMBOL)
(create-accessor read-write)
(storage local)
(default none))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Определение шаблона, описывающего текущее состояние системы
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(deftemplate UI-state
(slot cur_quest (type STRING))
(multislot ans (type STRING))
(multislot sys_ans (type SYMBOL))
(slot user_eval (type STRING))
(slot prev_q (type SYMBOL) (default no))
(slot prev_ans (type STRING))
(slot state (type SYMBOL)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Определение функции, сообщающей системе о
нажатии кнопки перехода к
предыдущему вопросу
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(deffunction prev_q_yes (?f)
(modify ?f (prev_q yes)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Определение правил вывода вопросов системы
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defrule start
(initial-fact)
=>
(assert (UI-state (cur_quest "Добро пожаловать в
экспертную систему диагностики неисправности принтера Для продолжения нажмите кнопку Далее)
(ans)
(sys_ans)
(user_eval "")
(prev_ans "")
(state start)))
(halt))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Общие вопросы для диагностики неисправности принтера
(defrule q_type_printer
?F<-(UI-state (state start))
=>

183
(modify ?F (cur_quest "Укажите тип принтера)
(ans "лазерный " "струйный ")
(sys_ans PRINTER_LASER PRINTER_INK)
(user_eval
"make-instance
[cur_printer] of ")
(prev_ans "")
(state diag))
(halt))
(defrule q_type_printer_prev
?F<-(UI-state (cur_quest "Укажите тип принтера)
(prev_q yes))
=>
(modify ?F (cur_quest "Добро пожаловать в
экспертную систему диагностики неисправности принтера Для продолжения нажмите кнопку Далее)
(ans)
(sys_ans)
(user_eval "")
(prev_q no)
(prev_ans "")
(state start))
(halt))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defrule q_power
(object (is-a ?x) (name [cur_printer]) (power none))
?F<-(UI-state (prev_q ?pr))
=>
(if (eq ?pr no) then
(modify ?F (cur_quest "Включается ли принтер)
(ans "Нет " "Да ")
(sys_ans no yes)
(user_eval "send [cur_printer] put-power ")
(prev_ans "")
(state diag)) else
(if (eq ?x PRINTER_LASER) then
(modify ?F (cur_quest "Укажите тип принтера)
(ans "лазерный " "струйный ")
(sys_ans PRINTER_LASER PRINTER_INK)
(user_eval
"make-instance
[cur_printer] of ")
(prev_q no)
(prev_ans "лазерный ")
(state diag))

184
(if (eq ?x PRINTER_INK) then
(modify ?F (cur_quest "Укажите тип принтера)
(ans "лазерный " "струйный ")
(sys_ans PRINTER_LASER PRINTER_INK)
(user_eval
"make-instance
[cur_printer] of ")
(prev_q no)
(prev_ans "струйный ")
(state diag)))
(send [cur_printer] delete))
(halt))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defrule q_podkl_el
(object (name [cur_printer]) (power no) (podkl_el none))
?F<-(UI-state (prev_q ?pr))
=>
(if (eq ?pr no) then
(modify ?F (cur_quest "
Подключён ли принтер к
элек
- трической сети)
(ans "Нет " "Да ")
(sys_ans no yes)
(user_eval
"send
[cur_printer] put- podkl_el ")
(prev_ans "")
(state diag)) else
(modify ?F (cur_quest "Включается ли принтер)
(ans "Нет " "Да ")
(sys_ans no yes)
(user_eval "send [cur_printer] put-power ")
(prev_q no)
(prev_ans "Нет ")
(state diag))
(send [cur_printer] put-power none))
(halt))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defrule q_shnur
(object (name [cur_printer]) (power no) (podkl_el yes) (shnur none))
?F<-(UI-state (prev_q ?pr))
=>
(if (eq ?pr no)

185
then
(modify ?F (cur_quest "Исправен ли шнур питания принтера)
(ans "Нет " "Да ")
(sys_ans no yes)
(user_eval "send [cur_printer] put-shnur ")
(prev_ans "")
(state diag)) else
(modify ?F (cur_quest "
Подключён ли принтер к
элек
- трической сети)
(ans "Нет " "Да ")
(sys_ans no yes)
(user_eval
"send
[cur_printer] put- podkl_el ")
(prev_q no)
(prev_ans "Да ")
(state diag))
(send [cur_printer] put-podkl_el none))
(halt))
(defrule r_podkl_el
(object (name [cur_printer]) (power no) (podkl_el no))
?F<-(UI-state (prev_q ?pr))
=>
(if (eq ?pr no) then
(modify ?F (cur_quest "Для устранения неисправности система предлагает
Вам подключить принтер к
электросети
Если не все проблемы устранены, попробуйте выполнить диагностику заново)
(ans)
(sys_ans)
(user_eval "")
(prev_ans "")
(state recomend)) else
(modify ?F (cur_quest "
Подключён ли принтер к
элек
- трической сети)
(ans "Нет " "Да ")
(sys_ans no yes)
(user_eval
"send
[cur_printer] put- podkl_el ")
(prev_q no)
(prev_ans "Нет ")
(state diag))

186
(send [cur_printer] put-podkl_el none))
(halt))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defrule q_napr
(object (name [cur_printer]) (power no) (podkl_el yes) (shnur yes) (napr none))
?F<-(UI-state (prev_q ?pr))
=>
(if (eq ?pr no) then
(modify ?F (cur_quest "Есть ли напряжение в
электри
- ческой сети)
(ans "Нет " "Да ")
(sys_ans no yes)
(user_eval "send [cur_printer] put-napr ")
(prev_ans "")
(state diag)) else
(modify ?F (cur_quest "Исправен ли шнур питания принтера)
(ans "Нет " "Да ")
(sys_ans no yes)
(user_eval "send [cur_printer] put-shnur ")
(prev_q no)
(prev_ans "Да ")
(state diag))
(send [cur_printer] put-shnur none))
(halt))
(defrule r_shnur
(object (name [cur_printer]) (power no) (podkl_el yes) (shnur no))
?F<-(UI-state (prev_q ?pr))
=>
(if (eq ?pr no) then
(modify ?F (cur_quest "Для устранения неисправности система предлагает заменить сетевой шнур
Если не все проблемы устранены, попробуйте выполнить диагностику заново "Исправен ли шнур питания принтера)
(ans "Нет " "Да ")
(sys_ans no yes)
(user_eval "send [cur_printer] put-shnur ")
(prev_q no)
(prev_ans "Нет ")
(state diag))
(send [cur_printer] put-shnur none))
(halt))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defrule r_napr_yes
(object (name [cur_printer]) (power no) (podkl_el yes) (shnur yes) (napr yes))
?F<-(UI-state (prev_q ?pr))
=>
(if (eq ?pr no) then
(modify ?F (cur_quest "Неисправен блок питания принтера Для устранения неисправности система предлагает заменить его
Если не все проблемы устранены, попробуйте выполнить диагностику заново)
(ans)
(sys_ans)
(user_eval "")
(prev_ans "")
(state recomend)) else
(modify ?F (cur_quest "Есть ли напряжение в
электри
- ческой сети)
(ans "Нет " "Да ")
(sys_ans no yes)
(user_eval "send [cur_printer] put-napr ")
(prev_q no)
(prev_ans "Да ")
(state diag))
(send [cur_printer] put-napr none))
(halt))
(defrule r_napr_no
(object (name [cur_printer]) (power no) (podkl_el yes) (shnur yes) (napr no))
?F<-(UI-state (prev_q ?pr))
=>
(if (eq ?pr no) then

188
(modify ?F (cur_quest "Для устранения неисправности система предлагает подать напряжение в
электрическую сеть
Если не все проблемы устранены, попробуйте выполнить диагностику заново)
(ans)
(sys_ans)
(user_eval "")
(prev_ans "")
(state recomend)) else
(modify ?F (cur_quest "Есть ли напряжение в
электри
- ческой сети)
(ans "Нет " "Да ")
(sys_ans no yes)
(user_eval "send [cur_printer] put-napr ")
(prev_q no)
(prev_ans "Нет ")
(state diag))
(send [cur_printer] put-napr none))
(halt))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Вопросы для диагностики неисправности лазерного принтера no) then
(modify ?F (cur_quest "Выполняется ли печать документа "Нет " "Да ")
(sys_ans no yes)
(user_eval
"send
[cur_printer] put- print_doc ")
(prev_ans "")
(state diag)) else
(modify ?F (cur_quest "Включается ли принтер)
(ans "Нет " "Да ")
(sys_ans no yes)
(user_eval "send [cur_printer] put-power ")
(prev_q no)
(prev_ans "Да ")
(state diag))

189
(send [cur_printer] put-power none))
(halt))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defrule q_zastr_cart
(object (is-a PRINTER_LASER) (name [cur_printer])
(power yes) (print_doc yes) (zastr_cart none))
?F<-(UI-state (prev_q ?pr))
=>
(if (eq ?pr no) then
(modify ?F (cur_quest "После прохождения картриджа листы бумаги застревают)
(ans "Нет " "Да ")
(sys_ans no yes)
(user_eval
"send
[cur_printer] put- zastr_cart ")
(prev_ans "")
(state diag)) else
(modify ?F (cur_quest "Выполняется ли печать документа "Нет " "Да ")
(sys_ans no yes)
(user_eval
"send
[cur_printer] put- print_doc ")
(prev_q no)
(prev_ans "Да ")
(state diag))
(send [cur_printer] put-print_doc none))
(halt))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defrule q_zastr_vyhod
(object (is-a PRINTER_LASER) (name [cur_printer])
(power yes) (print_doc yes) (zastr_cart no) (zastr_vyhod none))
?F<-(UI-state (prev_q ?pr))
=>
(if (eq ?pr no) then
(modify ?F (cur_quest "Застревают ли листы бумаги на выходе из принтера)
(ans "Нет " "Да ")
(sys_ans no yes)
(user_eval
"send
[cur_printer] put- zastr_vyhod ")

190
(prev_ans "")
(state diag)) else
(modify ?F (cur_quest "После прохождения картриджа листы бумаги застревают)
(ans "Нет " "Да ")
(sys_ans no yes)
(user_eval
"send
[cur_printer] put- zastr_cart ")
(prev_q no)
(prev_ans "Нет ")
(state diag))
(send [cur_printer] put-zastr_cart none))
(halt))
(defrule r_zastr_cart
(object (is-a PRINTER_LASER) (name [cur_printer])
(power yes) (print_doc yes) (zastr_cart yes))
?F<-(UI-state (prev_q ?pr))
=>
(if (eq ?pr no) then
(modify ?F (cur_quest "Дефект вызван тем, что загрязнились резиновые ремни подачи бумаги в
фьюзер
Для устранения неисправности система предлагает снять ремни с
приводных роликов и
очистить
Если не все проблемы устранены, попробуйте выполнить диагностику заново)
(ans)
(sys_ans)
(user_eval "")
(prev_ans "")
(state recomend)) else
(modify ?F (cur_quest "После прохождения картриджа листы бумаги застревают)
(ans "Нет " "Да ")
(sys_ans no yes)
(user_eval
"send
[cur_printer] put- zastr_cart ")
(prev_q no)
(prev_ans "Да ")
(state diag))
(send [cur_printer] put-zastr_cart none))
(halt))

1   ...   12   13   14   15   16   17   18   19   20


написать администратору сайта