Курсовая работа: Разработка оболочки экспертной системы
ЗФn3
***********
Аналогично формируем ТПВ. В поле ТПВ рекомендация помещаем для каждого значения вывода соответствующую текстовую интерпретацию, для чего запрашиваем ее у эксперта. В качестве значений вывода можно использовать ссылки на любые объекты, поясняющие текущий вывод.
Последним действием формирования БЗ будет процедура сохранения МПУ, МПВ, СПУ, СПВ, ТПУ и ТПВ в виде файла. В данном проекте база знаний сохраняется в один файл с расширением *.bzn.
Таблица 2.4 – Структура таблицы переменных вывода
ТПВ.вывод |
ТПВ.значение |
ТПВ.рекомендация |
В1 |
ЗВ 1 |
*********** |
ЗВ 3 |
*********** | |
В2 |
ЗВ 2 |
*********** |
3.2.2 Алгоритм вывода
Работа процедуры вывода начинается с загрузки содержимого файлов МПУ, МПВ, СПУ, СПВ, ТПУ и ТПВ в переменные соответствующего типа. Для СПВ и СПУ добавляем второй столбец, куда будет запоминаться получаемые в процессе вывода переменные вывода и условия. Для СПВ добавляем еще один, третий столбец, куда будет записываться номер по порядку полученных выводов. Кроме этого вводим следующие дополнительные переменные:
нап – номер анализируемого правила;
нпу – номер переменной условия в СПУ
ну – номер рассматриваемого условия в анализируемом правиле;
пу – индекс первого условия текущего правила;
кпу – число условий в анализируемом правиле;
кпв - число полученных выводов;
ЗУ(м) – массив значений условий из правила ;
ЗУТ – значение проверки текущего условия в правиле;
ЗУП(м) – массив значений условий введенных пользователем;
ОПВ() – очередь переменных вывода, где будут запоминаться переменные вывода «сработанных» правил для организации цепочки рассуждения. Вывод заключается в поиске в базе знаний правил, которые зависят от текущей «рабочей» переменной вывода. Если находим совпадение «рабочей» переменной и переменной вывода, то активизируется процедура проверки правила. Если правило сработало, т.е. введенные пользователем ответы и хранящиеся в БЗ значения совпали, полученная переменная вывода запоминается в очереди переменных вывода для того, чтобы стать следующей «рабочей» переменной вывода. После того, как поиск правил с текущей «рабочей» переменной вывода завершается, она удаляется из очереди. Вывод завершается после того, как очередь переменных вывода опустеет.
Алгоритм вывода можно представить в следующей последовательности:
1. В ОПВ() помещается начальная переменная вывода и количество переменных вывода в очереди устанавливаем как кпв=1.