Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






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





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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

кпу=0

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

пока МПУ(пу+у,1)<> «»; ЗУ(у)= МПУ(пу+у,2); кпу=кпу+1;

нпу=МПУ(пу+у,3) /считываем номер текущей переменной условия из СПУ /

если СПУ (нпу,2) = «», то вывести пользователю вопрос ТПУ.вопрос (нпу) с вариантами ответовизТПУ.значение(нпу);

записать в СПУ(нпу,2) выбранный пользователем ответ;

ЗУП(у) = СПУ(нпу,2);

Проверяем правило:

ЗП= Истина; от у=1 до кпу; если ЗУ(у) = ЗУП(у), то ЗУТ=Истина; ЗП=ЗП and ЗУТ;

если ЗП=Истина, то СПВ([МПВ(нап,3),2] = МПВ(нап,2); СПВ([МПВ(нап,3),3] = кпв; кпв=кпв+1; ОПВ(кпв)= МПВ(нап,1);}

Если достигнут конец МПУ, удаляем из ОПВ() ОПВ(1) и устанавливаем ОПВ(1) следующую по порядку в очереди переменную.

Выводим на экран последнюю выведенную СПВ. Если пользователь запрашивает объяснения полученного вывода, выводим все сработанные СПУ в обратном порядке.







Date: 2015-07-27; view: 388; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.005 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию