Создание экспертных систем


Лабораторная работа №6.
Создание экспертных систем

domains
database
xpositive(symbol,symbol)
xnegative(symbol,symbol)
predicates

begin_analis
result
ask(symbol,symbol)
diagnoz(symbol)
it_is(symbol)
positive(symbol,symbol)
negative(symbol,symbol)
remember(symbol,symbol,symbol)
clear_db

clauses
% User interface
begin_analis :-
nl,write(«***********************************************************************************************************»),
nl,write(«Вас приветствует система диагностики неисправностей принтеров, сканеров, копиров.»),
nl,write(«Отвечайте на вопросы системы о симптомах неисправности y-да, n-нет:»),
nl,write(«***********************************************************************************************************»),
nl,nl,
result,
write(«Нажмите пробел.»),
nl,
exit.
result :-
diagnoz(X),!,nl,
write(«Неисправность: «,X,».»),nl,
clear_db.
result :-
nl,
write(«Диагноз не установлен.»),
clear_db.
ask(X,Y) :-
write(X, » «, Y,» ?»),
readln(Reply),
remember(X,Y,Reply).

% Output mechanism
positive(X,Y) :-
xpositive(X,Y),!.
positive(X,Y) :-
not(negative(X,Y)),!,
ask(X,Y).

negative(X,Y) :-
xnegative(X,Y),!.

remember(X,Y,y) :-
asserta(xpositive(X,Y)). % Добавление положительного ответа
remember(X,Y,n) :-
asserta(xnegative(X,Y)), % Добавление отрицательного ответа
fail.

clear_db :-
retract(xpositive(_,_)), % Удаление положительных ответов
fail.
clear_db :-
retract(xnegative(_,_)), % Удаление отрицательных ответов
fail.
%————————————————————————————————————
diagnoz(«Mеханический износа подвижных частей головки») :-
it_is(«Матричный принтер»),
positive(«наблюдается»,»неисправность печатающей головки «),
/*positive(«наблюдается»,»вращение барабана»),
positive(«наблюдается»,»отсутствие вращения барабана в другую сторону»),*/!.
diagnoz(«Нарушение целостности шлейфа печатающей головки») :-
it_is(«Матричный принтер»),
positive(«у вас»,»отсутствует печать»),
positive(«у вас»,»не коретно напечатаны символы»),
positive(«у вас»,»поврежден шлейф»),!.
diagnoz(«Неисправности тракта прохождения бумаги») :-
it_is(«Матричный принтер»),
positive(«вы»,»интенсивно его и спользуете»),
positive(«у вас»,»не проходит бумага»),
positive(«вы»,»используете подходящую бумагу»),
positive(«вы»,»уверены что что туда не попал мусор»),!.
diagnoz(«Сгорел блок питания») :-
it_is(«Матричный принтер»),
positive(«наблюдается»,»неприятный запах из корпуса»),
positive(«наблюдается»,»появление дыма»),!.
diagnoz(«Блок питания неисправен») :-
it_is(«Матричный принтер»),
positive(«наблюдается»,»отсутствие запахов горелого»),
positive(«наблюдается»,»подключение сетевого питания»),!.
%————————————————————————————————————
diagnoz(«Неисправности печатающих головок») :-
it_is(«Струйный принтер»),
positive(«были»,»длительные перерывы в эксплуатации»),
positive(«были «,»попытки неквалифицированной заправки и очистки»),!.
diagnoz(«Нарушение целостности шлейфа печатающей головки») :-
it_is(«Струйный принтер»),
positive(«у вас»,»отсутствует печать»),
positive(«у вас»,»не коретно напечатаны символы»),
positive(«у вас»,»поврежден шлейф»),!.
diagnoz(«Неисправности тракта прохождения бумаги») :-
it_is(«Струйный принтер»),
positive(«вы»,»интенсивно его и спользуете»),
positive(«у вас»,»не проходит бумага»),
positive(«вы»,»используете подходящую бумагу»),
positive(«вы»,»уверены что что туда не попал мусор»),!.
diagnoz(«Неисправности узла очистки головок») :-
it_is(«Струйный принтер»),
positive(«наблюдается»,»неприятный запах из корпуса»),
positive(«наблюдается»,»появление дыма»),!.
diagnoz(«Блок питания неисправен») :-
it_is(«Струйный принтер»),
positive(«наблюдается»,»частые прочистки головок»),
positive(«наблюдается»,»интенсивная эксплуатация со сменой картриджей»),!.
diagnoz(«Сгорел блок питания») :-
it_is(«Струйный принтер»),
positive(«наблюдается»,»неприятный запах из корпуса»),
positive(«наблюдается»,»появление дыма»),!.
diagnoz(«Блок питания неисправен») :-
it_is(«Струйный принтер»),
positive(«наблюдается»,»отсутствие запахов горелого»),
positive(«наблюдается»,»подключение сетевого питания»),!.
%————————————————————————————————————
diagnoz(«Неисправности узла закрепления изображения») :-
it_is(«Лазерный принтер»),
positive(«наблюдается»,»перенагрев электронного блока управления»),
positive(«наблюдается»,»повреждение термопленки «),!.
diagnoz(«Повреждение картриджа (чаще всего — фотобарабана) или лазерной головки») :-
it_is(«Лазерный принтер»),
positive(«наблюдается»,»плохой переноса изображения «),!.
diagnoz(«Неисправности тракта прохождения бумаги») :-
it_is(«Лазерный принтер»),
positive(«вы»,»интенсивно его и спользуете»),
positive(«вы»,»используете подходящую бумагу»),
positive(«вы»,»уверены что туда попал мусор»),!.
diagnoz(«Сгорел блок питания») :-
it_is(«Лазерный принтер»),
positive(«наблюдается»,»неприятный запах из корпуса»),
positive(«наблюдается»,»появление дыма»),!.
diagnoz(«Блок питания неисправен») :-
it_is(«Лазерный принтер»),
positive(«наблюдается»,»отсутствие запахов горелого»),
positive(«наблюдается»,»подключение сетевого питания»),!.
%————————————————————————————————————
diagnoz(«Выход из строя инвертора лампы подсветки») :-
it_is(«Сканер»),
positive(«наблюдается»,»характерная бегущая полоска света при сканировании»),
positive(«наблюдается»,»темный прямоугольник как результат сканирования»),!.
diagnoz(«Неисправность механики сканирующей головки») :-
it_is(«Сканер»),
positive(«наблюдается»,»головка скрипит»),
positive(«наблюдается»,»нет результата»),
positive(«наблюдается»,»плохой результат канирования»),!.
diagnoz(«Сгорел блок питания») :-
it_is(«Сканер»),
positive(«наблюдается»,»неприятный запах из корпуса»),
positive(«наблюдается»,»появление дыма»),!.
diagnoz(«Блок питания неисправен») :-
it_is(«Сканер»),
positive(«наблюдается»,»отсутствие запахов горелого»),
positive(«наблюдается»,»подключение сетевого питания»),!.
%————————————————————————————————————
it_is(«Сканер») :-
positive(«У вас «,»сканер»),!.

it_is(«Матричный принтер») :-
positive(«У вас»,»матричный принтер»),!.

it_is(«Струйный принтер») :-
positive(«У вас»,»струйный принтер»),!.

it_is(«Лазерный принтер») :-
positive(«У вас»,»лазерный принтер»),!.

goal

begin_analis.

Загрузка...