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

Таблица 2.1 – Структура массивов условий и выводов

МПУ(n*3, 3)

МПВ(n,3)

Ф11 ЗФ11 1

Ф12 ЗФ12 2

Ф13 ЗФ13 3

Ф21 ЗФ21 3

????????

????????

Ф31 ЗФ31 0

Ф32 ЗФ32 4

Ф33 ЗФ33 1

……………

Фn1 ЗФn1 *

Фn2 ЗФn2 *

Фn3 ЗФn3 *

В1 ЗВ1 1

В2 ЗВ2 2

В3 ЗВ3 1

……….

Вn ЗВn *  

Таблица 2.1 – Структура списков условий и выводов

СПУ(ку)

СПВ(кв)

Ф11

Ф12

Ф13

Ф32

……………

Фn1

Фn2

Фn3

В1

В2

……….

Вn  

Вначале на основе анализа МПВ формируем список переменных вывода СПВ. Анализ заключается в следующем алгоритме:

1. Первую переменную вывода В1 помещаем без обработки как СПВ (1) и устанавливаем текущее количество выводов кв=1 и в третий столбец МПВ записываем: МПВ(1,3)=1, т.е. по содержимому этого столбца обеспечиваем связь МПВ и СПВ.

2. От i =2 до N: (для всех МПВ( i, 1) проверяем была ли эта переменная уже записана в состав СПВ):

От р=1 до кв: если МПВ(i, 1) = СПВ (р), то МПВ( i, 3) =р; иначе кв=кв+1; СПВ(кв)= МПВ( i, 1); МПВ(i, 3)=кв.

Далее аналогично анализируем МПУ для формирования списка переменных условия СПУ.

1. ку=1; СПУ(1)=МПУ(1);

2. От i =1 до N*М: (для всех МПУ( i, 1):

От р=1 до кв: если МПУ(i, 1) = СПВ (р), то МПУ(i, 3)=0; i= i + 1 и перейти к п.2. (т.е. проверяем была ли эта переменная уже записана в состав СПВ как переменная вывода и в этом случае в третий столбец МПУ записываем 0 и эту переменную в перечень переменных условия не включаем).

От у=1 до ку: если МПУ(i, 1) = СПУ (у), то МПУ(i, 3) =у; иначе ку=ку+1; СПУ(ку)= МПУ( i, 1); МПУ(у, 3)=ку.

Теперь формируем ТПУ (таблица переменных условия) и ТПВ (таблица переменных вывода). Структура таблиц приведена в таблицах 2.3, 2.4.

Для i=1,ку

ТПУ.условие (i)=СПУ(i), j=1

для кк=1, n*3

если МПУ(1,3)=i, то ТПУ.значение (i, j )=МПУ(кк,2); j= j +1.

Для определения ТПУ.вопрос формируем форму и в ней запрашиваем у эксперта о том, какой вопрос следует задавать пользователю для выяснения переменной условия ТПУ.условие(i).

Таблица 2.3 – Структура таблицы переменных условия

ТПУ.условие

ТПУ.значение

ТПУ.вопрос

Ф11

ЗФ11

***********

ЗФ33

Ф12

ЗФ12

***********

Ф13

ЗФ13

***********

ЗФ21

Ф32

ЗФ32

***********

……………

 

***********

Фn1

ЗФn1

***********

Фn2

ЗФn2

***********

Фn3

ЗФn3

***********

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

Последним действием формирования БЗ будет процедура сохранения МПУ, МПВ, СПУ, СПВ, ТПУ и ТПВ в виде файла. В данном проекте база знаний сохраняется в один файл с расширением *.bzn.

Таблица 2.4 – Структура таблицы переменных вывода

ТПВ.вывод

ТПВ.значение

ТПВ.рекомендация

В1

ЗВ 1

***********

ЗВ 3

***********

В2

ЗВ 2

***********

3.2.2 Алгоритм вывода

Работа процедуры вывода начинается с загрузки содержимого файлов МПУ, МПВ, СПУ, СПВ, ТПУ и ТПВ в переменные соответствующего типа. Для СПВ и СПУ добавляем второй столбец, куда будет запоминаться получаемые в процессе вывода переменные вывода и условия. Для СПВ добавляем еще один, третий столбец, куда будет записываться номер по порядку полученных выводов. Кроме этого вводим следующие дополнительные переменные:

нап – номер анализируемого правила;

нпу – номер переменной условия в СПУ

ну – номер рассматриваемого условия в анализируемом правиле;

пу – индекс первого условия текущего правила;

кпу – число условий в анализируемом правиле;

кпв - число полученных выводов;

ЗУ(м) – массив значений условий из правила ;

ЗУТ – значение проверки текущего условия в правиле;

ЗУП(м) – массив значений условий введенных пользователем;

ОПВ() – очередь переменных вывода, где будут запоминаться переменные вывода «сработанных» правил для организации цепочки рассуждения. Вывод заключается в поиске в базе знаний правил, которые зависят от текущей «рабочей» переменной вывода. Если находим совпадение «рабочей» переменной и переменной вывода, то активизируется процедура проверки правила. Если правило сработало, т.е. введенные пользователем ответы и хранящиеся в БЗ значения совпали, полученная переменная вывода запоминается в очереди переменных вывода для того, чтобы стать следующей «рабочей» переменной вывода. После того, как поиск правил с текущей «рабочей» переменной вывода завершается, она удаляется из очереди. Вывод завершается после того, как очередь переменных вывода опустеет.

Алгоритм вывода можно представить в следующей последовательности:

1. В ОПВ() помещается начальная переменная вывода и количество переменных вывода в очереди устанавливаем как кпв=1.

2. Пока не пуста ОПВ() выполняем п. 3,4.

3. От п=1 до M*N /организуем просмотр всех правил на совпадение с «рабочей» переменной вывода/

{если МПУ(п,1) = ОПВ(1) то нап=округление до большего целого (п/м); ну=1;пу= (нап-1)*м; /определяем номер правила, в котором присутствует«рабочая» переменная вывода/

кпу=0

от у=1 до м /проверяем текущее правило/

Страница:  1  2  3  4  5  6  7 


Другие рефераты на тему «Программирование, компьютеры и кибернетика»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы