отчет4
.docxМинистерство образования Республики Беларусь
УО «Полоцкий государственный университет»
Факультет информационных технологий
Кафедра вычислительных систем и сетей
ОТЧЕТ
О выполнении лабораторной работы №4 по дисциплине
«Интеллектуальные информационные системы»
на тему «Разработка экспертной системы»
Выполнил студент группы
Проверил
Полоцк
Цель работы: построить экспертную систему при помощи фактов, функций и правил, используя управляющие команды (if-then-else и while) в среде CLIPS.
Экспертная система будет работать по следующему алгоритму: сначала уточним имеется ли у заемщика работа и отсутствуют ли проблемы с законом. В случае отрицательного ответа на один из вопросов выводится отрицательная рекомендация, при положительных ответах проверяются следующие правила. Далее уточняется имеются ли в данный момент непогашенные кредиты, в случае положительного ответа дополнительно уточняется были ли просрочки по платежам за кредит. При положительном ответе и на этот вопрос — рекомендация отказать. Во всех других случаях проверяются следующие правила. Следующим шагом последовательно уточняется имеется ли у заёмщика депозит, недвижимость или погашались ли предыдущие кредиты досрочно. Если хотя бы на один из вопросов ответ положительный — рекомендация одобрить. В противном случае рекомендуется отказать.
В ходе лабораторной работы разработана экспертная система (листинг 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
)
(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)
)
(defrule check-jobless
(not (jobless ?))
(not (recommendation ?))
=>
(if (yes-or-no-p "Does the borrower have a job? (yes/no): ")
then (assert (jobless NO))
else (assert (recommendation "It is recommended to refuse.")))
)
(defrule check-law-trouble
(jobless NO)
(not (recommendation ?))
=>
(if (yes-or-no-p "Does the borrower have a law trouble? (yes/no): ")
then (assert (recommendation "It is recommended to refuse."))
else (assert (law-trouble NO)))
)
(defrule check-negative
(law-trouble NO)
(not (recommendation ?))
=>
(if (yes-or-no-p "Does the borrower have other loans? (yes/no): ")
then (if (yes-or-no-p "Did the borrower delay the loan payments? (yes/no): ")
then (assert (recommendation "It is recommended to refuse."))
else (assert (negative NO)))
else (assert (negative NO)))
)
(defrule check-positive
(negative NO)
(not (recommendation ?))
=>
(if (yes-or-no-p "Does the borrower have a deposit? (yes/no): ")
then (assert (recommendation "It is recommended to approve."))
else (if (yes-or-no-p "Does the borrower have a property? (yes/no): ")
then (assert (recommendation "It is recommended to approve."))
else (if (yes-or-no-p "Did the borrower repay the loans ahead of schedule? (yes/no): ")
then (assert (recommendation "It is recommended to approve."))
else (assert (recommendation "It is recommended to refuse.")))))
)
(defrule print-recommendation
(declare (salience 10))
(recommendation ?item)
=>
(printout t crlf crlf)
(printout t "Recommendation:")
(printout t crlf crlf)
(format t " %s%n%n%n" ?item)
)
(defrule system-banner ""
(declare (salience 10))
=>
(printout t crlf crlf)
(printout t "********************************************" crlf)
(printout t "* The credit decision-making expert system *" crlf)
(printout t "********************************************" crlf)
(printout t crlf crlf)
)
Выполним тестирование экспертной системы введя некоторые данные (рисунок 1).
Рисунок 1 – Тестирование экспертной системы.
Вывод: разработали экспертную систему при помощи фактов, функций и правил, используя управляющие команды (if-then-else и while) в среде CLIPS и протестировали ее.