Текст программы работы №1 (LABO1.PRO).
/* Пример экспертной системы */
/* базирующейся на правилах */
/* Эксперт по породам собак */
domains
database
dpositive(symbol, symbol)
dnegative(symbol, symbol)
predicates
do_expert_job
do_consulting
ask(symbol, symbol)
dog_is(symbol)
it_is(symbol)
positive(symbol, symbol)
negative(symbol, symbol)
remember(symbol, symbol, symbol)
clear_facts
goal
do_expert_job.
Clauses
/* Система пользовательского интерфейса */
do_expert_job:-
makewindow(1,7,7, “Экспертная система”,1,16,22,58),
nl,write(“***************************************************”),
nl,nl,
write(“ Добро пожаловать в ЖИВОТНУЮ экспертную систему!;)”),
nl,nl,write(“ Эта система легко определит название животного по “),
nl,write(“ его признакам. “),
nl,write(“ Отвечайте на вопросы: ‘Y’(Да) или ‘N’(Нет). “),
nl,write(“**************************************************”),
nl,nl,
do_consulting,
nl,nl,
clear_facts,
write(“Нажмите пробел.”),nl,
readchar(_),
removewindow,
exit.
do_consulting:-dog_is(X),!,nl,
write(“Похоже, что это - “, X, “.”).
do_consulting:-nl, write(“Извините, но я ничем не могу вам помочь.”),
nl,
write(“И вообще, где вы видели такое животное?..”).
ask(X,Y):- write(“ Вопрос: “,X,” “,Y,”? “),
readln(Reply),
remember(X,Y,Reply).
/* Механизм вывода */
positive(X,Y):-dpositive(X,Y),!.
positive(X,Y):-not(negative(X,Y)),!, ask(X,Y).
negative(X,Y):-dnegative(X,Y),!.
remember(X,Y,y):-asserta(dpositive(X,Y)).
remember(X,Y,n):-asserta(dnegative(X,Y)), fail.
clear_facts:-retract(dpositive(_,_)), fail.
clear_facts:-retract(dnegative(_,_)), fail.
/* Продукционные правила */
dog_is(“Английский бульдог”):-
it_is(“короткая шерсть”),
positive(has,”pocт меньше 55 см”),
positive(has,”низкопосаженный хвост”),
positive(has,”хороший характер”),!.
dog_is(“Гончая”):-
it_is(“короткая шерсть”),
positive(has,”pocт меньше 55 см”),
positive(has,”длинные уши”),
positive(has,”хороший характер”),!.
dog_is (“Дог”):-
it_is(“короткая шерсть”),
positive(has,”низкопосаженный хвост”),
positive(has,”хороший характер”),
positive(has,”вес больше 5 кг”),!.
dog_is(“Американская гончая”):-
it_is(“короткая шерсть”),
positive(has,”рост меньше 75 см”),
positive(has,”длинные уши”),
positive(has, “хороший характер”),!.
dog_is(“Koккep-спаниель”):-
it_is(“длинная шерсть”),
positive(has,”рост меньше 55 см”),
positive(has,”низкопосаженный хвост”),
positive (has,”длинные уши”),
positive (has,”хороший характер”),!.
dog_is(“Ирландский сеттер”):-
it_is(“длинная шерсть”),
positive(has,”рост меньше 75 см”),
positive(has,”низкопосаженный хвост”),
positive(has,”длинные уши”),!.
dog_is (“Kолли”):-
it_is(“длинная шерсть”),
positive(has,”рост меньше 75 см”),
positive(has,”низкопосаженный хвост”),
positive(has,”хороший характер”),!.
dog_is(“Сенбернар”):-
it_is(“длинная шерсть”),
positive(has,”низкопосаженный хвост”),
positive(has,”хороший характер”),
positive(has,”вес больше 5 кг”),!.
it_is(“короткая шерсть”):-
positive(has,”короткая шерсть”),!.
it_is(“длинная шерсть”):-
positive (has,”длинная шерсть”),!.
/* конец программы */
Не нашли, что искали? Воспользуйтесь поиском:
|