Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
[ИИС] Образец отчета.doc
Скачиваний:
50
Добавлен:
12.04.2015
Размер:
400.9 Кб
Скачать

3. Программа и методика испытания

Разберем работу программы на конкретном примере. Запустим приложение «CLIPSWin.exe» (рис. 3.1).

Рис. 3.1. Окно «Приложение CLIPS 6.24»

Для того, чтобы загрузить файл в программу набираем строчку (load <пусть к файлу>) (рис. 3.2).

Рис. 3.2. Указываем путь к файлу для его загрузки в программу

После нажатия Enter происходит загрузка файла (рис. 3.3)

Рис. 3.3. Файл загружен успешно (без ошибок)

Для запуска программы разработанной ЭС воспользуемся командами (reset) и (run). Их можно прописать последовательно через Enter вручную, выбрать в Execution или воспользоваться сочетанием клавиш Ctrl+E и Ctrl+R соответственно (рис. 3.4).

Рис. 3.4. ЭС выбора тарифа сотовой связи. Первый вопрос

Далее нужно отвечать на вопросы, задаваемые системой. Диалог в форме вопрос-ответ в качестве примера изображен на рис. 3.5.

Рис. 3.5. Тестовый пример. Ответы на вопросы и результат

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

Мы ответили на вопросы следующим образом:

  • нас интересует производитель НР;

  • цена дорогая;

  • лазерный принтер;

  • черно-белый принтер;

  • под формат бумаги А4 и А3;

  • загрузка бумаги снизу;

  • сам принтер большой;

  • копир присутствует;

  • сканер присутствует.

Система выводит нам модель 1011 от выбранного нами производителя НР.

Выполнив вышеуказанные действия, мы убеждаемся, что ЭС корректно работает.

Заключение

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

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

Разработанная экспертная система отвечает всем требованиям, поставленным в задании.

В дальнейшем экспертная система может быть доработана до Windows-приложения с более удобным интерфейсом для пользователя.

Список используемой литературы

  1. Джозеф Джарратано, Гари Райли. «Экспертные системы: принципы разработки и программирование». Пер. с англ. — М. 2006. — 1152 стр.

  2. Частиков А. П., Гаврилова Т. А., Белов Д. Л. «Разработка экспертных систем. Среда CLIPS» — СПб. : БХВ-Петербург, 2003. — 608 стр.

  3. Гаврилова Т. А., Хорошевский В. Ф. «Базы знаний интеллектуальных систем. Учебник» — СПб.: Питер, 2000. — 341 стр.

ПРИЛОЖЕНИЕ 1

Код программы

(defglobal ?*s* = 0)

(deftemplate Принтер

(slot пМодель)

(slot пПроизводитель)

(slot пЦена)

(slot пТип)

(slot пЦвет)

(slot пРазмер)

(slot пЗагрузка)

(slot пГабариты)

(slot пКопир)

(slot пСканер))

;*******************************************************************

(deffunction ВопросОбщий(?Текст_Вопрос $?допустзнач)

(printout t ?Текст_Вопрос)

(bind ?Ответ (read))

(if (lexemep ?Ответ)

then (bind ?Ответ (lowcase ?Ответ)))

(while (not (member ?Ответ ?допустзнач)) do

(printout t ?Текст_Вопрос)

(bind ?Ответ (read))

(if (lexemep ?Ответ)

then (bind ?Ответ (lowcase ?Ответ))))

?Ответ)

;********************************************************************'

(defrule Баннер

(declare (salience 10))

=>(load-facts C:\factpr.txt)

(printout t crlf crlf)

(printout t "Expert system. Выбор ПРИНТЕРА")

(printout t crlf crlf))

;******************************************************************'

(defrule ВопросПроизводитель

(not (Производитель ?))

=>(bind ?отклик(ВопросОбщий "Какой Производитель?(а-HP,б-Panasonic,в-Canon,г-Все производители)" а б в г))

(if (eq ?отклик а)then (assert (Производитель HP)))

(if (eq ?отклик б)then (assert (Производитель Panasonic)))

(if (eq ?отклик в)then (assert (Производитель Canon)))

(if (eq ?отклик г)then (assert (Производитель ВсеРавно))))

;******************************************************************'

(defrule ВопросЦена

(not (Цена ?))

=>(bind ?отклик(ВопросОбщий "Какая цена?(а-Дешево,б-Средняя,в-Дорого,г-ВсеРавно)" а б в г))

(if (eq ?отклик а)then (assert (Цена Дешево)))

(if (eq ?отклик б)then (assert (Цена Средняя)))

(if (eq ?отклик в)then (assert (Цена Дорого)))

(if (eq ?отклик г)then (assert (Цена ВсеРавно))))

;******************************************************************'

(defrule ВопросТип

(not (Тип ?))

=>(bind ?отклик (ВопросОбщий "Тип принтера?(а-Лазерный,б-Струйный,в-ВсеРавно)" а б в))

(if (eq ?отклик а)then (assert (Тип Лазерный)))

(if (eq ?отклик б)then (assert (Тип Струйный)))

(if (eq ?отклик в)then (assert (Тип ВсеРавно))))

;******************************************************************'

(defrule ВопросЦвет

(not (Цвет ?))

=>(bind ?отклик (ВопросОбщий "Должен быть цветной?(а-Цветной,б-Чернобелый,в-ВсеРавно)" а б в))

(if (eq ?отклик а)then (assert (Цвет Цветной)))

(if (eq ?отклик б)then (assert (Цвет Чернобелый)))

(if (eq ?отклик в)then (assert (Цвет ВсеРавно))))

;******************************************************************'

(defrule ВопросРазмер

(not (Размер ?))

=>(bind ?отклик (ВопросОбщий "Какой размер бумаги для печати?(а-А4,б-А3,в-А4иА3,г-ВсеРавно)" а б в г))

(if (eq ?отклик а)then (assert (Размер А4)))

(if (eq ?отклик б)then (assert (Размер А3)))

(if (eq ?отклик в)then (assert (Размер А4иА3)))

(if (eq ?отклик г)then (assert (Размер ВсеРавно))))

;******************************************************************'

(defrule ВопросЗагрузка

(not (Загрузка ?))

=>(bind ?отклик (ВопросОбщий "Как заргужаться бумага должна?(а-Сверху,б-Снизу,в-ВсеРавно)" а б в))

(if (eq ?отклик а)then (assert (Загрузка Сверху)))

(if (eq ?отклик б)then (assert (Загрузка Снизу)))

(if (eq ?отклик в)then (assert (Загрузка ВсеРавно))))

;******************************************************************'

(defrule ВопросГабариты

(not (Габариты ?))

=>(bind ?отклик(ВопросОбщий "Гарабиты принтера?(а-Маленький,б-Средний,в-Большой,г-ВсеРавно)" а б в г))

(if (eq ?отклик а)then (assert (Габариты Маленький)))

(if (eq ?отклик б)then (assert (Габариты Средний)))

(if (eq ?отклик в)then (assert (Габариты Большой)))

(if (eq ?отклик г)then (assert (Габариты ВсеРавно))))

;******************************************************************'

(defrule ВопросКопир

(not (Копир ?))

=>(bind ?отклик (ВопросОбщий "Копирование?(а-Пристутсвует,б-Отсутствует)" а б))

(if (eq ?отклик а)then (assert (Копир Есть)))

(if (eq ?отклик б)then (assert (Копир Нет))))

;******************************************************************'

(defrule ВопросСканер

(not (Сканер ?))

=>(bind ?отклик (ВопросОбщий "Сканирование?(а-Пристутсвует,б-Отсутствует)" а б))

(if (eq ?отклик а)then (assert (Сканер Есть)))

(if (eq ?отклик б)then (assert (Сканер Нет))))

;******************************************************************'

(defrule Вывод

(or (Производитель ?хПроизводитель)(Производитель ВсеРавно))

(or (Цена ?хЦена)(Цена ВсеРавно))

(or (Тип ?хТип)(Тип ВсеРавно))

(or (Цвет ?хЦвет)(Цвет ВсеРавно))

(or (Размер ?хРазмер)(Размер ВсеРавно))

(or(Загрузка ?хЗагрузка) (Загрузка ВсеРавно))

(or (Габариты ?хГабариты)(Габариты ВсеРавно))

(Копир ?хКопир)

(Сканер ?хСканер)

(Принтер(пМодель ?Модель)(пПроизводитель ?хПроизводитель)(пЦена ?хЦена)(пТип ?хТип)(пЦвет ?хЦвет)(пРазмер ?хРазмер)(пЗагрузка ?хЗагрузка)(пГабариты ?хГабариты)(пКопир ?хКопир)(пСканер ?хСканер))

=>(bind ?*s*(+ ?*s* 1))

(printout t crlf " " ?*s* ". Модель : " ?Модель crlf))

;******************************************************************'