Лекции.Орг


Поиск:




Категории:

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

 

 

 

 


Процедура present




Процедура present! Answer)

приведенная в листинге 16.5, отображает окончательный результат сеанса эксперт­ной консультации и вырабатывает объяснение последовательности рассуждений. Па­раметр Answer включает и ответ на вопрос пользователя, и дерево доказательства, показывающее, как было получено это заключение. Процедура present вначале вы­дает заключение. А если пользователь затем пожелает увидеть, как было сформиро­вано это заключение, введя вопрос "how", то в некоторой приемлемой форме отобра­жается дерево доказательства, которое представляет собой объяснение последова­тельности рассуждений. Форма такого объяснения показана на примерах в разделах 16.2.1 и 16.2.4.

Листинг 16.5. Командный интерпретатор экспертной системы: процедура, которая отображает окончательный результат и выводит объяснение последовательности рассуждений

% Процедура, которая отображает результат экспертной консультации и выводит % объяснение последовательности рассуждений

present; Answer):-

nl, show-conclusion (Answer),
nl, write('Would you like to see how? '),
getreply(Reply),
(Reply = yes,!,
show(Answer) % Показать дерево решения

true). showconclusion (Answerl and Answer2):-!, showconclusion; Answerl), write ('and '), showconclusion (Answer2).

376 Часть II. Применение языка Prolog в области искусственного интеллекта


showconclusion(Conclusion was Found):-write(Conclusion).

% Процедура show отображает полное дерево решения


!.

show(Solution):-

show(Solution, 0),

show(Answerl and Answer2, H):-!, show(Answerl, H), tab(H), write(and), nl, show(Answer2, H).

show(Answer was Found, H):-tab(H), writeans(Answer), nl, tab(H), write ('was '), showl(Found, H).

showl(Derived from Answer, H):-!, write(Derived), write ('from'),

nl, HI is H + 4, show(Answer, HI).


% Установить отступ, равный 0 % Установить отступ, равный Н

% Отступ на Н

% Показать экспертное заключение

% Показать подтверждение

% Вывести имя правила

% Показать исходное высказывание


showl(Found, _):- % Переменная Found может принимать значения 'told' % (указано пользователем) или 'found as fact' (найдено как факт) write(Found), nl.


writeans(Goal is true):-!, write(Goal).

writeans(Answer):-write(Answer).


%

%

%


Исключить в выводе слова 'is true' (является истинным) Это - отрицательный ответ


16.3.5. Управляющая процедура верхнего уровня

Для обеспечения удобного доступа к командному интерпретатору экспертной сис­темы из среды интерпретатора Prolog требуется управляющая процедура, образцом которой может служить процедура expert (листинг 16.6). После вызова на выполне­ние процедура expert координирует работу трех основных модулей командного ин­терпретатора (см. листинги 16.3-16.5), например, следующим образом:?- expert.

Question, please: % Приглашение пользователю к вводу вопроса X isa animal and goliath isa X. % Вопрос пользователя Is it true: goliath has hair?





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 301 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Начинать всегда стоит с того, что сеет сомнения. © Борис Стругацкий
==> читать все изречения...

2359 - | 2118 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.014 с.