Скачиваний:
80
Добавлен:
17.06.2016
Размер:
51.89 Кб
Скачать

Санкт-Петербургский государственный электротехнический университет «ЛЭТИ»

имени В. И. Ульянова(Ленина)

Открытый факультет

Кафедра Автоматизированных Систем Обработки Информации и Управления

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

по дисциплине: «Проектирование систем искусственного интеллекта»

Выполнил: ст. гр. 0851

Карелина Л.А

Проверил:

Соничев А.В.

Санкт-Петербург

2015

Разработка экспертных систем, базирующихся на правилах

Цели работы:

  1. Ознакомление с принципами построения экспертных систем.

  2. Изучение структуры экспертных систем, базирующихся на правилах.

  3. Построение простейшей экспертной системы, базирующейся на правилах.

Задание к лабораторной работе

  1. Провести тестирование программы LAB5.PRO.

  2. Изменить программу LAB5.PRO так, чтобы перед окончанием работы выводилось содержимое БД, например путем использования предиката вида

wr_bd :- dpositive(P,Q),

write("dpositive(",P,",",Q,")"),nl,

fail.

wr_bd.

  1. Изменить программу LAB5.PRO так, чтобы она обеспечивала распознавание животных в соответствии с правилами, приведенными в приложении 2.

Порядок выполнения задания

  1. Загрузить Турбо-Пролог.

  2. Загрузить программу LAB5.PRO и убедиться в правильности ее работы.

  3. Внести требуемые изменения.

Содержание отчета

Отчет должен содержать полученные тексты программ и результаты их работы.

Текст программы:

domains

database

dpositive(symbol, symbol)

dnegative(symbol, symbol)

predicates

do_expert_job

do_consulting

ask(symbol, symbol)

animal_is(symbol)

it_is(symbol)

positive(symbol, symbol)

negative(symbol, symbol)

remember(symbol, symbol, symbol)

clear_facts

output_positives

repeat

wr_bd

goal

do_expert_job.

clauses

repeat.

repeat :- repeat.

/* SISTEMA POL'ZOVATEL'SKOGO INTERFEJSA */

do_expert_job :-

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

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

nl,write(" WELCOME TO AN ANIMAL EXPERT SYSTEM "),

nl,write(" "),

nl,write(" Вас приветствует система "),

nl,write(" распознавания животных "),

nl,write(" Ответьте, пожалуйста, на ряд вопросов "),

nl,write(" Формат ответа: yes/no "),

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

nl,nl,

do_consulting,

clear_facts,

write("Press SPACE."),nl,

readchar(_),

removewindow,

exit.

output_positives :-

write("Признаки этого вида:"),nl,!,

dpositive(P,Q),

write(" - ", P, " ", Q),nl,fail,!.

do_consulting :-

animal_is(X),!,nl,

write("Можно предположить, что это животное - ",X,"."),nl,

wr_bd,

clear_facts.

do_consulting :-

nl,write("Простите, ничем не можем помочь!"),

clear_facts.

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,yes) :-

asserta(dpositive(X,Y)).

remember(X,Y,no) :-

asserta(dnegative(X,Y)),

fail.

clear_facts :-

retract(dpositive(_,_)),

fail.

clear_facts :-

retract(dnegative(_,_)),

fail.

wr_bd :-

dpositive(P,Q),

write(" +", P, " ", Q),nl,

fail.

wr_bd :-

dnegative(P,Q),

write(" -", P, " ", Q),nl,

fail.

wr_bd.

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

animal_is("Гепард") :-

it_is("кошачьи"),

positive("окраска", "желто-коричневого цвета"),

positive("имеет", "темные пятна"),!.

animal_is("Тигр") :-

it_is("кошачьи"),

positive("окраска", "желто-коричневого цвета"),

positive("имеет", "темные полосы"),!.

animal_is("Жираф") :-

it_is("жвачное"),

negative("", "глаза смотрят вперед"),

positive("шея", "длинная"),

positive("ноги", "длинные"),

positive("имеет", "черные пятна"),!.

animal_is("Зебра") :-

it_is("непарнокопытное"),

negative("", "глаза смотрят вперед"),

positive("имеет", "черные полосы"),!.

animal_is("Дельфин") :-

it_is("млекопитающее"),

it_is("хищник"),

negative("имеет", "волосяной покров"),

positive("имеет","плавники"),!.

animal_is("Альбатрос") :-

it_is("птица"),

positive("может", "летать"),

positive("может", "плавать"),!.

animal_is("Страус") :-

it_is("птица"),

negative("может", "летать"),

positive("окраска", "черно-белая"),

positive("шея", "длинная"),

positive("ноги", "длинные"),!.

animal_is("Пингвин") :-

it_is("птица"),

negative("может", "летать"),

positive("окраска", "черно-белая"),

not(positive("шея", "длинная")),

positive("может", "плавать"),!.

animal_is("Махаон") :-

it_is("насекомое"),

it_is("бабочка"),

positive("имеет", "желтые крылья"),

positive("имеет","черные круглые пятна"),

positive("крылья", "имеют <хвостики>"),!.

animal_is("Лимонница") :-

it_is("насекомое"),

it_is("бабочка"),

positive("имеет", "желтые крылья"),

negative("имеет","черные круглые пятна"),

positive("имеет","красные пятна"),!.

%------

it_is("млекопитающее"):-

positive("может", "давать молоко"), !.

it_is("птица"):-

not(it_is("млекопитающее")),

positive("имеет", "перья"),!.

%---

it_is("хищник"):-

positive("", "глаза смотрят вперед"),

positive("", "плотоядный"),!.

it_is("кошачьи"):-

it_is("млекопитающее"),

it_is("хищник"),

positive("имеет", "волосяной покров"),

positive("имеет", "огруглую голову"),

positive("имеет", "развитые клыки"),!.

%---

it_is("парнокопытное"):-

it_is("млекопитающее"),

not(it_is("хищник")),

positive("имеет", "копыта"),

positive("имеет", "четное число пальцев"),!.

it_is("непарнокопытное"):-

it_is("млекопитающее"),

not(it_is("хищник")),

positive("имеет", "копыта"),

negative("имеет", "четное число пальцев"),!.

it_is("жвачное"):-

it_is("парнокопытное"),

positive("жует", "жвачку"),!.

%-----

it_is("насекомое"):-

not(it_is("млекопитающее")),

not(it_is("птица")),

positive("маленький", "размер"),

positive("имеет", "фасеточные глаза"),

positive("имеет","усики"),!.

%-----

it_is("бабочка"):-

it_is("насекомое"),

positive("имеет", "чешуйки на крыльях"),

positive("имеет", "шесть ног"),!.

%------

it_is("жук"):-

it_is("насекомое"),

not(it_is("бабочка")),

positive("жесткие", "крылья"),

positive("имеет", "шесть ног").

%------

Результат работы

Соседние файлы в папке Пролог лабы