Задание для самостоятельной работы. Модифицируйте программу, добавив в меню пункты

Модифицируйте программу, добавив в меню пункты:

1) Вывод списка игроков.

2) Сохранение данных в файл.

3) Выборка данных по 1 из трех критериев.

Лабораторная работа №9. Применение языка для решения задач ИИ. Создание экспертных систем

Пример 1. Рассмотрим пример ЭС для идентификации породы собак. Она помогает потенциальному хозяину выбрать породу собаки в соответствие с определенными критериями.

В данной ЭС используются следующие характеристики:

1. Короткая шерсть;

2. Длинная шерсть;

3. Рост меньше 30 дюймов;

4. Рост меньше 22 дюймов;

5. Низкопосаженный хвост;

6. Длинные уши;

7. Хороший характер

8. Вес больше 100 фунтов.

Каждая характеристика для конкретной породы либо верна, либо не верна. Для каждой породы справедливы следующие характеристики:

Таблица 13.

Характеристики собак

Порода Характеристики
Английский бульдог 1,4,5,7
Гончая 1,4,6,7
Дог 1,3,6,7,8
Амер.гончая 1,5,6,7
Кокер-спаниэль 2,4,5,6,7
Ирландский сеттер 2,3,6
Колли 2,3,5,7
Сенбернар 2,5,7,8

Программа 33. «Эксперт по породам собак»

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

/*Назначение: Демонстрация работы ЭС*/

Domains

n=integer

list=n*

dog=symbol

Predicates

rule(n,dog,list)

cond(n,string)

do_expert

show_menu

do_consulting

process(n)

test(n,list)

topic

repeat

Goal

do_expert.

Clauses

rule(1,"английский бульдог",[1,4,5,7]).

rule(2,"гончая",[1,4,6,7]).

rule(3,"дог",[1,3,6,7,8]).

rule(4,"американская гончая",[1,5,6,7]).

rule(5,"коккер-спаниель",[2,4,5,6,7]).

rule(6,"ирландский сеттер",[2,3,6]).

rule(7,"колли",[2,3,5,7]).

rule(8,"сенбернар",[2,5,7,8]).

/*Характеристики*/

cond(1,"короткошерстная").

cond(2,"длинношерстная").

cond(3,"рост ниже 30 дюймов").

cond(4,"рост ниже 22 дюймов").

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

cond(6,"большие уши").

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

cond(8,"вес более 100 фунтов").

do_expert:-

makewindow(1,7,5,"ЭКСПЕРТНАЯ СИСТЕМА",0,0,25,80),

show_menu.

repeat.

repeat:-repeat.

/*Вывод меню*/

show_menu:-

repeat,

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

write("*****Добро пожаловать!*****"),nl,

write("* *"),nl,

write("*****1-консультация********"),nl,

write("*****2-список**************"),nl,

write("*****3-выход***************"),nl,

write("* *"),nl,

write("****Сделайте свой выбор****"),nl,

readint(X),

process(X),fail.

/*Обработка 1 пункта меню “Консультация”*/

process(1):-

do_consulting,

readchar(_),

shiftwindow(1),

clearwindow.

/*Обработка 2 пункта меню “Вывод списка”*/

process(2):-

makewindow(2,7,7,"",5,20,12,25),

topic,

readchar(_),

shiftwindow(1),

clearwindow.

/* Обработка 3 пункта меню “Выход”*/

process(3):-

removewindow,

exit.

/*Вывод пород собак*/

topic:-

rule(X,Y,_),

write(X,". ",Y),

nl,fail.

topic.

/*Консультация*/

do_consulting:-

test(1,List),

rule(_,X,List),

write("Ваш выбор:",X),!.

do_consulting:-

write("Мне жаль, что не смог Вам помочь.").

/*Тестирование*/

test(9,[]):-!.

test(1,[N|List]):-

cond(N,Text),

makewindow(2,7,7,"",5,20,10,35),

write("Вопрос:-",Text,"?"),nl,

write("1-да"),nl,

write("0-нет"),nl,

readint(R),R=1,!,test(3,List).

test(1,List):- test(2,List),!.

test(N,[N|List]):-

cond(N,Text),

makewindow(2,7,7,"",5,20,10,35),

write("Вопрос:-",Text,"?"),nl,

write("1-да"), nl,

write("0-нет"), nl,

readint(R),M=N+1,

R=1,!,test(M,List).

test(N,List):-M=N+1,test(M,List).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: