русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Цикл формирования цепи рассуждений в прямом направлении


Дата добавления: 2014-11-28; просмотров: 620; Нарушение авторских прав


Основным средством разработки функциональной модели являются правила. В общем виде правила имеют следующую конструкцию:

IF посылка THEN заключение.

Каждое правило имеет имя. Для создания правил используется редактор правил (окноKTools,пиктограмма Rule).Окно редактора имеет два основных поля If и Then, где пользователь набирает тексты посылки и заключения соответственно. Как посылки, так и заключения представляют собой выражения, состоящие из имен классов, объектов, их слотов и значений слотов.

В приводимом примере правило, имеющее имя Empty, проверяет значение слота NumberOfp в любом подклассе или объекте, принадлежащем классу People на отрицательность или равенство нулю. В случае если это условие выполняется, то у пользователя запрашивается значение этого слота (функция AskValue()). В правилах можно, но необязательно использовать переменные, называемые в ЭО КАРРАPatterns (образцы переменной). В поле Patterns слева от вертикальной черты пишут имя переменной, которое будет фигурировать в правиле, а справа - имя класса, объектом которого она является. Правило, описанное таким образом, работает для любого объекта класса. В результате использования этого приема можно одно и то же правило применить ко многим объектам.

В систему КАРРА встроены механизмы прямого и обратного выводов. Для их инициирования предусмотрены две соответствующие функции манипулирования знаниями ForwardChain() и BackwardChain(), основным аргументом которых является имя цели вывода. В принципе, инструмент целей (Goal) разрабатывался специально для построения цепочки рассуждений в обратном на­правлении, но можно с помощью этого механизма прерывать и рассуждения, проводимые в прямом направлении (как только Цель достигнута, вывод заканчивается). Цели описываются в редакторецелейGoal (окно KTools) на KAL. Они должны иметь имена. Кроме цели, среди аргументов этих функций может быть перечень активизируемых правил. Если в записи функции опускается обязательный аргумент, например, имя цели в функциях, инициирующих вывод, то на его месте пишется NULL.



Пример.


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

BackwardChain (Sovet).

При реализации как прямого, так и обратного выводов формируются два списка. Первый из них – это список правил (Rule List), намеченных к анализу на последующих шагах логического вывода. При прямом выводе правило включается в список, если его посылка содержит пару объект:слот из заключения, полученного на предыдущем шаге. При обратном выводе наоборот, а именно, правило включается в список, если его заключение содержит пару объект:слот из анализируемой посылки. Построение списка правил порождает второй список. Действительно, рассмотрим прямой вывод. В общем случае каждое правило, включаемое в первый список (Rule List), имеет в своей посылке еще и другие условия, кроме того, из-за которого оно было включено в этот список. Истинность всех этих дополнительных условий должна быть проверена прежде, чем это правило будет применено в процессе рас­суждения. Для этого соответствующие этим условиям пары объект:слот собираются в специальном списке Agenda и затем последовательно проверяются на истинность. Очевидно, что в момент запуска прямого вывода этот список не должен быть пуст. Поэтому перед запуском в список заносится одна или более пар объект:слот, которых достаточно, по мнению разработчика, для начала вывода. Занесение производится с помощью команды Assert (), аргументом которой является имя заносимого слота. Заметим, что в ЭО Kappa принято считать, что все функции, инициирующие какие-либо действия, принимают значения TRUE и FALSE (истина, ложно). В отношении функций инициирующих логический вывод такой подход адекватен, т.к. при этом доказывается истинность или ложность некоторого утверждения (цели).

Пример. Пусть значение слота Lgoth:NumberofP равно 1000.

=>Assert (Lgoth:NumberOfP);

TRUE

=>ForwardChain(NULL,Empty);

FALSE

Цель не определена, поэтому на месте ее имени в функции ForwardChain написано NULL . Результат вывода (состоящего из одного правила) ложен, т.к. значение слота Lgotn:NumberofP равно 1000.

Установкаприоритета правил позволяет регулировать порядок рассуждений. Ка­ждаястратегия регулирования использует приоритет правила для выявления относительной важности правил, соответствующих заданному пункту Списка подлежащих рассмотрению пар объект: слот (Agenda), прежде чем применять эти правила(Rule List) в процессе рас­суждения. По умолчанию приоритет равен нулю, и правила в списке организованы слу­чайным образом. Можно установить приоритет в диапазоне [-32000; 32000], чем больше число, тем выше приоритет.

 



<== предыдущая лекция | следующая лекция ==>
О.С. Амосов, Н.В. Колесов, | Формирование цепи рассуждений в обратном направлении


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.521 сек.