Разработка экспертной системы по определению оптимальной конфигурации ПК

Автор работы: Пользователь скрыл имя, 22 Сентября 2013 в 15:13, курсовая работа

Описание работы

При создании экспертных систем возникает ряд затруднений. Это, прежде всего, связано стем, что заказчик не всегда может точно сформулировать свои требования к разрабатываемой системе. Также возможно возникновение трудностей чисто психологического порядка: при создании базы знаний системы эксперт может препятствовать передаче своих знаний, опасаясь, что впоследствии его заменят «машиной». Но эти страхи не обоснованы, так как экспертные системы не способны обучаться, они не обладают здравым смыслом, интуицией. Но в настоящее время ведутся разработки экспертных систем, реализующих идею самообучения. Также экспертные системы неприменимы в больших предметных областях и в тех областях, где отсутствуют эксперты.

Содержание работы

Задание 3
Реферат 4
Введение 5
1 Постановка задачи 6
2 Описание предметной области 7
2.1 Acer 7
2.2 ASUS 7
2.3 Samsung 8
2.4 GigaByte 8
2.5 INTEL 9
3 Выбор среды разработки 9
3.1 Краткая информация о языке CLIPS 9
3.2 Система обозначений 10
3.3 Резюме языка CLIPS 12
4 Разработка экспертной системы 13
5 Работа с экспертной системой 15
Вывод 22
Список используемых источников 23

Файлы: 1 файл

Курсовая.docx

— 261.65 Кб (Скачать файл)

Intel — крупнейший в мире производитель микропроцессоров, занимающий на 2008 год 75 % этого рынка. Основные покупатели продукции компании — производители персональных компьютеров Dell и Hewlett-Packard. Помимо микропроцессоров, Intel выпускает полупроводниковые компоненты для промышленного и сетевого оборудования.

3 Выбор  среды разработки

Среди множества оболочек экспертных систем следует выделить:

    • Guru;
    • Leonardo;
    • Clips;

Среди рассмотренных оболочек для  создания экспертных систем выберем  Clips, поскольку он позволяет создавать экспертные системы для платформ Windows.

3.1 Краткая информация  о языке CLIPS

Первоначально аббревиатура CLIPS была названием языка — С LanguageIntegratedProductionSystem (язык С, интегрированный с продукционными  системами), удобного для разработки баз знаний и макетов экспертных систем. Теперь CLIPS представляет собой современный инструмент, предназначенный для создания экспертных систем (expertsystemtool). CLIPS состоит из интерактивной среды — экспертной оболочки со своим способом представления знаний, гибкого и мощного языка и нескольких вспомогательных инструментов. Сейчас, благодаря доброй воле своих создателей, CLIPS является абсолютно свободно распространяемым программным продуктом. Всем желающим доступен как сам CLIPS последней версии, так и его исходные коды. Официальный сайт CLIPS располагается по адресу: http://www.ghg.net/clips/CLIPS.html. Этот сайт поможет вам получить как сам CLIPS, так и всевозможный материал для его изучения и освоения (документацию, примеры, советы специалистов, исходные коды и многое другое). Сейчас на рынке доступно не так уж много экспертных оболочек (инструментов, предназначенных для создания экспертных систем). Несмотря на то, что CLIPS распространяется бесплатно, он весьма успешно конкурирует даже с самыми известными коммерческими проектами. Количество пользователей CLIPS растет из года в год. Об этом можно судить по активности посещения сайтов, форумов и конференций, посвященных CLIPS. Если вы еще не установили CLIPS на свой компьютер — возможно, самое время сделать это. А пока, для того чтобы лучше понять философию CLIPS, его возможности и особенности, погрузимся в историю создания этой системы.

3.2 Система обозначений

Для описания синтаксиса различных команд и конструкций, рассматриваемых в ходе изложения, используется одна и та же система обозначений. Эта система обозначений состоит из трех различных типов текста, подлежащего вводу.

Обозначения первого типа относятся  к символам и знакам, которые должны быть введены точно так, как они  показаны; к ним относятся любые  текстовые надписи, не заключенные  в пару знаков <>, [ ] или {}. Например, рассмотрим следующее описание синтаксиса:

(example)

Это описание синтаксиса означает, что  конструкция (example) должна быть введена  так, как показано. Точнее, вначале  должен быть введен знак открывающей  скобки (, затем буква е, после  этого буквы х, a, m, р, l, е и, наконец, знак закрывающей скобки, ).

Квадратные скобки, [ ], указывают, что содержимое в квадратных скобках является необязательным. Например, следующее описание синтаксиса показывает, что цифра 1, находящаяся в квадратных скобках, может не указываться:

(example [1])

Таким образом, следующий результат  ввода является совместимым с  указан¬ным выше синтаксическим определением:

(example)

как и такой результат ввода: (example 1)

Знаки "меньше" и "больше", вместе взятые, <>, указывают, что должна быть выполнена замена значением  того типа, который обозначен содержимым, находя¬щимся внутри знаков <>. Например, следующее описание синтаксиса, в котором используются знаки "меньше" и "больше", показывает, что должна быть выпол¬нена замена действительным целочисленным значением:

<integer>

Продолжая предыдущие примеры, укажем, что такое описание синтаксиса: (example <integer>) может быть заменено следующими результатами ввода:

(example 1) или:

(example 5) или:

(example -20) или многими другими результатами ввода, в которых содержатся знаки "(example ", за этими знаками следует целое число, а за ним — знак ). Важно отметить, что пробелы, показанные в описании синтаксиса, также должны быть включены в результат ввода.

Еще один вариант обозначения характеризуется  использованием звездочки, *, которая  следует за описанием. Такое обозначение  показывает, что описание может быть заменено вхождениями указанного значения в количестве от нуля или больше. После каждого вхождения некоторого значения должны быть проставлены пробелы. Например, следующее описание синтаксиса:

<integer>*

может быть заменено таким результатом  ввода: 1

или таким: 1 2

или таким: 12 3

или любым другим количеством разделенных  пробелами целых чисел, или же вообще оставлено пустым.

Описание, за которым следует знак "плюс", +, указывает, что вместо этого опи¬сания синтаксиса должно быть введено одно или несколько значений, заданных этим описанием. Необходимо отметить, что следующее описание синтаксиса:

<integer>+

эквивалентно такому описанию синтаксиса:

<integer> <integer>*

Вертикальная черта, |, указывает  на необходимость выбора одного или  не¬скольких элементов, разделенных вертикальными чертами. Например, следующее описание синтаксиса:

all | none | some

может быть заменено таким результатом  ввода: all

all

или таким: none или таким: some

 

 

3.3 Резюме языка CLIPS

Первым компонентом системы  CLIPS являются факты. Факты формируются из полей, которые могут представлять собой символ, строку, целое число или число с плавающей точкой. Первое поле факта обычно используется для указания типа информации, хранимой в факте, и называется именем отношения. Для присваивания имен слотов конкретным полям факта, начиная с указанного имени отношения, используется конструкция deftemplate. Для определения фактов как начальных знаний служит конструкция deffacts.

Вторым компонентом системы  CLIPS являются правила. Каждое правило состоит из левой и правой части. Левая часть правила может рассматриваться как часть IF, а правая часть — как часть THEN. Правила могут иметь несколько шаблонов и действий.

Третьим компонентом системы CLIPS является машина логического вывода. Правила, шаблоны которых удовлетворяются фактами (т.е. проверка шаблонов на соответствие фактам оканчивается успешно), активизируются, в результате чего активизированные правила помещаются в рабочий список правил. А наличие в системе CLIPS свойства релаксации исключает возможность постоянной активизации одних и тех же правил под действием уже воспринятых фактов.

Кроме того, в настоящей главе  дано вводное описание такого понятия, как переменные. Переменные используются для выборки информации от фактов и ограничения значений слотов при сопоставлении с шаблонами в левой части правила. Переменные могут сохранять адреса фактов, сопоставленных с шаблонами в левой части правила, что позволяет извлекать факты, связанные с шаблонами, в правой части правила. Если поле, с которым должно быть выполнено согласование, может иметь любое значение и его значение в дальнейшем не требуется в левой или в правой части правила, то вместо переменных могут использоваться однозначные подстановочные символы. Многозначные переменные и подстановочные символы позволяют согласовывать факты больше чем с одним полем в шаблоне.

 

4 Разработка экспертной системы

Пользуясь редактором clipsedt.exe, сформируем базу знаний демонстрационной ЭС и сохранить ее в файле Config.clp. ЭС должна вырабатывать рекомендации рядовому пользователю ПК по выбору комплектации персонального компьютера в соответствии с заданными входными параметрами. Данная экспертная система будет иметь 4 входные переменные:

  1. Мобильность – важнейший параметр данной ЭС, так как он является определяющим в выборе 2 направлений: мобильные и стационарные.
  2. Цели использования ПК – определяющий параметр, разделяющий ЭС по направлениям использования персонального компьютера, а также по его стоимости (офисные ПК дешевле чем ПК, предназначенные для мультимедийных приложений).
  3. Пределы стоимости выбранной конфигурации – параметр, определяющий максимальное количество денег, которое может потратить пользователь на покупку персонального компьютера.
  4. Фирма-изготовитель – параметр, определяющий предпочтения пользователя в сторону той или иной фирмы-изготовителя комплектующих или мобильных систем.

Обозначения переменных:

mobile – мобильность. Имеет 2 значения: 0 – нет (стационарный ПК), 1 – да (мобильный ПК);

firma – фирма-изготовитель. Имеет 5 параметров: 1 – Acer, 2 – ASUS, 3 – Samsung, 4 – Gigabyte, 5 - INTEL;

znach – назначение выбираемого персонального компьютера. Имеет 2 параметра: 1 – офисные ПК, 2 – мультимедийные приложения;

cash – максимальная стоимость, которую может потратить пользователь на выбранный ПК (минимальная стоимость ПК по данному параметру – 6000, максимальная - 60000).

 

Диаграмма зависимостей переменных:

Рисунок 1 – диаграмма зависимостей переменных.

 

5 Работа с экспертной системой

C помощью редактора clipsedt.exe, или любого текстового редактора (например, NotePad++) создадим базу знаний экспертной системы, содержащую в себе правила, на основании которых экспертная система будет выдавать рекомендации по выбору конфигурации ПК пользователю ЭС. Исходный код экспертной системы имеет вид:

(defrule data-input

  (initial-fact)

=>

  (printout t crlf " Основное назначение: ")

  (printout t crlf " 1 - Офисные ")

  (printout t crlf " 2 - Мультимедийные приложения и игры " crlf)

  (bind ?znach (read))

  (assert (znach ?znach)) 

 

  (printout t crlf " Мобильность (1 - да; 0 - нет): ")

  (bind ?mobile (read))

  (assert (mobile ?mobile))

 

  (printout t crlf " Фирма-изготовитель: ")

  (printout t crlf " 1 - Acer ")

  (printout t crlf " 2 - ASUS ")

  (printout t crlf " 3 - Samsung ")

  (printout t crlf " 4 - GigaByte ")

  (printout t crlf " 5 - INTEL " crlf)

  (bind ?firma (read))

  (assert (firma ?firma))

 

  (printout t crlf "Максимальная стоимость ПК: ")

  (bind ?cash (read))

  (assert (cash ?cash))

 

(defrule R1 

(mobile ?mobile)

        (firma ?firma)

(test (and (= ?mobile 1)(= ?firma 1)) )

=>

  (printout t crlf crlf "Вы выбрали раздел мобильных ПК (ноутбуки) фирмы Acer" crlf)

  (assert (type "Мобильные ПК Acer"))

  (assert (typecnst 1))) 

(defrule R2

(mobile ?mobile)

        (firma ?firma)

(test (and (= ?mobile 1)(= ?firma 2)) )

=>

  (printout t crlf crlf "Вы выбрали раздел мобильных ПК (ноутбуки) фирмы ASUS " crlf)

  (assert (type "Мобильные ПК ASUS"))

  (assert (typecnst 2))) 

(defrule R3

(mobile ?mobile)

        (firma ?firma)

(test (and (= ?mobile 1)(= ?firma 3)) )

=>

  (printout t crlf crlf "Вы выбрали раздел мобильных ПК (ноутбуки) фирмы Samsung " crlf)

  (assert (type "Мобильные ПК Samsung"))

  (assert (typecnst 3))) 

(defrule R4

(mobile ?mobile)

        (firma ?firma)

(test (and (= ?mobile 1)(> ?firma 3)) )

=>

  (printout t crlf crlf "Мобильные ПК данной фирмы не выпускаются. Выберите другую фирму-изготовитель для мобильного ПК" crlf)

  (assert (config "Выберите другую фирму-изготовитель для мобильного ПК"))) 

(defrule R5

(mobile ?mobile)

        (firma ?firma)

(test (and (= ?mobile 0)(and (= ?firma 1)(= ?firma 3))) )

=>

  (printout t crlf crlf "Стационарные ПК на основе мат.плат данной фирмы не выпускаются. Выберите другую фирму-изготовитель для стационарного ПК" crlf)

  (assert (config "Выберите другую фирму-изготовитель для стационарного ПК"))) 

(defrule R6

(mobile ?mobile)

        (firma ?firma)

(test (and (= ?mobile 0)(= ?firma 2)) )

=>

  (printout t crlf crlf "Вы выбрали раздел стационарных ПК на основе мат.плат фирмы ASUS " crlf)

  (assert (type "Стационарные ПК ASUS"))

  (assert (typecnst 4))) 

(defrule R7

(mobile ?mobile)

        (firma ?firma)

(test (and (= ?mobile 0)(= ?firma 4)) )

=>

  (printout t crlf crlf "Вы выбрали раздел стационарных ПК на основе мат.плат фирмы GigaByte " crlf)

  (assert (type "Стационарные ПК GigaByte"))

  (assert (typecnst 5))) 

Информация о работе Разработка экспертной системы по определению оптимальной конфигурации ПК