Лабораторная работа №1 Создание простейшей экспертной системы с использованием прямой цепочки рассуждений Общие сведения
Последовательность рассуждений, когда отправной точкой рассуждений служит уже возникшая ситуация, а затем делаются выводы, называется прямой цепочкой рассуждений.
Имеет место некоторая стартовая ситуация (перегрев двигателя), требуется предсказать ее последствия. После того, как зафиксировано определенное состояние, в работу включаются относящиеся к нему правила:
Например,
1. ЕСЛИ двигатель перегрелся, ТО мотор заглохнет
2. ЕСЛИ мотор заглохнет, ТО это приведет к позднему возвращению домой
Отправной точкой рассуждений служит уже возникшая ситуация (перегрев двигателя). Затем "срабатывает" условная часть ЕСЛИ 1-го правила. Поскольку возникшая ситуация удовлетворяет содержащемуся в ней условию, согласно констатирующей части этого правиля (части ТО) выводится новая ситуация (мотор заглохнет). Цепочка рассуждений продолжается. После этого "сработает" условная часть ЕСЛИ 2-го правила, что приведет к новой ситуации (позднему возвращению домой). Описанная последовательность рассуждений называется прямой цепочкой потому, что констатирующая часть правила (ТО) выполняется только в том случае, если удовлетворяется условная часть правила (ЕСЛИ).
Что же должна делать программа ? Она должна запросить у пользователя данные о возникшей ситуации (например, о перегреве двигателя) и имя базы знаний (например, "Диагностика неисправностей в автомобиле"), просмотреть информацию в базе знаний и затем, проведя прямую цепочку рассуждений, сделать вывод.
Например, база знаний на основе 7 правил может иметь следующую структуру:
1. ЕСЛИ объект1=значение1, ТО объект2=значение2
3. ЕСЛИ объект2=значение2, ТО объект3=значение3
4. ЕСЛИ объект2=значение2, ТО объект8=значение8
5. ЕСЛИ объект8=значение8, ТО объект15=значение15
6. ЕСЛИ объект2=значение2, ТО объект10=значение10
7. ЕСЛИ объект10=значение10, ТО объект11=значение11
Общий алгоритм:
1. Система содержит описание ряда ситуаций.
2. Для каждой ситуации система ищет в БЗ правила, в условной части которых содержится соответствующее условие.
3. В соответствие с констатирующей частью (ТО) каждое правило может генерировать новые ситуации, которые добавляются к уже существующим.
4. Система обрабатывает каждую вновь сгенерированную ситуацию. При наличии хотя бы одной такой ситуации выполняются действия, начиная с пункта 2. Рассуждения заканчиваются, когда больше нет необработанных ситуаций.
В общем случае может быть несколько одновременно срабатывающих правил, т.е. правил, которые содержат в части ЕСЛИ одинаковую пару ОБЪЕКТ=ЗНАЧЕНИЕ. В примере, приведенном выше, такие пары выделены жирным шрифтом. Таким образом, правило, "сработавшее" на шаг ранее,
приводит к "срабатыванию" сразу нескольких правил, количество которых заранее неизвестно.
Для обработки такой множественной генерации новых ситуаций предлагается использовать структуру данных, называемую очередью (FIFO). Принцип работы очереди – "первым пришел - первого обслужили".
------------
объект1 <- начало очереди
------------
объект2 <- конец очереди
------------
------------
------------
поступление объектов в очередь
Кроме того, для хранения информации о текущем правиле можно создать структуру данных (указатель правила), в которой хранить номер правила и номер условия в правиле, поскольку условная часть правила в общем случае может содержать несколько условий.
Детальный алгоритм работы системы с прямой цепочкой рассуждений состоит из следующих шагов:
1. Определить исходной состояние.
2. Занести объект в очередь, а его значение - в список объектов.
3. Просмотреть список объектов и найти тот объект, имя которого стоит в начале очереди. Если объект найден, записать в указатель правила номер правила и число 1 (номер условия в части ТО). Если объектов не найден, перейти к шагу 6.
4. Присвоить значения непроинициализированным объектам условной части найденного правила (если такие есть). Имена объектов содержатся в списке объектов. Проверить все условия правила и в случае их истинности обратиться к части ТО правила.
5. Присвоить значение объекту, входящему в часть ТО правила, и поместить его в конец очереди объектов.
6. Удалить объект, стоящий в начале очереди объектов, если он больше не встречается в условной части какого-либо правила.
7. Закончить процесс рассуждений, как только опустеет очередь объектов. Если же в очереди еще есть объекты, то вернуться к шагу 3.
Задание
1. Сформировать собственную базу правил (не менее 10 правил) в произвольной предметной области на основе собственных знаний или знаний эксперта.
2. Правила должны формироваться в следующем виде:
ЕСЛИ Объект1=Значение1, ТО Объект2=Значение2
3. Допускается использование логической связки "И".
Например, ЕСЛИ объект1=значение1 И объект2=значение2, ТО объект3=значение3
4. База правил должна быть отделена от программного модуля и представлять собой отдельный текстовый файл.
5. База правил может дополняться новыми правилами, которые записываются в конец текстового файла в требуемом формате.
6. Написать программный модуль, реализующий вышеприведенный алгоритм на одном из распространенных языков программирования (Basic, Pascal, C).
7. В программе должны быть предусмотрены средства для отображения имен объектов и их разрешенных значений в процессе интерактивного диалога с пользователем.
8. Задать стартовую ситуацию, соответствующую части ЕСЛИ какого-либо правила, в виде пары "объект=значение".
Тестовый пример базы правил в экспертной системе по оказанию финансовых консультаций:
1. ЕСЛИ ставка=растет, ТО цены=падают
2. ЕСЛИ ставка=падает, ТО цены=растут
3. ЕСЛИ курс$=падает, ТО ставка=растет
4. ЕСЛИ курс$=растет, ТО ставка=падает
5. ЕСЛИ ставка_федерального_резерва=падает И федеральный_резерв=добавить, ТО ставка=падает
Предположим, имеется следующая стартовая ситуация: курс$ = падает
Экспертная система на основе данной стартовой ситуации и своей базы правил должна оказать сделать определенный вывод и отобразить его на экране.
Содержание отчета
Описание работы с программой. Листинг программы с комментариями. Распечатка базы правил. Пример работы системы для заданной стартовой ситуации.
Контрольные вопросы
1. Что такое экспертная система ? (ЭС)
2. Каковы ограничения ЭС по сравнению с человеком-экспертом ?
3. Каковы преимущества ЭС по сравнению с человеком-экспертом ?
4. Каковы стратегии управления выводом ?
5. Каковы области применения ЭС ?
6. Каковы критерии использования ЭС ?
