Автор работы: Пользователь скрыл имя, 22 Ноября 2012 в 21:30, курсовая работа
Целью проекта является подбор растения в подарок, учитывая особенности внешности, характера, рода деятельности и вкусовых предпочтений получателя.
Для достижения данной цели были поставлены следующие задачи:
1) выявить предпочтения дарящего и получателя;
2) изучить классификацию растений;
3) выявить ассоциативные соответствия между данными, полученными от пользователя и различными представителями царства растений;
4) разработать систему в среде CLIPS;
5) разработать понятный для пользователя интерфейс обращения к системе.
Введение 2
1 Основы теории экспертных систем 5
1.1 Классификации экспертных систем 8
1.2 Этапы разработки экспертных систем 11
1.3 Инструментальные средства разработки экспертных систем 13
2 Описание предметной области 15
3 Описание экспертной системы 17
4 Алгоритм работы экспертной системы 20
5 Реализация пользовательского интерфейса 24
6 Результат работы экспертной системы 26
Заключение 29
Список используемых источников 30
Приложение А 31
Основные компоненты экспертной системы:
– решатель (интерпретатор);
– рабочая память (РП), называемая также базой данных (БД);
– база знаний (БЗ);– компоненты приобретения знаний;
– объяснительный компонент;
– диалоговый компонент.
База данных (рабочая память) предназначена для хранения исходных и промежуточных данных решаемой в текущий момент задачи. Этот термин совпадает по названию, но не по смыслу с термином, используемым в информационно–поисковых системах (ИПС) и системах управления базами данных (СУБД) для обозначения всех данных (в первую очередь долгосрочных), хранимых в системе[9].
База знаний (БЗ) в ЭС предназначена для хранения долгосрочных данных, описывающих рассматриваемую область (а не текущих данных), и правил, описывающих целесообразные преобразования данных этой области.
Решатель, используя исходные данные из рабочей памяти и знания из БЗ, формирует такую последовательность правил, которые, будучи примененными к исходным данным, приводят к решению задачи.
Компонент приобретения знаний автоматизирует процесс наполнения ЭС знаниями, осуществляемый пользователем–экспертом.
Объяснительный компонент объясняет, как система получила решение задачи (или почему она не получила решение) и какие знания она при этом использовала, что облегчает эксперту тестирование системы и повышает доверие пользователя к полученному результату.
Диалоговый компонент ориентирован на организацию дружественного общения с пользователем как в ходе решения задач, так и в процессе приобретения знаний и объяснения результатов работы[5].
На проектирование и создание одной экспертной системы ранее требовалось 20–30 человек–лет. В настоящее время имеется ряд средств, ускоряющих создание. Эти средства называют инструментальными или инструментарием. Использование инструментальных средств разработки экспертных систем сокращает время, затрачиваемое на их создание, в 3–5 раз.
Инструментальное средство разработки экспертных систем – это язык программирования, используемый инженером знаний или (и) программистом для построения экспертной системы. Этот инструмент отличается от обычных языков программирования тем, что обеспечивает удобные способы представления сложных высокоуровневых понятий.
По своему назначению и функциональным возможностям инструментальные программы, применяемые при проектировании экспертных систем, можно разделить на четыре достаточно большие категории: оболочки экспертных систем, языки программирования высокого уровня, среда программирования поддерживающие несколько парадигм, дополнительные модули.
Системы типа оболочки экспертных систем создаются, как правило, на основе какой–нибудь экспертной системы, достаточно хорошо зарекомендовавшей себя на практике. При создании оболочки из системы–прототипа удаляются компоненты, слишком специфичные для области ее непосредственного применения, и оставляются те, которые не имеют узкой специализации. Примером может служить система EMYCIN, созданная на основе прошедшей длительную «обкатку» системы MYCIN. В EMYCIN сохранен интерпретатор и все базовые структуры данных – таблицы знаний и связанные с ними механизм индексации. Оболочка дополнена специальным языком, улучшающим читабельность программ, и средствами поддержки библиотеки типовых случаев и заключений, выполненных по ним экспертной системой[3].
Инструментальные средства категории языки программирования высокого уровня избавляют разработчика от необходимости углубляться в детали реализации системы – способы эффективного распределения памяти, низкоуровневые процедуры доступа и манипулирования данными. Одним из наиболее известных представителей таких языков является OPS5. Этот язык прост в изучении и предоставляет программисту гораздо более широкие возможности, чем типичные специализированные оболочки. Следует отметить, что большинство подобных языков так и не было доведено до уровня коммерческого продукта и представляет собой скорее инструмент для исследователей[7].
Средства программирования поддерживающие несколько парадигм включают несколько программных модулей, что позволяет пользователю комбинировать в процессе разработки экспертной системы разные стили программирования. Среди первых проектов такого рода была исследовательская программа LOOP, которая допускала использование двух типов представления знаний: базирующегося на системе правил и объектно–ориентированного. На основе этой архитектуры во второй половине 1980–х годов было разработано несколько коммерческих программных продуктов, из которых наибольшую известность получили KEE, KnowledgeCraft и ART. Эти программы предоставляют в распоряжение квалифицированного пользователя множество опций и для последующих разработок, таких как КАРРА и CLIPS, и стали своего рода стандартом. Однако освоить эти языки программистам далеко не так просто, как языки, отнесенные к предыдущей категории.
Дополнительные модули представляют собой автономные программные модули, предназначенные для выполнения специфических задач в рамках выбранной архитектуры системы решения проблем[10].
2 Описание предметной области
В своей жизни многие не раз сталкиваются с проблемой выбора подарка для близкого человека. Известно, что одним из лучших подарков, в полной мере отражающих отношение дарящего к близкому человеку является растение, например цветок. В то же время при выборе подарка необходимо учитывать характер, возраст, вкусовые предпочтения того, кому он предназначен, а при выборе растений это сделать очень сложно так как необходимо хорошо ориентироваться во всевозможных классификациях растений. Наличие экспертной системы, анализирующей данные полученные от пользователя и предоставляющей вариант растения, которое можно использовать в качестве подарка для близкого человека значительно упростит решение проблемы анализа и выбора растения.
Система подбора растения в качества подарка основана на сопоставлении классификаций растений с данными, полученными от пользователя. Данное сопоставление осуществляется за счет подробного изучения классификаций растений.
Царство растений делятся на два подцарства: низшие и высшие. Каждое из которых имеет определенное количество типов растений, которые в свою очередь делятся на классы, содержащие конкретные виды растений.
Подцарство низшие содержит два типа растений: водоросли и лишайники. Водоросли делятся на зеленые, бурые, эвгленовые и харовые. Лишайники делятся на накипные, листовидные и кустистые.
Подцарство высшие делится на следующие типы: моховидные, папоротникообразные, голосеменные и покрытосеменные.
Моховидные состоят из следующих классов: антоцеротовые, печеночные и листостебельные.
Папоротникообразные делятся на: папоротники, плауны и хвощи.
В состав голосеменных входят следущие классы: хвойные, гинкговые, гистовые.
Покрытосеменные (или цветковые) делятся на: двудольные и однодольные[11].
Схема классификаций растений представлена на рисунке 4:
Рисунок 4 – Схема классификации растений
Данные о характере, внешности, роде занятий, предпочтений получателя подарка предоставляются пользователем системы. После чего, на основе полученных данных устанавливаются соответствия: растение какого подцарства, типа и класса наиболее полно отражает представление пользователя о человеке, для которого производится выбор.
Экспертная система выбора растения в качестве подарка написана в среде CLIPS. В проекте описывается царство растений. Создается класс rastenie, в котором будут перечисленны свойства необходимые для принятия решения.
(defclass rastenie
(is–a USER) ;; пользовательский класс
(role concrete)
(pattern–match reactive)
(slot carstvo(type SYMBOL) (create–accessor read–write));подцарство растений
(slot tip(type SYMBOL) (create–accessor read–write)) ;; тип
(slot klass (type SYMBOL) (create–accessor read–write)) ;; класс
(slot vid (type SYMBOL) (create–accessor read–write)) ;; конкретный представитель
)
Первые три слота — системные. Они нужны объектно–ориентированной
надстройке CLIPS (COOL — CLIPS
Экземпляры класса rastenie могут быть использованы в качестве объектов данных, которые можно сопоставлять с условиями в правилах и использовать в действиях, определенных правилами.
Для того чтобы иметь возможность записывать в слот новое значение или считывать текущее, нужно разрешить формирование соответствующих функций доступа через грань акцессоров create–accessor.
Следующие четыре слота представляют свойства и члены данных класса:
– слот carstvo содержит иформацию о подцарстве царства растений, может принимать значения niz или vys (низшие или высшие);
– слот tip принимает одно из значений: vodorosli, lishainiki, mhi, paporotnikoobraznye, golosemennye, cvetkovye, в зависимости от определенного подцарства и выбранного типа растения;
– слот klass принимает одно из восемнадцати значений: zelenye, burye, evglenovye, harovye, nakipnye, listovidnye, kustistye, antocerotovye, pechenochnye, listostebelnye, paporotniki, plauny, hvoshi, hvoinye, gingkovye, gistovye, dvudolnye, odnodolnye, соответствующих определенному классу растений;
– слот vid принимает одно из 58 значений, соответствующих названию вида растения определенного класса.
Формируется экземпляр класса:
(definstances r (PPK of rastenie
(carstvo 0)
(tip 0)
(klass 0)
(vid 0) ))
Значения экземпляра класса нулевые, так в процессе работы системы они будут заменятся на возможные значения в зависимости от ответов пользователя на предоставляемые системой вопросы.
Имея определение класса и экземпляр класса можно составить правила и функции осуществления подбора растения.
Функция vybor (?question ?answer) принимает параметры номер вопроса и ответ пользователя. На основе полученных данных изменяет значения слотов экземпляра классов.
Правила (rule–sys1)– (rule–sys58) производят анализ указанных параметров и определяют конечный результат (выбор растения).
Правило rule–print записывает результат работы системы(предлагаемое растение) в файл out.txt.
Описание классов и функция vybor содержатся в файле vybor.clp, все правила – в result.clp.
Работу системы можно разбить на три этапа:
Получение данных от пользователя производится по схеме вопрос–ответ. Всего пользователь отвечает на четыре вопроса. Каждый следующий вопрос зависит от ответа на предыдущий.
После получения ответов на каждый вопрос вызывается функция vybor, которая изменяет значения слотов экземпляра класса rastenie.
Далее, учитывая полученные значения слотов экземпляра класса правилами формируется ответ, который подается на вывод пользователю (выводится подобранное растение).
При ответе на первый вопрос определяется в каком подцарстве (низшем или высшем) необходимо искать нужное растение. На рисунке 5 представлена блок–схема подбора растения в подцарстве низшие.
Описание блоков рисунка 5:
1 – начало
2 – выбор типа
3 – вопрос для соответствующего типа
4 – выбор класса
5 – вопрос для соответствующего класса
6 – выбор вида
7 – соответствующий результат
Рисунок 5 – Блок–схема подбора растения в подцарстве низшие
Аналогичным образом выглядит подбор растения в подцарстве высшие. Структурная схема которого изображена на рисунке 6.
Описание блоков рисунка 6:
1 – начало
2 – выбор типа
3 – вопрос для соответствующего типа
4 – выбор класса
5 – вопрос для соответствующего класса
6 – выбор вида
7 – соответствующий результат
Иными словами, сначала определяется тип растения. Для подцарства высшие это: моховидные, папоротникообразные, голосеменные или покрытосеменные. В зависимости от выбранного типа растения пользователю выдается соответствующая формулировка следующего вопроса. Таким образом осуществляется выбор класса растения относящийся к типу, определенному на предыдущем этапе. Затем, в выбранном классе осуществляется определение вида растения.
Рисунок 6 – блок–схема определения растения в подцарстве высшие
Для реализации пользовательского интерфейса использовались: HTML, CSS, JavaScript, PHP5.
Для связи пользовательского интерфейса и средой clips использовалось расширение РНР5 phlips версии 0.5.1.
Интерфейс реализован на языке текстовой разметки HTML. Для визуального оформления и навигации применены CSS стили и JavaScript библиотека Jquery.
Вызов функций CLIPS производился при помощи следующих функций РНР:
clips_clear() ─ очистка экспертной системы
clips_load ( string file ) ─ загрузка файла среды CLIPS
clips_function_call ( string function_name [, string arguments] ) – вызов функции среды CLIPS
clips_run() – запуск правил среды CLIPS