Министерство образования РФ

ЛЕНИНГРАДСКОГО ГОСУДАРСТВЕННОГО

УНИВЕРСИТЕТА

(филиал)

Курсовая работа

по дисциплине: «Интеллектуальные системы»

на тему:

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

«Роликовые коньки – помощь чайнику»

Выполнил студент группы П-41д:

профессор

Москва 2004

ОГЛАВЛЕНИЕ

Введение

1.  Экспертные системы

1.1.  Основные понятия и термины

1.2.  Структура экспертной системы

1.3.  База знаний (модели представления знаний)

1.4.  Механизм логического вывода

1.5.  Технология получения знаний

2.  Программа VP-EXPERT, ее основные характеристики и возможности

2.1.  Постановка задачи

2.2.  Инструментальные средства VP-EXPERT

3.  Реализация

Заключение

ВВЕДЕНИЕ

Аналитические технологии - это методики, которые на основе каких-либо моделей, алгоритмов, математических теорем позволяют по известным данным оценить значения неизвестных характеристик и параметров.

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

Простейший пример аналитической технологии - теорема Пифагора, которая позволяет по длинам сторон прямоугольника определить длину его диагонали. Эта технология основана на известной формуле с2=а2+b2.

Другим примером аналитической технологии являются способы, с помощью которых обрабатывает информацию человеческий мозг. Уникальность мозга состоит в том, что он способен обучаться решению новых задач - игре в шахматы, вождению автомобиля и т. д. Тем не менее, мозг плохо приспособлен к обработке больших объемов числовой информации - человек не сможет найти даже квадратный корень из числа 463761 в уме, не используя калькулятора или алгоритма вычисления в столбик. На практике же часто встречаются задачи о числах, гораздо более сложные, чем извлечение корня. Таким образом, человеку для решения этих задач необходимы дополнительные методики и инструменты.

НЕ нашли? Не то? Что вы ищете?

В качестве таких инструментов применяются «Традиционные технологии», которые, в свою очередь, делятся на «Детерминированные технологии» и «Вероятностные технологии».

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

Вероятностные технологии применяются для задач, связанных с наблюдением случайных величин (например, задача прогнозирования курса акций).

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

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

Из-за описанных выше недостатков традиционных методик в последние 10 лет идет активное развитие аналитических систем нового типа. В их основе - технологии искусственного интеллекта, имитирующие природные процессы, такие как деятельность нейронов мозга или процесс естественного отбора.

Наиболее популярными и проверенными из этих технологий являются нейронные сети. Первые коммерческие реализации на их основе появились в 80-х годах и получили широкое распространение в развитых странах.

Нейронные сети в каком-то смысле являются имитациями мозга, поэтому с их помощью успешно решаются разнообразные "нечеткие" задачи - распознавание образов, речи, рукописного текста, выявление закономерностей, классификация, прогнозирование. В таких задачах, где традиционные технологии бессильны, нейронные сети часто выступают как единственная эффективная методика решения. По данным фирмы Ward Systems Group, в 1998 году программные продукты на основе нейронных сетей использовались более чем в 500 крупнейших компаниях мира из списка Fortune 1000.

К области применения нейросетей можно отнести задачи как: классификация, кластеризация и поиск зависимостей, прогнозирование.

Классификация

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

Примером такой задачи служит медицинская диагностика, где сеть может учитывать большое количество числовых параметров (энцефалограмма, давление, вес и т. д.). Конечно, «мнение» сети в этом случае нельзя считать окончательным.

Кластеризация и поиск зависимостей

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

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

Кластеризация - это разбиение набора примеров на несколько компактных областей (кластеров), причем число кластеров заранее неизвестно. Кластеризация позволяет представить неоднородные данные в более наглядном виде и использовать далее для исследования каждого кластера различные методы. Например, таким образом можно быстро выявить фальсифицированные страховые случаи или недобросовестные предприятия.

Прогнозирование

Задачи прогнозирования особенно важны для практики, в частности, для финансовых приложений и других экономических прогнозов.

1.  ЭКСПЕРТНЫЕ СИСТЕМЫ

1.1.  Основные понятия и термины

Экспертная система - это интеллектуальная про­грамма, способная делать логические выводы на осно­вании знаний в конкретной предметной области и обеспечивающая решение специфических задач. По­этому ее необходимо наделить функциями, позволяю­щими решать задачи, которые в отсутствие эксперта (специалиста в конкретной предметной области) не­возможно правильно решить. Следовательно, необхо­димым этапом в ее разработке является приобрете­ние соответствующих знаний от эксперта. Если пере­числить требования к экспертным системам, то полу­чим следующее:

·  использование знаний, связанных с конкретной предметной областью;

·  приобретение знаний от эксперта;

·  определение реальной и достаточно сложной за­дачи;

·  наделение системы способностями эксперта.

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

·  имеют огромный багаж знаний, касающихся кон­кретной предметной области;

·  имеют довольно большой опыт в этой области;

·  умеют точно сформулировать и правильно решить задачу.

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

1.2.  Структура экспертной системы

Знания и их представление

Пользовательский интерфейс

Ввод данных Заключения

Советы

Объяснения

Блок-схема: знак завершения: Пользователь

(не специалист)
 

Рис. 1.2. Пример структуры экспертной системы

На рис. 1.2 показана базовая структура экспертной системы, ниже перечислены функции, которые должны выполнять ее структурные элементы.

Во-пер­вых, необходим механизм представления знаний в кон­кретной предметной области и управления ими. Для реализации этих функций используется механизм, на­зываемый базой знаний. Во-вторых, необходим меха­низм, который на основании знаний, имеющихся в базе знаний, способен делать логические выводы. Этот механизм называется механизмом логических выво­дов. В-третьих, необходим интерфейс для правильной передачи ответов пользователю. В противном случае пользоваться такой системой крайне неудобно. Ме­ханизмом, реализующим эту функцию, является поль­зовательский интерфейс. В-четвертых, необходим ме­ханизм получения знаний от эксперта, поддержки базы знаний и дополнения ее при необходимости. Механизмом, реализующим эти функции, является модуль приобретения знаний. В-пятых, необходим ме­ханизм, который не только способен давать заключе­ние, но и представлять различные комментарии, при­лагаемые к этому заключению, и объяснять его моти­вы. В противном случае пользователю будет трудно понять заключение. Такое понимание необходимо, если заключение используется для консультации или оказания помощи при решении каких-либо вопросов. Механизм, реализующий эти функции, называется модулем советов и объяснений.

Перечисленные структурные элементы являются наиболее характерными, хотя в реальных экспертных системах их функции могут быть усилены соответ­ствующим образом, или расширены. Кроме того, что механизм объяснений играет весь­ма важную роль, он важен не только для пользова­теля системы, но и для эксперта, предоставляющего знания в конкретной предметной области. Это обус­ловлено тем, что с его помощью эксперт определяет, как работает система, и позволяет точно выяснить, как используются знания, предоставленные им. Э. Фейгенбаум, который в 1977 г. ввел понятие инже­нерии знаний, отмечал в своих трудах: «По опыту нам известно, что большая часть знаний в конкретной предметной области" остается личной собственностью эксперта. И это происходит не потому, что он не хо­чет разглашать своих секретов, а потому, что он не в состоянии сделать этого - ведь эксперт знает гораздо больше, чем сам осознает».

Иначе говоря, необходимо извлечь знания, кото­рыми подсознательно владеет специалист, и для этого используется модуль советов и объяснений. Напри­мер, если этот процесс выполняется с помощью ре­альной совокупности тестовых данных, но заключение получается непонятным, специалист обходит острые углы. Однако данный механизм работает таким обра­зом, что помогает объяснить причину неправильного заключения. Это позволяет сделать осознанными зна­ния, которыми до сих пор он владел подсознательно. В конечном итоге возникает ситуация «я знаю, что я знаю», позволяющая более эффективно использовать знания специалиста.

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

1.3.  База знаний (модели представления знаний)

Человек понимает речь и изображения и для решения всевозможных задач использует знания в конкретной предметной области. Для выполнения анало­гичной работы компьютером эти знания необходимо представить в какой-нибудь форме и составить нужную программу. С помощью используемых в прошлом методов процедурного программирования на языках типа Фортран, Паскаль и других эти знания помеща­лись в прикладную программу, с которой и составля­ли единое целое. Однако подобные методы затрудня­ли понимание, каким образом используются знания и какую роль они выполняют. Кроме того, разработка и сопровождение таких программ также были не лег­ким делом. Иначе говоря, специальные знания приоб­ретаются из каталогов по данной предметной области и от соответствующих специалистов, однако чем выше степень сложности задачи, тем крупнее и сложнее для понимания становятся программы, поэтому за­трудняется их разработка и модификация.

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

Рассмотрим модели трех видов пред­ставления знаний: логического, сетевого и объектного.

Правила продукций

Наиболее распространенным методом представления знаний являются правила продукций или продукционные пра­вила. Этот метод широко используется в разработке информационных систем.

Вначале правила продукций имели вид:

ЕСЛИ<условия>ТО<действие>

Слова в угловых скобках являются посылками или ут­верждениями. В дальнейшем они приобрели более общую форму.

Наряду с написанной используются следующие формы:

ЕСЛИ<предшествующий>ТО<последующий>

ЕСЛИ<основание>ТО<гипотеза>

Таким образом, правило состоит из двух частей: часть ЕСЛИ указывает "условия", "предшествующий" или "осно­вание", и часть ТО представляет соответственно "заключение", "последующий" или "гипотезу". Перечисленные элементы второй части генерируются при истинности условий первой части.

Гипотетический силлогизм означает, что когда заклю­чение одного правила является посылкой другого правила, то можно установить третье правило с посылкой из первого пра­вила и заключением из второго. Другими словами:

условие ЕСЛИ X ТО Y

условие ЕСЛИ Y ТО Z

заключение ЕСЛИ X ТО Z

Таблицы принятия решений

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

Идея таблиц решений заключается в использовании их в качестве алгоритмов в постановках задач и одновременно в качестве средства программирования на исходном языке, т. е. чтобы этап алгоритмизации задачи являлся одновременно и этапом программирования. Постановка задачи с использова­нием таблиц является четкой и недвусмысленной.

Рассмотрим таблицу решений (Таблица 1.3.1), которая является алгоритмом проектирования элементарного техноло­гического процесса для цилиндрических поверхностей враще­ния применительно к условиям некоторого завода. В зависи­мости от характеристик поверхности: класса точности, класса чистоты, вида термообработки и несоосности выбирается со­ответствующий этим характеристикам план ее обработки, т. е. операции токарная, шлифовальная и т. п. Таблица разделяется двойной горизонтальной линией на область условий и область действий. Двойной вертикальной линией таблица также разде­ляется на две части: в левой части находится колонка с назва­нием "операнд" и символы операций. Справа от двойной ли­нии размещаются колонки правила, которые содержат правые части отношений и операнды операторов (в примере - метки оператора перехода). Полученную таблицу называют таблицей принятия решений (ТР).

Таблица 1.3.1. Таблица принятия решений

Операнд 1

Оп

1

2

3

4

5

6

Класс точности

³

4

2

2

1

3

1

Класс чистоты

£

6

8

8

9

12

12

Вид

термообра­ботки

=

-

01,02

03,04

-

01,02

-

Несоосность

³

0,1

0,02

0,01

0,01

-

-

Перейти к

П1

П2

ПЗ

П4

П5

П6

Таблица интерпретируется следующим образом:

ЕСЛИ класс точности >= 4

И класс чистоты <= 6

И несоосносность >= 0.01

ТО операция 1:= токарная

ЕСЛИ класс точности >= 2

И класс чистоты <= 8

И вид термообработки 01 ИЛИ 02

И несоосносность >= 0.02

ТО операция 1:= токарная, операция 2:= шлифо­вальная

Нетрудно заметить, что столбцы таблицы являются продукционными правилами.

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

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

Семантические сети

В отличие от логических моделей представления знаний семантические сети позволяют успешно структурировать информацию. Граф, который лежит в основе семантической сети, собирает вокруг одного узла всю инфор­мацию по некоторому объекту. Такие модели позволяют на­глядно представить круг решаемых проблем в большей степе­ни, чем множество правил, относящихся к ним.

Семантическая сеть состоит из множества концептуаль­ных графов. Концептуальный граф соответствует некоторой логической формуле, имена и аргументы предикатов которой изображается двумя типами узлов. Прямоугольники соответст­вуют аргументам, а круги - именам предикатов. Круг соединя­ется стрелкой с прямоугольником, если они соответствуют имени и аргументу некоторого предиката. Таким образом, прямоугольники используются для представления аргументов, событий и состояний. А круги - для увязывания этих понятий.

Разработка семантических сетей относится к 1960г., ко­гда они использовались для моделирования обработки естест­венного языка.

 

Рис. 1.3.1. Концептуальный граф

Логическая формула «Поставка (Интеграл, Луч, Схема_14)» формализует фразу «Завод Интеграл поставляет Схему_14 фирме Луч». На Рис. 1.3.1 изображен концептуальный граф для этой логической формулы.

Семантической сетью называют направленный граф с помеченными вершинами и дугами, в котором вершинам соот­ветствуют конкретные объекты, а дугам - семантические отно­шения между ними. Имена вершин определяют объекты из некоторой объектной области, например, станок, робокар, де­таль и т. д. Метки дуг обозначают элементы множества отно­шений.

В семантических сетях исполь­зуются четыре основных типа объектов: понятия, события, свойства и значения.

Понятия представляют собой сведения об абстрактных или физических объектах предметной области. Они могут быть заданы множеством доменов (параметров или констант).

События - это действия, которые могут перевести предметную область из текущего состояния в некоторое новое. Можно перевести предметную область в определенное желае­мое (целевое) состояние, поставить задачу, отыскать на семан­тической сети путь событий, приводящих к целевому состоя­нию.

Свойства используются для характеристики (уточнения) понятий, событий, процессов и т. д. Свойствами понятий могут быть цвет, размеры, качество, а свойствами действий - время, продолжительность, место и т. д.

Значения - это значения из какого-нибудь множества, которые могут принимать свойства.

Рассмотрим пример семантической сети (Рис. 1.3.2), ко­торая соответствует действию "Иванов руководит Петровым". Она представляется одним событием РУКОВОДИТ и двумя вершинами понятий ИВАНОВ и ПЕТРОВ. Дуги, соединяющие вершины-события и вершины-понятия, указывают роли поня­тий в событиях. Так, в событии РУКОВОДИТ понятие ИВАНОВ играет роль агента, а ПЕТРОВ - объекта воздействия. Свойством понятия ИВАНОВ является ДОЛЖНОСТЬ со зна­чением ПРОФЕССОР.

 


Рис. 3.4. Пример семантической сети
Объектное (фреймовое) представление

Теорию фреймов опубликовал в 1975г. М. Минский. Эта теория относится к психологическим понятиям и касается способов понимания того, как мы вос­принимаем (видим, слышим) явления, процессы, объекты и т. п.

В основе теории фреймов лежит восприятие фактов по­средством полученной извне информации о некотором явле­нии с уже имеющимися данными, накопленными опытным путем или полученными в результате вычислений. Когда чело­век попадает в новую ситуацию, он вызывает из своей памяти основную структуру, называемую фреймом. Фрейм (рамка) - это единица представления знаний, запомненная в прошлом, детали, которой могут быть изменены согласно текущей ситуа­ции. Класс некоторых объектов (процессов) может опреде­ляться одним типичным (базовым) объектом, который включа­ет наиболее существенные характеристики объектов данного класса. Так некоторую характеристику объекта можно пред­ставить тройкой (Объект, атрибут _j, значение _j).

Собрав все тройки, касающиеся данного объекта, полу­чим объектное представление области рассуждений, относи­тельно данного объекта. Общая форма этого представления такова:

Объект (атрибут _ i значение _ i), j=1,…m

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

Например:

Фрейм, соответствующий понятию «Поставка (Интеграл, Луч, Схема_14)»имеет следующий вид:

ФРЕЙМ (объект)

Поставка

Интеграл

(Слот-1)

Потребитель

Луч

(Слот-2)

Товар

Схема_14

(Слот-3)


Здесь каждая пара (атрибут, значение) является слотом. Нетрудно заметить, что фрейм содержит различные (наиболее важные) слоты, характеризующие данный объект «поставка».

Фрейм содержит как информационные, так и процедур­ные элементы, которые обеспечивают преобразование инфор­мации внутри фрейма и связи его с другими фреймами. Эле­ментами фрейма являются так называемые слоты (от англ. slot-щель), которые могут быть пустыми и заполняться в процессе активизации фрейма в соответствии с определенными усло­виями. Таким образом, фреймы представляют собой деклара­тивно-процедурные структуры, т. е. совокупность описаний и (возможно) связанных с ними процедур, доступ к которым выполняется прямо из фрейма.

Фрейм состоит из произвольного числа слотов, среди которых имеются системные слоты и слоты, определяемые пользователем. Каждый слот характеризуется определенной структурой и уникальным именем внутри данного фрейма. В качестве системных могут, например, быть определены сле­дующие слоты: указатель фрейма-родителя, указатель прямого дочернего фрейма, пользователь фрейма, дата определения фрейма и его последней модификации, а также некоторые дру­гие. Системные слоты используются при редактировании БД и управлении выводом.

Понятие «наследование свойств» позволяет фреймам за­имствовать свойства, которые имеют другие фреймы. УКА­ЗАТЕЛИ НАСЛЕДОВАНИЯ касаются только фреймовых сис­тем иерархического типа, основанных на отношениях «абстрактное – конкретное». Они показывают, какую информа­цию об атрибутах слотов во фрейме верхнего уровня наследуют слоты с такими же именами во фрейме нижнего уровня. Типичные указатели наследования:

U (unique - уникальный); S (same - такой же); R (range - установление границ); О (override - переопределить) и др. Ука­затель наследования U показывает, что каждый фрейм должен иметь слоты с различными значениями; S - все слоты имеют одно значение; R - значения слотов фрейма нижнего уровня должны находиться в пределах указанных значений слотов фрейма верхнего уровня; О - при отсутствии указания значе­ние слота фрейма верхнего уровня становится значением слота фрейма нижнего уровня.

Структура данных фрейма. Фрейм можно предста­вить в виде таблицы (отношения), строки которой соответст­вуют слотам фрейма, а столбцы - атрибутам (характеристикам) объекта. Имя таблицы является именем фрейма, и оно уни­кально. Каждый слот содержит следующие атрибуты: имя сло­та, указатель наследования, тип данных, значение слота, де­мон.

ТИП ДАННЫХ определяет, что слот либо имеет чис­ленное значение, либо является именем другого фрейма. К типам данных относится: FRAME (указатель); INTEGER (целый); REAL (действительный); BOOL (булев); LISP (присоединенная процедура); ТЕХТ (текст); LIST (список); ТАBLЕ (таблица); ЕХРRESSION (выражение) и др.

ЗНАЧЕНИЕ СЛОТА соответствует указанному типу данных этого слота; кроме того, должно выполняться условие наследования. Значениями слотов могут быть имена других фреймов, что обеспечивает связь (вложенность) между фрей­мами.

ДЕМОН - автоматически запускаемая процедура при обращении к слоту и выполнении некоторого условия. Напри­мер, демон типа IF-NEEDED запускается, если в момент об­ращения к слоту его значение не было установлено; IF-ADDED запускается при подстановке в слот значения, IF-REMOVED - при стирании значения слота.

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

Свойства фреймов.

·  Базовый тип. Базовые фреймы используются для указания наиболее важных объектов, позволяют добиться бы­строго понимания сущности данного предмета. На основании базовых фреймов строятся фреймы для новых состояний. При этом каждый фрейм содержит слот-указатель подструктуры, что позволяет различным фреймам совместно использовать одинаковые части.

·  Процесс сопоставления. Во фреймовой системе осуществляется поиск фрейма, который соответствует (релевантен) цели (данной ситуации). Другими словами, со­поставляются значения (ограничения) слота фрейма во фрей­мовой системе со значениями атрибутов цели. Процесс сопос­тавления осуществляется следующим образом:

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

б) Если в данном фрейме имеется слот, значение ко­торого отрицательно влияет на сопоставление, то нужно присвоить слоту надлежащее значение.

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

·  Иерархическая структура. Фрейм обычно соответ­ствует некоторой иерархической структуре, особенность кото­рой состоит в том, что значения атрибутов фрейма верхнего уровня совместно используются всеми фреймами нижних уровней, связанных с верхними. Такая структура позволяет удобно систематизировать и записать схожие поня­тия, добавлять новые понятия или знания в соответствующие позиции иерархии, упрощает обнаружение противоречий в знаниях, просмотр знаний и делает фреймовую систему более гибкой.

1.4.  Механизм логического вывода

В системах, основанных на концепциях искусствен­ного интеллекта и инженерии знаний, знания в конкретной форме, а имеющаяся база знаний позволяет их легко определять, модифицировать и по­полнять. Функция решения задач с помощью логиче­ских выводов, делаемых на основании знаний, храня­щихся в базе знаний, реализуется автономным меха­низмом логических выводов (аналогично функцио­нально независимому от СУБД механизму управления файлами, которые используются в прикладных про­граммах). Однако, несмотря на то, что оба этих компонента системы с точки зрения ее структуры явля­ются независимыми, они, тем не менее, находятся в тесной связи. Определение модели представления знаний накладывает ограничения на выбор соответствующего механизма логических выводов. Другими словами, при проектировании по­добных систем необходимо параллельно анализиро­вать оба указанных компонента. В большом слова­ре знания определяются как «результат, полученный познанием», или, более подробно, «система суждений с принципиальной и единой организацией, основанная на объективной закономерности». Исследователи, при­дающие особую важность научным подходам, предпо­читают первое определение, а исследователи, для которых главное - это обязательная гарантия последо­вательности суждений (люди с логическим мышле­нием), предпочитают второе. В то же время с точки зрения искусственного интеллекта и инженерии знаний определение знаний необходимо увязать с логическим выводом. Другими словами, можно дать еще одно определение: «зна­ния - это формализованная информация, на которую ссылаются или используют в процессе логического вывода». Процесс решения задач с помощью простейшей модели показан на Рис. 1.4.1. В данном случае зна­ния - это информация, на которую ссылаются, когда делают различные заключения на основании имею­щихся данных с помощью логических выводов. Если эта работа выполняется программным путем, то зна­ния - это обязательно информация, представленная в определенной форме.

Подпись: Заключительная

гипотеза

Подпись: Данные, основанные

на фактах

Подпись: Промежуточная 

гипотеза

вывод вывод

 

Знания Знания

Рис. 1.4.1. Связь между знаниями и выводом при решении ин­теллектуальной проблемы

1.5.  Технология получения знаний

Как отмечалось выше, экспертная система включает базу знаний, решающий блок, подсистему общения, подсистему объяснений и подсистему накопления знаний.

Через подсистему общения с экспертной систе­мой связаны: конечный пользователь - непро­граммирующий специалист; эксперт - квалифи­цированный специалист, опыт и знания которого намного превосходят знания и опыт рядового конечного пользователя; инженер по знаниям, владеющий языками описания знаний.

С экспертной системой на этапе наполнения знаний работают инженер по знаниям и эксперт, а на этапе эксплуатации и использования — конеч­ный пользователь. Знания, которыми должна быть заполнена экспертная система, включают знания первого и второго рода.

Знания первого рода - это общезначимые факты, явления, закономерности - истины, приз­нанные в данной предметной области и зафик­сированные в книгах, статьях, справочниках и т. п. Знания второго рода - эмпирические правила, ин­туитивные соображения и факты, которые, как правило, не публикуются, но которые дают воз­можность опытному эксперту эффективно при­нимать решения даже в условиях неполных и противоречивых исходных данных.

Знания в экспертной системе фиксируются в базе знаний, в которой условно можно выделить интенсиональную и экстенсиональную (собственно базу данных) части.

Важное значение имеет подсистема объясне­ния - основное отличие экспертных систем от дру­гих диалоговых человеко-машинных систем. Под­система объяснения отвечает на вопросы, «как» и «почему» конечный пользователь с помощью экспертной системы принял то или иное решение. В сложных системах подсистема объяснения мо­жет быть преобразована в хорошо известную в исследовании операций систему анализа решений. Помимо подсистем объяснения, в эксперт­ных системах начали развиваться специальные подсистемы доверия.

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

Успех в реализации экспертных систем тем больше, чем выше удельный вес знаний первого рода по отношению к знаниям второго рода. Если преобладают знания второго рода, значит, имеют место такие трудности:

·  эксперт не может четко сформулировать пра­вила принятия решений;

·  эксперт просто не желает передавать кому-либо свои знания, методы и правила, сохраняя за собой статус уникального специалиста;

·  в исследуемой предметной области трудно най­ти эксперта.

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

Экспертные системы нельзя разрабатывать по обычной схеме «заказчик-исполнитель». Дело в том, что знания находятся именно у заказчика и заказчик, с помощью инженеров по знаниям, будет заполнять конкретными знаниями так называемые пустые экспертные системы, которые разрабаты­ваются исполнителями.

Помимо этого, в распоряжении исполнителя должна быть инструментальная экспертная систе­ма или экспертная система для проектирования пустых и отчасти проблемно-ориентированных экспертных систем. Инструментальные экспертные системы представляют собой средства конструи­рования пустых и проблемно-ориентированных систем.

2. ПРОГРАММА VP-EXPERT,

ЕЕ ОСНОВНЫЕ ХАРАКТЕРИСТИКИ И ВОЗМОЖНОСТИ

VP-EXPERT - интеллектуальная программа, способная делать логические выводы на основании знаний в конкретной предметной области и обеспечивающая решение специфических задач. VP-EXPERT и другие экспертные системы призваны заменить специалиста в конкретной предметной области, т. е. решать задачи в отсутствии эксперта. VP-EXPERT обладает такими функциями как:

·  Механизм предоставления знания в конкретной области и управление ими;

·  Механизм, который на основании имеющихся в базе знаний, способен делать логические выводы;

·  Интерфейс для правильной передачи ответов пользователю и т. д.

·  Для решения различных задач, получения выводов необходимо иметь определенные знания (базу знаний) в этой области. Знаниями принято называть хранимую в ЭВМ информацию, формулируемую в соответствии с определенными структурными правилами, которую ЭВМ может использовать при решении проблем по таким алгоритмам как логические выводы. В VP-EXPERT реализована модель представления знаний основанная на использовании правил (продукционная модель).

Экспертная система VP-EXPERT состоит из множества несвязанных между собой правил и множества фактов, накапливающихся по мере функционирования экспертной системы. База знаний состоит из конечного набора правил (П) и набора фактов (А):

П={P1,……..Pm }

A={a1,……....am}

Таких, что условия применимости любого из правил Pi состоит в одновременном наличии фактов ai1……..ain, следовательно любая продукция Pi из П имеет вид:

Pi: a1Ùa2Ù…..Ùais ® am

где Ù — знак конъюнкции; аm - новый факт, выведенный из фактов-условий аi1, .... аis.

К области применения экспертных систем, разработанных на VP-EXPERT, можно отнести: медицинскую диагностику, оказание помощи пользователям в различных предметных областях, проверку и анализ П/О, анализ риска в политике, экономике и т. д.

2.1. Постановка задачи

Развитие человечества бесспорно связано с развитием прогресса. Думаю, не многие смогут оспорить то, что только за XX-й век человечество совершило огромный скачек в своем развитии. Однако такое гипер-развитие несет не только благо, но и новые проблемы, которые человечество, зачастую, не успевает решать, пытаясь угнаться за прогрессом. Например, к таким проблемам можно отнести, относительно не давно, возникшую проблему экологии. Но темой данного курсового является проблема, которая сопутствует человечеству уже с давних времен, и с развитием прогресса только усугубилась. Это проблема пьянства – алкоголизма.

На данный момент алкоголизм является одной из важнейших проблем человечества. К сожалению, приверженность человека к алкоголю может быть вызвана множеством факторов, например, таких как: глобальные проблемы демографии и экономики, а так же проблемы на уровне быта самого человека (личные проблемы, семейные проблемы) и т. д. В связи с этим алкоголизму подвержены все слои общества, он не различает человека ни по половому, ни по национальному, ни по расовому признаку.

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

И именно по этому, целью данного курсового проекта являлась разработка экспертной системы, направленной на непосредственный контакт с самим человеком, а также способной дать оценку его действиям.

2.2. Инструментальные средства VP-EXPERT

EXECUTE - этот оператор начинает режим консультации немедленно после команды Consult.

BKCOLOR = <номер цвета> - настраивает фон экрана на цвет, соответствующий номеру (0-7).

0 - черный

6- коричневый

12 - светло-красный

1 - синий

7- белый

13 - розовый

2 - зеленый

8 - серый

14 - желтый

3 - циан

9 - голубой

15 - ярко-белый

4 - красный

10 - салатный

5 - бордовый

11- светлый циан

COLOR = <номер цвета> - настраивает цвет текста согласно его номеру (0-15)

ACTIONS - <предложение1>

<предложение2>

и т. д.

Ключевое слово ACTIONS определяет начало блока ACTIONS, который упорядочивает список операции для VP-EXPERT Consultation (режим консультации) в режиме листинга одного или большего числа предложений, которые будут выполняться по порядку, в течение консультации.

Когда все предложения будут выполнены, консультация будет закончена. В добавление к выполнению предложений блок ACTIONS, может присваивать значения переменным.

FIND <переменная> - предложение FIND, выполняясь, направляет механизм вывода на поиск значения указанной переменной. Если предложение FIND встречается многократно в блоке ACTIONS или в правиле, то VP-EXPERT пытается найти значение для каждой из переменных в той последовательности, в которой они появляются. Механизм вывода передвигается к следующему предложению FIND только после нахождения значения для переменной, указанной в предыдущем предложении FIND или после того, как значение переменной не может быть найдено.

DISPLAY “<текст>~” – выводит на экран данный текстовый блок информации для пользователя (до 1000 символов). Текст должен быть внутри двойных кавычек, а если требуется вывести значение переменной, то в тексте пишется имя этой переменной в фигурных скобках {}.

Имя переменной внутри фигурных скобок со значком # выводится на экран со своим фактором доверия (смотри ниже).

display"{#z}~";

На экран будет выведено: детские_раздвижные CNF 70

RULE <название правила> - ключевое слово RULE, и следующий за ним пробел и метка правила длиной до 20 символов, идентифицирует начало базы знаний. Правило состоит из имени правила (ключевое слово RULE плюс пробел плюс метка правила); посылка (ключевое слово IF и следующие за ним одно или нескольких условий разделенные операторами AND или OR); заключение (ключевое слово THEN и следующие за ним одно или более заключений) и точка с запятой, означающая конец правила.

RULE 1

IF <переменная1>=<значение1>

THEN <переменная2>=<значени2>;

Если значение переменной состоит из нескольких слов, то слова должны быть соединены значком «_». Например: детские_раздвижные CNF 70. Иногда перед точкой с запятой вводится фактор доверия - CNF - это числа используемые для подсчета истинного значения порога доверия. Например, в нижеследующем примере фактор доверия указывает, что заключение получается с 70% доверием.

RULE 7

if a=меньше_9 and

time1= or

time2= or

time3= or

time4=

then z=детские_раздвижные CNF 70

z1=Exo1*Raider*PlasmaX

z2=Orlando*NewOrleanVel

z3=MicroBladeXT

z4=ZElite

z5=2800*3100*2400

z6=2750*3200

z7=3400

z8=3500;

Если фактор доверия не указан, то ему присваивается значение 100%.

ASK <переменная1>: “<текст>” - когда для выведения умозаключения машина не может найти правила, чтобы присвоить значение переменной, она ищет оператор ASK, в котором упоминается эта переменная. Если он найден, оператор ASK выводит на экран текст находящегося в нем сообщения. Затем машина ожидает ответа пользователя. Значение поступившее от пользователя, присваивается данной переменной.

Иногда после оператора ASK следует оператор:

CHOICES <переменная1>:<значение1>,<значение2> - этот оператор выводит на экран меню выбора из <значение1> и <значение2>. Если оператора CHOISES не введено, то значение переменной нужно вводить вручную.

Интерфейс VP-EXPERT выглядит следующим образом:

Help – вызывает системный помощник (help).

Induce – создает рабочую базу знаний из таблицы ввода, содержащейся в тексте, базе данных или в файле рабочего листа.

Edit – вызывает редактор (Editor) и загружает текущую базу знаний.

Consult – загружает текущую базу знаний в память и воспроизводит на экране консультационное меню (Consult menu).

Tree – воспроизводит на экране меню выбора для просмотра результатов прохождения консультации.

Filename – помогает вам заменить текущую активную базу знаний.

Path – назначает путь к директории, используемой для доступа к файлам базы знаний.

Quit – выход из программы.

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

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

3. РЕАЛИЗАЦИЯ

Запуск режима консультации: программа писалась в HEX-редакторе. Рабочий файл сохранялся с расширением. kbs. Запускаем VP-EXPERT выбираем Edit и находим в списке файл. Консультация начинается с нажатия кнопки Consult.

Пример работы в режиме консультации

Вывод результата в виде таблицы

Текст программы экспертной системы «Роликовые коньки – помощь Чайнику»

runtime;

execute;

bkcolor=1;

actions

color=15

display "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Роликовые коньки - помощь чайнику

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

~"

find z

find z1

find z2

find z3

find z4

display"

-

Совет: {#z}

--

Ваши Ролики

--

фирма| модель

--

K2: {z1}

Roces: {z2}

RollerBlade: {z3}

Salomon: {z4}

--

--

фирма| стоимость (в рублях)

--

K2: {z5}

Roces: {z6}

RollerBlade: {z7}

Salomon: {z8}

--~";

RULE 0

if time<=2399

then z=подкопите_денег CNF 100

z1=нет

z2=нет

z3=нет

z4=нет

z5=нет

z6=нет

z7=нет

z8=нет;

RULE 1

if time>=2400 and

time<=3999

then time1=;

RULE 2

if time>=4000 and

time<=5999

then time2=;

RULE 3

if time>=6000 and

time<=7999

then time3=;

RULE 4

if time>=8000 and

time<=9999

then time4=;

RULE 6

if time>=10000

then z=можно_дешевле CNF 100

z1=нет

z2=нет

z3=нет

z4=нет

z5=нет

z6=нет

z7=нет

z8=нет;

RULE 7

if a=меньше_9 and

time1= or

time2= or

time3= or

time4=

then z=детские_раздвижные CNF 70

z1=Exo1*Raider*PlasmaX

z2=Orlando*NewOrleanVel

z3=MicroBladeXT

z4=ZElite

z5=2800*3100*2400

z6=2750*3200

z7=3400

z8=3500;

RULE 8

if a=больше_10

then a1=bolshe10;

RULE 9

if b=менее_75

then b1=menee75;

RULE 10

if b=более_76

then b2=bolee76;

RULE 11

if c=нет

then c1=newmen;

RULE 12

if c=катаюсь_иногда

then c2=luzer;

RULE 13

if c=большой_опыт

then c3=profi;

RULE 14

if d=не_быстрой_спокойной

then d1=recreation;

RULE 15

if d=спортивной_быстрой

then d2=fitness;

RULE 16

if d=агрессивной

then d3=aggressive;

RULE 17

if d=слалом

then d4=race;

RULE 18

if e=около_2_часов

then e1=okolo2;

RULE 19

if e=более_3_часов

then e2=bolee3;

RULE 20

if f=побыстрее

then f1=fast;

RULE 21

if f=хорошая_фиксация

then f2=goodfix;

RULE 22

if g=мужской

then g1=men;

RULE 23

if g=женский

then g2=women;

RULE 24

if time1= and

a1=bolshe10 and

b1=menee75 or

b2=bolee76 and

c1=newmen and

d1=recreation and

e1=okolo2 and

f1=fast and

g1=men

then z=подшипники_ABEC-3 CNF 70

z1=CadenceLS

z2=нет

z3=Fusion*SpiritBlade

z4=нет

z5=3900

z6=нет

z7=3900*2500

z8=нет;

RULE 25

if time1= and

a1=bolshe10 and

b1=menee75 or

b2=bolee76 and

c1=newmen and

d1=recreation and

e1=okolo2 and

f1=fast and

g2=women

then z=подшипники_ABEC-3 CNF 70

z1=CadenceLS

z2=нет

z3=SpiritBladeW

z4=нет

z5=3900

z6=нет

z7=2500

z8=нет;

RULE 26

if time2= or

time3= or

time4= and

a1=bolshe10 and

b1=menee75 or

b2=bolee76 and

c1=newmen or

c2=luzer or

c3=profi and

d1=recreation or

d2=fitness or

d3=aggressive or

d4=race and

e1=okolo2 or

e2=bolee3 and

f1=fast and

g1=men or

g2=women

then z=хорошая_фиксация CNF 100

z1=нет

z2=нет

z3=нет

z4=нет

z5=нет

z6=нет

z7=нет

z8=нет;

RULE 27

if time1= and

a1=bolshe10 and

b1=menee75 and

c1=newmen and

d1=recreation and

e1=okolo2 and

f2=goodfix and

g1=men

then z=подшипники_ABEC-3 CNF 70

z1=Exo3*Echo2*CadenceLS

z2=NewYorkCity

z3=GeoBlade1.3*Evo

z4=нет

z5=3700*3100*3900

z6=3850

z7=3600*3700

z8=нет;

RULE 28

if time1= and

a1=bolshe10 and

b1=menee75 and

c1=newmen and

d1=recreation and

e1=okolo2 and

f2=goodfix and

g2=women

then z=подшипники_ABEC-3 CNF 70

z1=Exo3*Echo2*CadenceLS

z2=нет

z3=GeoBlade1.3*Evo

z4=нет

z5=3700*3100*3900

z6=нет

z7=3600*3700

z8=нет;

RULE 29

if time1= and

a1=bolshe10 and

b1=menee75 and

c1=newmen and

d1=recreation or

d2=fitness and

e1=okolo2 or

e2=bolee3 and

f2=goodfix and

g1=men

then z=подшипники_ABEC-3-5 CNF 70

z1=CadenceLS*ImpulseLS

z2=NewYorkCity

z3=Evo

z4=нет

z5=3900*3050

z6=3850

z7=3700

z8=нет;

RULE 30

if time1= and

a1=bolshe10 and

b1=menee75 and

c1=newmen and

d1=recreation or

d2=fitness and

e1=okolo2 or

e2=bolee3 and

f2=goodfix and

g2=women

then z=подшипники_ABEC-3-5 CNF 70

z1=CadenceLS*ImpulseLS

z2=нет

z3=Evo

z4=нет

z5=3900*3050

z6=нет

z7=3700

z8=нет;

RULE 31

if time1= and

a1=bolshe10 and

b1=menee75 and

c2=luzer and

d1=recreation or

d2=fitness and

e1=okolo2 or

e2=bolee3 and

f2=goodfix and

g1=men

then z=подшипники_ABEC-3-5 CNF 70

z1=Ascent*CadenceLS

z2=NewYorkCity

z3=Evo

z4=нет

z5=3700*3900

z6=3850

z7=3700

z8=нет;

RULE 32

if time1= and

a1=bolshe10 and

b1=menee75 and

c2=luzer and

d1=recreation or

d2=fitness and

e1=okolo2 or

e2=bolee3 and

f2=goodfix and

g2=women

then z=подшипники_ABEC-3-5 CNF 70

z1=Ascent*CadenceLS

z2=нет

z3=Evo

z4=нет

z5=3700*3900

z6=нет

z7=3700

z8=нет;

RULE 33

if time1= and

a1=bolshe10 and

b2=bolee76 and

c1=newmen or

c2=luzer and

d1=recreation or

d2=fitness and

e1=okolo2 or

e2=bolee3 and

f2=goodfix and

g1=men

then z=подшипники_ABEC-3-5 CNF 70

z1=CadenceLS

z2=NewYorkCity

z3=Evo

z4=нет

z5=3900

z6=3850

z7=3700

z8=нет;

RULE 34

if time1= and

a1=bolshe10 and

b2=bolee76 and

c1=newmen or

c2=luzer and

d1=recreation or

d2=fitness and

e1=okolo2 or

e2=bolee3 and

f2=goodfix and

g2=women

then z=подшипники_ABEC-3-5 CNF 70

z1=CadenceLS

z2=нет

z3=Evo

z4=нет

z5=3900

z6=нет

z7=3700

z8=нет;

RULE 35

if time1= and

a1=bolshe10 and

b1=menee75 or

b2=bolee76 and

c1=newmen or

c2=luzer or

c3=profi and

d2=recreation or

d3=fitness or

d3=aggressive or

d4=race and

e1=okolo2 or

e2=bolee3 and

f2=goodfix and

g1=men or

g2=women

then z=подкопите_денег CNF 100

z1=нет

z2=нет

z3=нет

z4=нет

z5=нет

z6=нет

z7=нет

z8=нет;

RULE 36

if time2= and

a1=bolshe10 and

b1=menee75 and

c1=newmen or

c2=luzer and

d1=recreation or

d2=fitness and

e1=okolo2 or

e2=bolee3 and

f2=goodfix and

g1=men or

g2=women

then z=подшипники_ABEC-3 CNF 70

z1=нет

z2=Munich*Dublin

z3=Core05*Geoblade1.5

z4=нет

z5=нет

z6=4200*4800

z7=5100*4400

z8=нет;

RULE 37

if time2= and

a1=bolshe10 and

b1=menee75 and

c3=profi and

d2=fitness and

e1=okolo2 or

e2=bolee3 and

f2=goodfix and

g1=men

then z=подшипники_ABEC-5-7 CNF 70

z1=SpireXP*Power6

z2=нет

z3=Evo08

z4=OptimaAlu*Deflector2

z5=5200*5950

z6=нет

z7=4950

z8=5650*5900;

RULE 38

if time2= and

a1=bolshe10 and

b1=menee75 and

c3=profi and

d2=fitness and

e1=okolo2 or

e2=bolee3 and

f2=goodfix and

g2=women

then z=подшипники_ABEC-5-7 CNF 70

z1=SpireXP*Power6

z2=нет

z3=нет

z4=OptimaAlu*Deflector2

z5=5200*5950

z6=нет

z7=нет

z8=5650*5900;

RULE 39

if time2= and

a1=bolshe10 and

b1=menee75 or

b2=bolee76 and

c3=profi and

d3=aggressive and

e1=okolo2 or

e2=bolee3 and

f2=goodfix and

g1=men or

g2=women

then z=подшипники_ABEC-5-7 CNF 70

z1=FattyProUFS*FattyUFS

z2=M12*Five-K

z3=нет

z4=нет

z5=5400*4800

z6=4900*5950

z7=нет

z8=нет;

RULE 40

if time2= and

a1=bolshe10 and

b2=bolee76 and

c1=newmen or

c2=luzer and

d1=recreation or

d2=fitness and

e1=okolo2 or

e2=bolee3 and

f2=goodfix and

g1=men or

g2=women

then z=подшипники_ABEC-3 CNF 70

z1=нет

z2=Munich*Dublin

z3=Core05*EvoSL

z4=нет

z5=нет

z6=4200*4800

z7=5100*4600

z8=нет;

RULE 41

if time2= and

a1=bolshe10 and

b2=bolee76 and

c3=profi and

d2=fitness and

e1=okolo2 or

e2=bolee3 and

f2=goodfix and

g1=men or

g2=women

then z=подшипники_ABEC-5-7 CNF 70

z1=SpireXP*Power6

z2=нет

z3=нет

z4=OptimaAlu*Deflector2

z5=5200*5950

z6=нет

z7=нет

z8=5650*5900;

RULE 42

if time2= and

a1=bolshe10 and

b1=menee75 or

b2=bolee76 and

c1=newmen or

c2=luzer and

d3=aggressive and

e1=okolo2 or

e2=bolee3 and

f2=goodfix and

g1=men or

g2=women

then z=мало_опыта CNF 70

z1=нет

z2=нет

z3=нет

z4=нет

z5=нет

z6=нет

z7=нет

z8=нет;

RULE 43

if time2= and

a1=bolshe10 and

b1=menee75 or

b2=bolee76 and

c1=newmen or

c2=luzer or

c3=profi and

d4=race and

e1=okolo2 or

e2=bolee3 and

f2=goodfix and

g1=men or

g2=women

then z=подкопите_денег CNF 70

z1=нет

z2=нет

z3=нет

z4=нет

z5=нет

z6=нет

z7=нет

z8=нет;

RULE 44

if time2= and

a1=bolshe10 and

b1=menee75 or

b2=bolee76 and

c3=profi and

d1=recreation and

e1=okolo2 or

e2=bolee3 and

f2=goodfix and

g1=men or

g2=women

then z=катайтесь_быстрее CNF 70

z1=нет

z2=нет

z3=нет

z4=нет

z5=нет

z6=нет

z7=нет

z8=нет;

RULE 45

if time3= and

a1=bolshe10 and

b1=menee75 and

c2=luzer or

c3=profi and

d2=fitness and

e1=okolo2 or

e2=bolee3 and

f2=goodfix and

g1=men or

g2=women

then z=подшипники_ABEC-5-7 CNF 70

z1=нет

z2=нет

z3=Aero9

z4=ThunderMax*Motion8Ti

z5=нет

z6=нет

z7=6300

z8=7200*7700;

RULE 46

if time3= and

a1=bolshe10 and

b1=menee75 or

b2=bolee76 and

c2=luzer or

c3=profi and

d3=aggressive and

e1=okolo2 or

e2=bolee3 and

f2=goodfix and

g1=men or

g2=women

then z=подшипники_ABEC-5-7 CNF 70

z1=PatLennen*Transfer

z2=нет

z3=TrsAlpha*TrsAccess

z4=StProUFS*St80

z5=7100*7200

z6=нет

z7=6600*6900

z8=7100*6200;

RULE 47

if time3= and

a1=bolshe10 and

b1=menee75 or

b2=bolee76 and

c2=luzer or

c3=profi and

d2=fitness or

d4=race and

e1=okolo2 or

e2=bolee3 and

f2=goodfix and

g1=men or

g2=women

then z=подшипники_ABEC-7 CNF 70

z1=нет

z2=нет

z3=нет

z4=ThunderMax

z5=нет

z6=нет

z7=нет

z8=7200;

RULE 48

if time3= or

time4= and

a1=bolshe10 and

b1=menee75 or

b2=bolee76 and

c1=newmen and

d1=recreation or

d2=fitness or

d3=aggressive or

d4=race and

e1=okolo2 or

e2=bolee3 and

f2=goodfix and

g1=men or

g2=women

then z=необходим_опыт CNF 70

z1=нет

z2=нет

z3=нет

z4=нет

z5=нет

z6=нет

z7=нет

z8=нет;

RULE 49

if time3= or

time4= and

a1=bolshe10 and

b1=menee75 or

b2=bolee76 and

c2=luzer or

c3=profi and

d1=recreation and

e1=okolo2 or

e2=bolee3 and

f2=goodfix and

g1=men or

g2=women

then z=катайтесь_быстрее CNF 70

z1=нет

z2=нет

z3=нет

z4=нет

z5=нет

z6=нет

z7=нет

z8=нет;

RULE 50

if time4= and

a1=bolshe10 and

b1=menee75 or

b2=bolee76 and

c2=luzer or

c3=profi and

d2=fitness or

d4=race and

e1=okolo2 or

e2=bolee3 and

f2=goodfix and

g1=men or

g2=women

then z=подшипники_ABEC-7 CNF 70

z1=нет

z2=нет

z3=нет

z4=DeeMax3*Pilot9Ti

z5=нет

z6=нет

z7=нет

z8=9400*9100;

RULE 51

if time4= and

a1=bolshe10 and

b1=menee75 or

b2=bolee76 and

c2=luzer or

c3=profi and

d3=aggressive and

e1=okolo2 or

e2=bolee3 and

f2=goodfix and

g1=men or

g2=women

then z=подшипники_ABEC-5-7 CNF 70

z1=нет

z2=нет

z3=нет

z4=RThompson*VinMinton

z5=нет

z6=нет

z7=нет

z8=9400*8900;

ask time: "Сколько вы планируете потратить денег (в рублях)?";

ask a: "Укажите свой возраст?";

choices a: меньше_9,больше_10;

ask b: "Какой у вас вес (в кг)?";

choices b: менее_75,более_76;

ask c: "Имеете ли вы опыт катания на роликах?";

choices c: нет, катаюсь_иногда, большой_опыт;

ask d: "Для какой езды вы покупаете ролики?";

choices d: не_быстрой_спокойной, спортивной_быстрой, агрессивной, слалом;

ask e: "Сколько времени вы планируете проводить на роликах?";

choices e: около_2_часов, более_3_часов;

ask f: "Что для вас предпочтительнее при одевании роликов?";

choices f: побыстрее, хорошая_фиксация;

ask g: "К какому полу вы относитесь?";

choices g: мужской, женский;

ЗАКЛЮЧЕНИЕ

Результатом выполнения данного курсового проекта стала разработка Экспертной системы «Роликовые коньки – помощь Чайнику».

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