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. Форма гитары:
2. Материал:
3. Производитель:
4. Количество звукоснимателей:
5. Наличие рычага;
6. Наличие встроенного эффекта;
Дерево вывода
Текст программы на 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" ), !,