Лекция: Приложение 3

 

% Эксперт по породам собак. Продукционная система, базирующаяся на правилах

domains

database

xpositive(symbol,symbol)

xnegative(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,«AN EXPERT SYSTEM»,1,16,22,58),

nl,write("* * * * * * * * * * * * * * * * * * * *"),

nl,write(" WELCOME TO A DOG EXPERT SYSTEM "),

nl,write(" "),

nl,write(«This is a dog identification system. „),

nl,write(“Please answer the question about „),

nl,write(“the dog you would like by typing in „),

nl,write(“'yes' or 'no'. „),

nl,write(“* * * * * * * * * * * * * * * * * * * *»), nl,nl,

do_consulting,

write(«Press space bar.»),nl,

readln(_),

removewindow, exit.

do_consulting :-

dog_is(X),!,nl,

write(«the dog you have indicated is a(n)»,X,"."),nl,

clear_facts.

do_consulting :-

nl,write(«Sorry I can't help you! „),

clear_facts.

ask(X,Y) :-

write(“ Question :- »,X," it ",Y," ?"),

readln(Reply),

remember(X,Y,Reply).

/* МЕХАНИЗМ ВЫВОДА */

positive(X,Y) :- xpositive(X,Y),!.

positive(X,Y) :-

% not

not( negative(X,Y)),!,

ask(X,Y).

negative(X,Y) :-

xnegative(X,Y),!.

remember(X,Y,yes) :-

asserta(xpositive(X,Y)).

remember(X,Y,no) :-

asserta(xnegative(X,Y)), fail.

clear_facts :-

retract(xpositive(_,_)), fail.

clear_facts :-

retract(xnegative(_,_)), fail.

 

/* ПРОДУКЦИОННЫЕ ПРАВИЛА */

dog_is(«English Bulldog») :-

it_is(«short-haired dog»),

positive(has,«height under 22 inches»),

positive(has,«low-set tail»),

positive(has,«good natured personality»),!.

dog_is(«Beagle») :-

it_is(«short-haired dog»),

positive(has,«height under 22 inches»),

positive(has,«longer ears»),

positive(has,«good natured personality»),!.

dog_is(«Great Dane») :-

it_is(«short-haired dog»),

positive(has,«low-set tail»),

positive(has,«good natured personality»),

positive(has,«weight over 100 lb»),!.

dog_is(«American Foxhound») :-

it_is(«short-haired dog»),

positive(has,«height under 30 inches»),

positive(has,«longer ears»),

positive(has,«good natured personality»),!.

dog_is(«Cocker Spaniel») :-

it_is(«long-haired dog»),

positive(has,«height under 22 inches»),

positive(has,«low-set tail»),

positive(has,«longer ears»),

positive(has,«good natured personality»),!.

dog_is(«Irish Setter») :-

it_is(«long-haired dog»),

positive(has,«height under 30 inches»),

positive(has,«longer ears»),!.

dog_is(«Collie») :-

it_is(«long-haired dog»),

positive(has,«height under 30 inches»),

positive(has,«low-set tail»),

positive(has,«good natured personality»),!.

dog_is(«St. Bernard») :-

it_is(«long-haired dog»),

positive(has,«low-set tail»),

positive(has,«good natured personality»),

positive(has,«weight over 100 lb»),!.

it_is(«short-haired dog») :-

positive(has,«short-haired»),!.

it_is(«long-haired dog») :-

positive(has,«long-haired»),!.

 

 


 

еще рефераты
Еще работы по информатике