МегаПредмет

ПОЗНАВАТЕЛЬНОЕ

Сила воли ведет к действию, а позитивные действия формируют позитивное отношение


Как определить диапазон голоса - ваш вокал


Игровые автоматы с быстрым выводом


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


Целительная привычка


Как самому избавиться от обидчивости


Противоречивые взгляды на качества, присущие мужчинам


Тренинг уверенности в себе


Вкуснейший "Салат из свеклы с чесноком"


Натюрморт и его изобразительные возможности


Применение, как принимать мумие? Мумие для волос, лица, при переломах, при кровотечении и т.д.


Как научиться брать на себя ответственность


Зачем нужны границы в отношениях с детьми?


Световозвращающие элементы на детской одежде


Как победить свой возраст? Восемь уникальных способов, которые помогут достичь долголетия


Как слышать голос Бога


Классификация ожирения по ИМТ (ВОЗ)


Глава 3. Завет мужчины с женщиной


Оси и плоскости тела человека


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


Отёска стен и прирубка косяков Отёска стен и прирубка косяков - Когда на доме не достаёт окон и дверей, красивое высокое крыльцо ещё только в воображении, приходится подниматься с улицы в дом по трапу.


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

Задание к лабораторной работе





Лабораторная работа 3

 

Построение экспертной системы на Прологе

 

 

Цель работы: получить практические навыки в представлении знаний продукционными правилами и в реализации экспертной системы с типовой структурой на языке логического программирования Пролог.

 

 

Контрольные вопросы

 

1. Чем отличается программирование на Прологе от программирования на традиционных процедурных языках?

2. Какова структура программы на языке Пролог?

3. Как записываются продукционные знания на языке Пролог?

4. Какова типовая структура экспертной системы с продукционной базой знаний?

5. Как можно описать на Прологе базу фактов экспертной системы?

6. В чём состоит идея стратегии обратного логического вывода?

 

 

Методические указания

Наиболее распространенной моделью представления знаний считается система продукций. Системы, использующие знания в виде продукций (правил), называются продукционными. Продукционная система почти не имеет процедурных компонентов, которые представляют основу фон-неймановской вычислительной системы, и практически полностью управляются данными, т.е. система является дескриптивной. Такая система включает три основных составляющих: базу правил, рабочую память (базу фактов) и механизм логического вывода [1].

База правил содержит набор продукционных правил, имеющих форму IF-THEN (ЕСЛИ-ТО). Каждое правило складывается из двух частей. Первая из них IF - антецедент, или посылка правил, состоит из элементарных предложений, соединенных связками (операциями) И, ИЛИ и т. д. Вторая часть THEN, называемая консеквентом, или заключением, состоит из одного или нескольких предложений, которые образуют выдаваемое правилом решение.

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

При составлении правил необходимо выполнять следующие рекомендации:

- использовать минимально достаточное множество условий при определении продукционного правила;

- избегать противоречащих продукционных правил;

- конструировать правила, опираясь на структуру присущую предметной области.

 

Первым этапом формирования правил является перевод дерева решений из вопросов и ответов в утверждение фактов. Пусть, например, фрагмент дерева решения для выбора породы собаки имеет вид, показанный на рис.1:


 

Рис.1. Дерево решений для выбора породы собак

 

 

Это дерево решений преобразуется вследующее дерево фактов:

 

 


Рис.2. Дерево утверждение фактов

 

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

Утверждение фактов состоит из следующих частей:

 

 

Название Пример
Атрибут Шерсть
Значение Короткая
Предикат Является

 



 

Атрибут - это ключевое слово или фраза, выбранная для представления факта, который мы пытаемся определить. Значение - описание, назначенное атрибуту. Предикат - элемент, устанавливающий отношение между атрибутом и его значением. Это дополнительные средства продукционной системы, которые применяются для представления конкретных данных. В некоторых продукционных системах каждое высказывание состоит из триплета: "объект-атрибут-решение" [2]. В этом случае антецеденты и консеквенты состоят из троек (например, база знаний экспертной системы MYCIN).

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

Рассмотренные рекомендации и дерево на рис.2 позволяют записать следующее правило на Прологе:

 

dog("Гончая"):-

priznak("шерсть короткая"),

priznak("рост меньше 50 см."),

priznak("уши длинные"),

priznak("характер хороший"),!.

 

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

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

 


 

Рис. 3. Диаграмма потоков данных

 

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


Рис. 4. Функциональная схема ЭС с иерархией локальных целей

 

Теперь можно приступить к программированию прототипа ЭС на Прологе. В начале необходимо сделать декларации базы данных (фактов) в разделе database . Она будет хранить ответы пользователя на вопросы системы. Ответы могут быть утвердительными или отрицательными. Затем в разделе predicatesследует объявить предикаты для простейшего взаимодействия с пользователем и выполнения вывода результата (реализации механизма логического вывода).

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

 

Пример ЭС на Прологе

 

/* Программа: Эксперт по породам собак */

/* Файл: Prim1.pro */

/* Назначение: Демонстрация работы продукционной ЭС */

/* Замечание: Это система для идентификации породы */

/* собак. Система использует множество */

/* продукционных правил для вывода */

/* решения */

 

domains

database

xpositive (symbol)

xnegative (symbol)

predicates

do_expert

consulting

in_out (symbol)

dog (symbol)

priznak (symbol)

negative (symbol)

remember (symbol,symbol)

clear_facts

goal

do_expert.

 

clauses

/* БЛОК ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА */

do_expert :-

makewindow (1,112,6,"ЭКСПЕРТНАЯ СИСТЕМА",1,12,22,58),

nl,write (" * * * * * * * * * * * * * * * * * * * * * * *"),

nl,write (" * ВЫБОР ПОРОДЫ СОБАК *"),

nl,write (" * *"),

nl,write (" * В Н И М А Н И Е ! *"),

nl,write (" * *"),

nl,write (" * Пpи ответе на вопpосы набиpайте *"),

nl,write (" * 'yes' или 'no'. *"),

nl,write (" * * * * * * * * * * * * * * * * * * * * ** * *"),

nl,nl,

consulting,

write ("Нажмите любую клавишу ."),nl,

readchar (_),

removewindow,

exit.

consulting :-

dog (X),!,nl,

write (" Собака имеет поpоду : ",X,"."),nl,

clear_facts.

consulting :-

nl,write (" Пpостите, я не могу Вам помочь ! "),

clear_facts.

in_out (Y) :-

write (" Вопpос :- Собака имеет ",Y," ?"),

readln (Reply),

remember (Y,Reply).

 

 

/* МЕХАНИЗМ ВЫВОДА */

priznak (Y) :-

xpositive (Y),!.

priznak (Y) :-

not (negative (Y)),

in_out (Y).

negative (Y) :-

xnegative (Y).

remember (Y,yes) :-

asserta (xpositive (Y)).

remember (Y,no) :-

asserta (xnegative (Y)),

fail.

clear_facts :-

retract (xnegative (_)),

fail.

clear_facts :-

retract (xpositive (_)),

fail.

 

/* ПРОДУКЦИОННЫЕ ПРАВИЛА */

 

dog ("Английский бульдог") :-

priznak ("шеpсть коpоткую"),

priznak ("pост меньше 50 см"),

priznak ("хвост низкопосаженный"),

priznak ("хаpактеp хоpоший"),!.

dog ("Гончая") :-

priznak ("шеpсть коpоткую"),

priznak ("pост меньше 50 см"),

priznak ("уши длинные"),

priznak ("хаpактеp хоpоший"),!.

 

/* и т. д. */

 

/* КОНЕЦ ПРОГРАММЫ */

 

Задание к лабораторной работе

 

Разработать продукционную экспертную систему на Прологе для решения трудно формализуемой задачи, поставленной в лабораторной работе №1. База знаний экспертной системы должна включать правила, полученные в лабораторных работах №1 и №2 .

 

Прядок выполнения работы

 

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

- правила вида "IF - THEN";

- понятие "предикат".

2. Построить базу продукционных правил ЭС, объединив правила из лабораторных работ №1 и №2.

3. Разработать диаграмму потоков данных для проектируемой интеллектуальной системы (экспертной системы).

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

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

6. Выполнить тестирование и отладку экспертной системы, в установленной на компьютере среде Prolog.

 

 

Содержание отчёта

 

1. Название и цель работы.

2. Диаграмма потоков данных ЭС.

3. Структурная схема ЭС.

4. Программа на Прологе, реализующая продукционную базу знаний.

5. Результаты тестирования программ.

 

 

Литература

 

1. Представление и использование знаний: Пер.с япон./Под.ред. Х.Уэно, М.Исидзука.-М.:Мир,1989.-220 с.

2. Таунсенд К., Фохт Д. Проектирование и программная реализация экспертных систем на ПЭВМ.-М.:Финансы и статистика, 1980. -320 с.





©2015 www.megapredmet.ru Все права принадлежат авторам размещенных материалов.