Учебная работа. Реферат: Создание экспертной системы по выбору электрогитары
УНИВЕРСИТЕТ ПУТЕЙ СООБЩЕНИЯ
Кафедра «Математика и моделирование»
Реферат по дисциплине:
«Базы познаний и экспертные системы»
Тема: «Создание экспертной системы
по выбору электрогитары»
Санкт-Петербург
2009г.
Цель работы: составить такую экспертную систему, чтоб хоть какой человек при воззвании к ней, мог принять решение в выборе электрогитары.
Короткое описание.
Самое мощное воздействие на человеческое сознание и на эмоции (Эмоции отличают от других видов эмоциональных процессов: аффектов, чувств и настроений) оказывает музыка. Огромное количество разных музыкальных инструментов было сотворено людьми и эти инструменты повсевременно усовершенствуются, а так же создаются новейшие. В истинное время для удобства звукозаписи и обработки музыки употребляются электрические музыкальные инструменты, в том числе электрогитары. Данная система поможет обусловиться с чертами и типами данного вида инструментов, потому что для всякого покупателя-музыканта необходимо посодействовать подобрать “его” гитару по тем главным чертам, которые представлены в моей экспертной системе .
заключения.
1. Epiphone LP Studio
2. Epiphone LP Standart
3. ESP LTD JH-200
4. ESP LTD M-200 FM
5. ESP LTD H-100 FM
6. Ibanez AF75 BS
7. Ibanez SZ520QM GAB
8. Washburn 30В
9. Washburn J9
10. Washburn N3
11. Washburn WG587
12. Jackson DK2FS
13. Jackson JS30DKT
14. Gibson LP-100
15. Epiphone LP Custom
16. Fender FG -200
17. Fender LS -11
18. Squaer Standart
Модель предметной области.
Перечень вопросцев.
1. Форма гитары:
а) Les Paul;
б) Stratocaster;
в) Classic;
2. Материал:
а) Дерево;
б) иной;
3. Производитель:
а) Китай;
б) Корея;
в) Индонезия;
4. количество звукоснимателей:
а) 2;
б) 3;
5. наличие рычага;
a) есть
b) нет
6. наличие встроенного эффекта;
а) есть
б) нет
1
2
3
4
5
6
Les Paul
Stratocaster
Classic
дерево
нет
Китай
Корея
Индонезия
два
три
ЕСТЬ
НЕТ
ЕСТЬ
НЕТ
1. Epiphone LP Studio
+
+
+
-
—
—
—
+
2. Epiphone LP Standart
+
+
+
-
-
+
-
—
3. ESP LTD JH-200
+
+
+
-
-
-
-
+
4. . ESP LTD M-200FM
+
+
+
-
-
-
—
-
—
5. ESP LTD H-100FM
+
+
+
-
—
-
-
-
—
6. Ibanez AF75 BS
+
+
+
+
-
—
—
—
7. Ibanez SZ520 QM
+
+
+
-
—
-
-
—
—
8. Washburn 30B
+
+
+
-
-
-
—
—
—
9. Washburn J9
+
+
+
-
—
-
—
—
—
10. Washburn N3
+
+
+
-
—
-
-
-
—
11. Washburn WG587
+
+
+
+
—
—
—
—
12. JACKSON DK 2FS
+
+
+
-
—
+
—
—
13. JACKSON JS 30 DKT
+
+
+
+
-
-
—
-
14. Gibson LP Custom
+
+
+
-
—
-
—
-
—
15. Epiphone LP Custom
+
+
+
-
—
-
-
—
-
16. Fender FG — 200
+
+
+
-
—
-
—
+
17. Fender LS -11
+
+
+
-
—
-
—
+
18.Squaer Standart
+
+
+
+
—
—
—
—
В. 5
Дерево вывода
текст программки на Visual Prolog 5.2
% Идентификациягитары
database
db_positive ( symbol, symbol )
db_negative ( symbol, symbol )
predicates
do_expert % выполнитьэкспертнуюработу
do_consulting % выполнитьконсультацию
nondeterm
guitar_is ( symbol ) % гитараесть
it_is ( symbol ) % этоесть
positive ( symbol, symbol ) % позитивныйфакт
negative ( symbol, symbol ) % негативныйфакт
remember ( symbol, symbol, symbol ) % запомнитьфактвДБД
ask ( symbol, symbol ) % вопроспользователю
clear_facts % очисткаДБД
goal
do_expert.
clauses
% Система пользовательского интерфейса
do_expert :-
nl, write («* * * * * * * * * * * * * * * * * * * * * * * * * * * *» ),
nl, write («ДОБРО ПОЖАЛОВАТЬ в экспертную систему» ),
nl, write (» определения подходящей гитары » ),
nl, write («* * * * * * * * * * * * * * * * * * * * * * * * * * * *» ),
nl, write ( » Пожалуйста, ответьте на вопросцы о интересующей Вас » ),
nl, write ( » гитаре ‘y’ (да), либо ‘n’ (нет). » ),
nl, nl, nl,
do_consulting,
write ( «Нажмителюбуюклавишу…» ), nl,
readchar ( _ ),
exit.
do_consulting :-
guitar_is ( X ), !,
nl, nl,
write ( «Интересующая Вас гитара — «, X ),
nl, nl,
clear_facts.
do_consulting :-
nl, nl,
write ( «Извините, не могу Для вас посодействовать!» ),
nl, nl,
clear_facts.
ask ( X, Y ) :-
write ( «вопросец: «, X, » «, Y, «? » ),
readln ( Reply ),
remember ( X, Y, Reply ).
% Механизмвывода
positive ( X, Y ) :-
db_positive ( X, Y ), !.
positive ( X, Y ) :-
not ( db_negative ( X, Y ) ), !,
ask ( X, Y ).
negative ( X, Y ) :-
db_negative ( X, Y ), !.
remember ( X, Y, y ) :-
asserta ( db_positive ( X, Y ) ).
remember ( X, Y, n ) :-
asserta ( db_negative ( X, Y ) ),
fail.
clear_facts :-
retract ( db_positive ( _, _ ) ), fail.
clear_facts :-
retract ( db_negative ( _, _ ) ), fail.
clear_facts.
% Продукционныеправила
guitar_is ( «Epiphone LP Studio» ) :-
it_is ( «форма Les Paul» ),
positive ( «материал», «дерево» ),
positive ( «страна», «Китай» ),
positive ( «должен быть», «интегрированный эффект» ).
guitar_is ( «Fender LS-11» ) :-
it_is ( «форма Les Paul» ),
positive ( «материал», «дерево» ),
positive ( «страна», «Китай» ),
negative ( «должен быть», «интегрированный эффект» ).
guitar_is ( «Gibson LP-100» ) :-
it_is ( «форма Les Paul» ),
positive ( «материал», «дерево» ),
negative ( «страна», «Китай» ),
positive ( «страна», «Корея» ).
guitar_is ( «jackson DK2FS» ) :-
it_is ( «форма Les Paul» ),
positive ( «материал», «дерево» ),
negative ( «страна», «Китай» ),
negative ( «страна», «Корея» ),
positive ( «должен быть», «рычаг» ).
guitar_is ( «Epiphone LP Standart» ) :-
it_is ( «форма Les Paul» ),
positive ( «материал», «дерево» ),
negative ( «страна», «Китай» ),
negative ( «страна», «Корея» ),
negative ( «должен быть», «рычаг» ).
guitar_is ( «ESP LTD H-100FM» ) :-
it_is ( «форма Les Paul» ),
positive ( «материал», «иной» ),
negative ( «страна», «Китай» ),
positive ( «страна», «Корея» ).
guitar_is ( «Epiphone LP Custom» ) :-
it_is ( «форма Les Paul» ),
positive ( «материал», «иной» ),
negative ( «страна», «Китай» ),
negative ( «страна», «Корея» ).
guitar_is ( «Washburn WG 587» ) :-
it_is ( «форма stratocaster» ),
negative ( «форма», «Les Paul» ),
positive ( «форма», «stratocaster» ),
positive ( «материал», «дерево» ),
positive ( «страна», «Китай» ),
positive ( «количество звукоснимателей», «2» ).
guitar_is ( «Ibanez AF75 BS» ) :-
it_is ( «форма stratocaster» ),
negative ( «форма», «Les Paul» ),
positive ( «форма», «stratocaster» ),
positive ( «материал», «дерево» ),
positive ( «страна», «Китай» ),
negative ( «количество звукоснимателей», «2» ).
guitar_is ( «Ibanez SZ520 QMGAB» ) :-
it_is ( «форма stratocaster» ),
negative ( «форма», «Les Paul» ),
positive ( «форма», «stratocaster» ),
positive ( «материал», «дерево» ),
negative ( «страна», «Китай» ),
positive ( «страна», «Корея» ).
guitar_is ( «Washburn J9» ) :-
it_is ( «форма stratocaster» ),
negative ( «форма», «Les Paul» ),
positive ( «форма», «stratocaster» ),
positive ( «материал», «дерево» ),
negative ( «страна», «Китай» ),
negative ( «страна», «Корея» ).
guitar_is ( «ESP LTD JH-200» ) :-
it_is ( «форма stratocaster» ),
negative ( «форма», «Les Paul» ),
positive ( «форма», «stratocaster» ),
positive ( «материал», «другое» ),
negative ( «страна», «Китай» ),
negative ( «страна», «Корея» ),
positive ( «должен быть», «интегрированный эффект» ).
guitar_is ( «Fender FG-200» ) :-
it_is ( «форма stratocaster» ),
negative ( «форма», «Les Paul» ),
positive ( «форма», «stratocaster» ),
positive ( «материал», «другое» ),
negative ( «страна», «Китай» ),
positive ( «страна», «Корея» ),
negative ( «должен быть», «интегрированный эффект» ).
guitar_is ( «Jackson JS30DKT» ) :-
it_is ( «форма classic» ),
negative ( «форма», «Les Paul» ),
negative ( «форма», «stratocaster» ),
positive ( «форма», «classic» ),
positive ( «материал», «дерево» ),
positive ( «страна», «Китай» ),
positive ( «количество звукоснимателей», «2» ).
guitar_is ( «Squaer Standart» ) :-
it_is ( «форма classic» ),
negative ( «форма», «Les Paul» ),
negative ( «форма», «stratocaster» ),
positive ( «форма», «classic» ),
positive ( «материал», «дерево» ),
positive ( «страна», «Китай» ),
negative ( «количество звукоснимателей», «2» ).
guitar_is ( «ESP LTD M-200FM» ) :-
it_is ( «форма classic» ),
negative ( «форма», «Les Paul» ),
negative ( «форма», «stratocaster» ),
positive ( «материал», «другое» ),
positive ( «страна», «Китай» ).
guitar_is ( «Washburn N3» ) :-
it_is ( «форма classic» ),
negative ( «форма», «Les Paul» ),
negative ( «форма», «stratocaster» ),
positive ( «форма», «classic» ),
positive ( «материал», «другое» ),
negative ( «страна», «Китай» ),
positive ( «страна», «Корея» ).
guitar_is ( «Washburn 30B» ) :-
it_is ( «форма classic» ),
negative ( «форма», «Les Paul» ),
negative ( «форма», «stratocaster» ),
positive ( «форма», «classic» ),
positive ( «материал», «другое» ),
negative ( «страна», «Китай» ),
negative ( «страна», «Корея» ).
it_is ( «форма Les Paul» ) :-
positive ( «форма», «Les Paul» ), !.
it_is ( «форма stratocaster» ) :-
negative ( «форма», «Les Paul» ), !,
positive ( «форма», «stratocaster» ), !.
it_is ( «форма classic» ) :-
negative ( «форма», «Les Paul» ), !,
negative ( «форма», «stratocaster» ), !.
Пример работы программки:
Текстпрограммына Leonardo:
1. if ‘Form of the guitar’ is ‘Les Paul’
and ‘material’ is ‘wood’
and ‘Strana Proizvoditel’ is ‘China’
and ‘Nalichie vstroennogo effecta’ is ‘yes’
then Guitar is ‘Epiphone LP Studio’
2. if ‘Form of the guitar’ is ‘Les Paul’
and ‘material’ is ‘wood’
and ‘Strana Proizvoditel’ is ‘China’
and ‘Nalichie vstroennogo effecta’ is ‘no’
then Guitar is ‘Fender LS11’
3 if ‘Form of the guitar’ is ‘Les Paul’
and ‘material’ is ‘wood’
and ‘Strana Proizvoditel’ is ‘Korea’
then Guitar is ‘Gibson LP-100’
4 if ‘Form of the guitar’ is ‘Les Paul’
and ‘material’ is ‘wood’
and ‘Strana Proizvoditel’ is ‘Indonesia’
and ‘nalichie rychaga’ is ‘yes’
then Guitar is ‘JacksonDK2FS’
5 if ‘Form of the guitar’ is ‘Les Paul’
and ‘material’ is ‘wood’
and ‘Strana Proizvoditel’ is ‘Indonesia’
and ‘nalichie rychaga’ is ‘no’
then Guitar is ‘Epiphone LP Standart’
6 if ‘Form of the guitar’ is ‘Les Paul’
and ‘material’ is ‘another’
and ‘Strana Proizvoditel’ is ‘Korea’
then Guitar is ‘ESP LTD H-200FM’
7 if ‘Form of the guitar’ is ‘Les Paul’
and ‘material’ is ‘another’
and ‘Strana Proizvoditel’ is ‘Indonesia’
then Guitar is ‘Epiphone LP Custom’
8 if ‘Form of the guitar’ is ‘Stratocaster’
and ‘material’ is ‘wood’
and ‘Strana Proizvoditel’ is ‘China’
and ‘number of hambekers’ is ‘2’
then Guitar is ‘Washburn WG 587’
9 if ‘Form of the guitar’ is ‘Stratocaster’
and ‘material’ is ‘wood’
and ‘Strana Proizvoditel’ is ‘China’
and ‘number of hambekers’ is ‘3’
then Guitar is ‘Ibanez AF75 BS’
10 if ‘Form of the guitar’ is ‘Stratocaster’
and ‘material’ is ‘wood’
and ‘Strana Proizvoditel’ is ‘Korea’
then Guitar is ‘Ibanez SZ520QM GAB’
11 if ‘Form of the guitar’ is ‘Stratocaster’
and ‘material’ is ‘wood’
and ‘Strana Proizvoditel’ is ‘Indonesia’
then Guitar is ‘Washburn J9’
12 if ‘Form of the guitar’ is ‘Stratocaster’
and ‘material’ is ‘another’
and ‘Strana Proizvoditel’ is ‘Korea’
and ‘Nalichie vstroennogo effecta’ is ‘yes’
then Guitar is ‘ESP LTD JH-200’
13 if ‘Form of the guitar’ is ‘Stratocaster’
and ‘material’ is ‘another’
and ‘Strana Proizvoditel’ is ‘Korea’
and ‘Nalichie vstroennogo effecta’ is ‘no’
then Guitar is ‘Fender FG-200’
14 if ‘Form of the guitar’ is ‘Classic’
and ‘material’ is ‘wood’
and ‘Strana Proizvoditel’ is ‘China’
and ‘number of hambekers’ is ‘2’
then Guitar is ‘JacksonJS30DKT’
15 if ‘Form of the guitar’ is ‘Classic’
and ‘material’ is ‘wood’
and ‘Strana Proizvoditel’ is ‘China’
and ‘number of hambekers’ is ‘3’
then Guitar is ‘Squaer Standart’
16 if ‘Form of the guitar’ is ‘Classic’
and ‘material’ is ‘another’
and ‘Strana Proizvoditel’ is ‘China’
then Guitar is ‘ESP M-200FM’
17 if ‘Form of the guitar’ is ‘Classic’
and ‘material’ is ‘another’
and ‘Strana Proizvoditel’ is ‘Korea’
then Guitar is ‘Washburn N3’
if ‘Form of the guitar’ is ‘Classic’
and ‘material’ is ‘another’
and ‘Strana Proizvoditel’ is ‘Indonesia’then Guitar is ‘Washburn 30 B’
seekGuitar
Выводы:
По результатам проделанной работы реализации экспертной системы в LEONARDO и PROLOG можно отметить, некие удобства и неудобства программ:
1) Неудобства переключения языка в программке LEONARDO, язык не переключается как в системе Windows, в отличие от PROLOG, как следствие повышение времени на программирование ЭС в LEONARDO.
2) Неудобство в LEONADRO при разработке экспертной системы, нужно заполнять раздельно правила и объекты, что наращивает время на создание экспертной системы, в отличие от этого в системе PROLOG довольно написать тест программки руководствуясь подходящими операторами.
3) Неудобства в программке PROLOG при выводе результатов на экран юзеру нужно самому вводить ответ на вопросец, а в LEONARDO довольно избрать подходящий ответ и надавить на ENTER.
4) Неудобства в программке LEONARDO при выводе результатов на экран и ответе на вопросцы вы не видите вопросцев, на которые уже ответили и ваших ответов, чтоб поглядеть при ошибке в котором вопросец вы не верно ответили.
]]>