Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические указания по выполнению лабораторных 1-4 / Методические указания к лаб 1 и 2.doc
Скачиваний:
43
Добавлен:
20.06.2014
Размер:
99.84 Кб
Скачать

Лабораторная работа №2 Создание простейшей экспертной системы с использованием обратной цепочки рассуждений Общие сведения

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

Например,

1. ЕСЛИ автомобиль=не_заводится И аккумулятор=сел, ТО ток_в_стартер=не_подается

2. ЕСЛИ ток_в_стартер=не_подается, ТО автомобиль=не_тронется_с_места

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

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

Алгоритм работы системы с обратной цепочкой рассуждений:

1. Определить объект вывода.

2. В части ТО правил искать первое вхождение этого объекта. Если объект найден, в стек поместить номер правила и установить номер условия = 1. Если объект не найден, сообщить пользователю, что ответ найти невозможно.

3. Присвоить значения всем объектам, входящим в часть ЕСЛИ из данного правила.

4. Если в списке объектов указано, что какому-либо объекту не присвоено значение и он не встречается в частях ТО других правил, запросить его значение у пользователя.

5. Если какой-либе объект в части ЕСЛИ входит в часть ТО других правил, поместить в стек номер этого правила и вернуться к шагу 3.

6. Если из правила нельзя определить значение объекта удалить соответствующий ему элемент из стека и в частях ТО продолжить поиск этого объекта.

7. Если такое правило найдено (занести его в стек), перейти к шагу 3.

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

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

В общем случае может быть несколько одновременно срабатывающих правил, т.е. правил, которые содержат в части ЕСЛИ одинаковую пару ОБЪЕКТ=ЗНАЧЕНИЕ. Для срабатывания правила на данном шаге необходимо появление условий, которые могут возникнуть от "срабатывания" сразу нескольких правил на предыдущем шаге, количество которых заранее неизвестно.

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

 поступление объектов в стек

------------

------------

объект2 <- указатель стека (sp)

------------

объект1

------------

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

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

1. ЕСЛИ открытие=да И звание=да, ТО должность=научный_сотрудник

2. ЕСЛИ звание=да, ТО квалификация=да

3. ЕСЛИ квалификация=да И балл<3.5 И стаж>2, ТО должность=инженер_по_эксплуатации

4. ЕСЛИ звание=нет, ТО должность=нет

5. ЕСЛИ квалификация=да И балл<3.5 И стаж<2, ТО должность=нет

6. ЕСЛИ квалификация=да И балл>3.5, ТО должность=инженер_конструктор

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

Задание

1. Сформировать собственную базу правил (не менее 10 правил) в произвольной предметной области на основе собственных знаний или знаний эксперта.

2. Правила должны формироваться в следующем виде:

ЕСЛИ объект1=значение1, ТО объект2=значение2

3. Допускается использование логической связки "И"

Например, ЕСЛИ объект1=значение1 И объект2=значение2, ТО объект3=значение3

4. База правил должна быть отделена от программного модуля и представлять собой отдельный текстовый файл.

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

6. Написать программный модуль, реализующий вышеприведенный алгоритм на одном из распространенных языков программирования (Basic, Pascal, C).

7. В программе должны быть предусмотрены средства для отображения имен объектов и их разрешенных для значений в процессе интерактивного диалога с пользователем.

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

Описание работы программы. Листинг программы с комментариями. Распечатка базы правил. Пример работы системы.

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

1. Что такое символьная и числовая обработка ?

2. Каковы отличительные особенности ЭС ?

3. Что такое продукционная система, база правил, рабочая память ?

4. Как работает механизм вывода (интерпретатор правил) ?

5. Что такое прямой и обратный вывод ?

6. Как представляются знания в виде правил ?

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

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

2. Левин Р. и др. Практическое введение в технологию искусственного интелекта и экспертных систем с иллюстрациями на Бейсике. - М.: Финансы и статистика, 1991.

3. Нейлор К. Как построить свою экспертную систему. - М.: Энергоатомиздат, 1991.

4. Сойер Б., Фостер Д. Программирование экспертных систем на Паскале. - М.: Финансы и статистика, 1990.

5. Марселлус Д. Программирование экспертных систем на Турбо Прологе. - М.: Финансы и статистика, 1994.