Реализация экспертной системы на языкеРефераты >> Программирование и компьютеры >> Реализация экспертной системы на языке
как1(Н, Правило : если Дерево ):-как (Н, Дерево). /*правило4 */
как1(Н, Дерево1 и Дерево2 то _):- как ( Н, Дерево1); как ( Н, Дерево2). /*правило5 */
отобрази_правило(Правило : если Н1 то Н):— nl, write (Правило), write (':'), nl, write ('если'), write (Н1), nl, write ('то'), write (Н)
Вызов предиката как(Н.Дерево) будем выполнять из предиката объясни(Дерево), после вызова предиката найти(Н, [Н], Дерево):
/* ЗС для решения задач диагностики*/ инициализация:- retractall(сообщено(_,_)). диагностика:- инициализация, Факт : причина(Н), найти(Н, [Н], Дерево), nl, nl, write ( 'решение:'), write (Н), объясни(Дерево), возврат.
Здесь предикат объясни(Дерево) определяется так:
объясни(Дерево):- nl, nl, write ( 'объяснить ? [цель/п]:'), read(Н), (Н\=no, І, как(Н, Дерево), объясни(Дерево)),!.
Предикат возврат обеспечивает доказательство альтернативных гипотез:
возврат:- nl, nl, write (' следующее решение ?:'), read(no).
Процесс диагностики неисправностей начинается с вызова основного предиката диагностика. Ниже приведен возможный диалог с системой:
?-диагностика.
лампа(светится)? нет.
плита(холодная)? да.
лампа(не_светится)? да.
решение: выключатель(не_включен)
объяснить?[цель/п]: выключатель(не_включен).
выключатель(не_включен) было доказано с помощью
правило 2: если тока(нет)
то выключатель(не_включен)
объяснить?[цель/п]: тока(нет).
тока(нет) было доказано с помощью
правило 4: если плита(холодная) й лампа(не_светится) то тока(нет).
объяснить?[цель/п]: плита(холодная).
плита(холодная) б ыло сообщено
объяснить?[цель/п]: нет.
решение: напряжения(нет)
объяснить?[цель/п]: нет.
плита(горячая)? почему.
пытаюсь доказать лампа(не_исправна)
с помощью правила: правило 5
плита(горячая)? нет.
нет.
Здесь ответы пользователя набраны курсивом.
Рассмотренная ЭС может работать. только с такими утверждениями, которые либо истинны, либо ложны. Во многих случаях требуется учитывать неопределенность фактов и правил. Для работы в условиях неопределенности с правилами и фактами можно связать соответствующие коэффициенты уверенности. Например,
Правило1: если лампа(светится) и плита(холодная) то нагреватель(неисправен) cf 0.8.
Здесь cf – инфиксный оператор, посредством которого задастся коэффициент уверенности. Оператор сf определяется с помощью директивы:
:- ор(940, xfx, cf).
2. Представление знаний фреймами
В ЭС, основанных на правилах, знания сосредоточены исключительно в базе правил, а база данных представляет собой пассивное множество фактов. Фреймовая модель представления знаний обеспечивает лучшую структурированность фактов, более экономное использование памяти, а также активизацию фактов. Характерными отличиями фреймовой модели представления знаний являются: наследование по иерархии фреймов, наличие присоединенных процедур, наличие значений по умолчанию и др.
Рассмотрим простейшие возможности представления экспертных знаний совокупностью фреймов. При этом фрейм будем представлять в виде объекта с множеством атрибутов (слотов):
объект
--атрибут1 : значение1
--атрибут2 : значение2
--…
--атрибут_п : змачение_п.
Если рассматривать знаки "--" и ":" как операторы языка Пролог (ор(910, хfх,:), ор(910, хfу, --)), то такому описанию объекта будет соответствовать структура, изображенная на рисунке 4. Данная структура представляет терм языка Пролог (n = 3):
объект - - ((атр1 : з1) - - ((атр2 : з2) - - (атр3 : з3))).