Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Текст программы работы №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,”длинная шерсть”),!.

/* конец программы */

 

Текст программы работы №2 (LABO2.PRO).

 

/* Пример экспертной системы, */

/* базирующейся на логике. */

/* Эксперт по породам собак */

domains

conditions = bno*

rno,bno,fno =integer

category = symbol

 

database

/* пpедикаты базы данных */

rule(rno,category,category,conditions)

cond(bno,symbol)

yes(bno)

no(bno)

topic(symbol)

 

predicates

/* пpедикаты системы пользовательского интеpфейса */

do_expert_job

show_menu

do_consulting

process(integer)

info(category)

goes(category)

listopt

erase

clear

eval_reply(char)

/* пpедикаты механизма вывода */

go(category)

check(rno,conditions)

inpo(rno,bno,string)

do_answer(rno,string,bno,integer)

 

goal

do_expert_job.

 

clauses

/* база знаний */

topic("dog").

topic("Коpоткошеpстная собака").

topic("Длинношеpстная собака").

 

rule(1,"dog","Коpоткошеpстная собака",[1]).

rule(2,"dog","Длинношеpстная собака",[2]).

rule(3,"Коpоткошеpстная собака","Английский бульдог", [3,5,7]).

rule(4,"Коpоткошеpстная собака","Гончая", [3,6,7]).

rule(5,"Коpоткошеpстная собака","Дог", [5,6,7,8]).

rule(6,"Коpоткошеpстная собака","Амеpиканская гончая", [4,6,7]).

rule(7,"Длинношеpстная собака","Коккеp-спаниель", [3,5,6,7]).

rule(8,"Длинношеpстная собака","Иpландский сеттеp", [4,6]).

rule(9,"Длинношеpстная собака","Колли", [4,5,7]).

rule(10,"Длинношеpстная собака","Сенбеpнаp", [5,7,8]).

 

cond(1,"Коpоткая шеpсть").

cond(2,"Длинная шеpсть").

cond(3,"Рост меньше 55 см").

cond(4,"Рост меньше 75 см").

cond(5,"Hизкопосаженный хвост").

cond(6,"Длинные уши").

cond(7,"Хоpоший хаpактеp").

cond(8,"Вес более 5 кг").

 

/* Система пользовательского интерфейса */

do_expert_job:-

makewindow(1,7,7,"DOG EXPERT SYSTEM",0,0,25,80),

show_menu,

nl,write("Press spase bar."),

readchar(_),

exit.

show_menu:-

write(" "),nl,

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

write("* DOG EXPERT *"),nl,

write("* *"),nl,

write("* 1. Consultation *"),nl,

write("* *"),nl,

write("* 2. Exit the system *"),nl,

write("* *"),nl,

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

write(" "),nl,

write("Please enter your choice: 1 or 2: "),nl,

readint(Choice),

process(Choice).

process(1):-do_consulting.

process(2):-removewindow, exit.

do_consulting:-goes(Mygoal),go(Mygoal),!.

do_consulting:-nl,write("Sorry, I can't help you."),

clear.

do_consulting.

goes(Mygoal):-clear,clearwindow,nl,nl,

write(" "),nl,

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

write(" "),nl,

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

write(" To begin the process of choosing a "),nl,

write(" dog, please type in 'dog'. If you "),nl,

write(" wish to see the dog types, please "),nl,

write(" type in a question mark (?). "),nl,

write(" "),nl,

readln(Mygoal),

info(Mygoal),!.

info("?"):-clearwindow,

write("Reply from the KBS."),nl,

listopt,nl,

write("Please any key."),

readchar(_),

clearwindow,

exit.

info(X):- X >< "?".

listopt:-

write("The dog types are: "),nl,nl,

topic(Dog),

write(" ",Dog),nl,fail.

listopt.

inpo(Rno,Bno,Text):-

write("Question:-",Text,"? "),

makewindow(2,7,7,"Response",10,54,7,20),

write("Type 1 for 'yes': "),nl,

write("Type 2 for 'no': "),nl,

readint(Response),

clearwindow,

shiftwindow(1),

do_answer(Rno,Text,Bno,Response).

eval_reply('y'):-

write("I hope you have found this helpful!").

eval_reply('n'):-

write("I am sorry I can't help you!").

go(Mygoal):-

not(rule(_,Mygoal,_,_)),!,nl,

write("The dog you have indicated is a(n) ",Mygoal,"."),nl,

write(" Is a dog you would like to have (y/n)?"),nl,

readchar(R),

eval_reply(R).

 

/* механизм вывода */

go(Mygoal):-

rule(Rno,Mygoal,Ny,Cond),

check(Rno,Cond),

go(Ny).

check(Rno,[Bno|Rest]):-

yes(Bno),!,

check(Rno,Rest).

check(_,[Bno|_]):- no(Bno),!,fail.

check(Rno,[Bno|Rest]):-

cond(Bno,Text),

inpo(Rno,Bno,Text),

check(Rno,Rest).

check(_,[]).

do_answer(_,_,_,0):- exit.

do_answer(_,_,Bno,1):-

assert(yes(Bno)),

shiftwindow(1),

write(yes),nl.

do_answer(_,_,Bno,2):-

assert(no(Bno)),

write(no),nl,

fail.

erase:- retract(_),fail.

erase.

clear:-

retract(yes(_)),

retract(no(_)),

fail,!.

clear.

/* конец пpогpаммы */

ПРИЛОЖЕНИЕ 2

Система правил для экспертной системы

Распознавания животных

ПРАВИЛО 1

ЕСЛИ животноеимеет волосяной покров

ТО это животное – млекопитающее

ПРАВИЛО 2

ЕСЛИ животное дает молоко

ТО это животное – млекопитающее

ПРАВИЛО 3

ЕСЛИ животное имеет перья

ТО это – птица

ПРАВИЛО 4

ЕСЛИ животное может летать

И откладывает яйца

ТО это животное – птица

ПРАВИЛО 5

ЕСЛИ животное ест мясо

ТО это животное – хищник

ПРАВИЛО 6

ЕСЛИ животное имеет острые зубы

И животное имеет когти

И его глаза смотрят вперед

ТО это животное – хищник

ПРАВИЛО 7

ЕСЛИ животное является млекопитающим

И имеет копыта

ТО это животное – парнокопытное

ПРАВИЛО 8

ЕСЛИ животное является млекопитающим

И жует жвачку

ТО это животное – парнокопытное

ПРАВИЛО 9

ЕСЛИ животное является млекопитающим

И это животное – хищник

И это животное желто-коричневого цвета

И это животное имеет темные пятна

ТО можно предположить, что это животное – гепард

ПРАВИЛО 10

ЕСЛИ животное является млекопитающим

И это животное – хищник

И это животное желто-коричневого цвета

И это животное имеет темные полосы

ТО можно предположить, что это животное – тигр

ПРАВИЛО 11

ЕСЛИ животное является парнокопытным

И имеет длинную шею

И имеет длинные ноги

И имеет черные пятна

ТО можно предположить, что это животное – жираф

ПРАВИЛО 12

ЕСЛИ животное является парнокопытным

И имеет черные полосы

ТО можно предположить, что это животное – зебра

ПРАВИЛО 13

ЕСЛИ животное является птицей

И не может летать

И имеет длинную шею

И имеет длинные ноги

И имеет черно-белую окраску

TО можно предположить, что это животное – страус

ПРАВИЛО 14

ЕСЛИ животное является птицей

И не может летать

И может плавать

И имеет черно-белую окраску

ТО можно предположить, что это животное – пингвин

ПРАВИЛО 15

ЕСЛИ животное является птицей

И хорошо летает

ТО можно предположить, что это животное – альбатрос

 

СОДЕРЖАНИЕ

 

Введение 3

Лабораторная работа 1. 4

Лабораторная работа 2. 23

Лабораторная работа 3. 28

Лабораторная работа 4. 44

Лабораторная работа 5 56

Лабораторная работа 6. 62

Лабораторная работа 7. 76

Лабораторная работа 8. 96

Библиографический список 103

Приложение 1. Текст программ для лабораторных работ 104

Приложение 2. Система правил для экспертной системы

распознавания животных 105

 

Акилова Ирина Михайловна

доцент кафедры ИУС АмГУ

Назаренко Наталья Викторовна,

старший преподаватель кафедры ИУС АмГУ

 

 

Изд-во АмГУ. Подписано к печати Формат 60х84/16. Усл. печ. л. 4,18

Тираж 50. Заказ.

Отпечатано в типографии АмГУ.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...