Санкт-Петербурзький державний
УНІВЕРСИТЕТ шляхів сполучення
Кафедра «Математика і моделювання»
Реферат з дисципліни:
«Бази знань та експертні системи»
Тема: «Створення експертної системи
за вибором електрогітари »
Санкт-Петербург
2009р.
Мета роботи: скласти таку експертну систему, щоб будь-яка людина при зверненні до неї, міг прийняти рішення у виборі електрогітари.
Короткий опис.
Найбільш сильний вплив на людську свідомість і на емоції надає музика. Безліч різних музичних інструментів було створено людьми і ці інструменти постійно вдосконалюються, а так само створюються нові. В даний час для зручності звукозапису та обробки музики використовуються електронні музичні інструменти, в тому числі електрогітари. Дана система допоможе визначитися з характеристиками і типами даного виду інструментів, так як для кожного покупця-музиканта потрібно допомогти підібрати "його" гітару за тими основними характеристиками, які представлені в моїй експертній системі.
Висновку.
Epiphone LP Studio
Epiphone LP Standart
ESP LTD JH-200
ESP LTD M-200 FM
ESP LTD H-100 FM
Ibanez AF75 BS
Ibanez SZ520QM GAB
Washburn 30 В
Washburn J9
Washburn N3
Washburn WG587
Jackson DK2FS
Jackson JS30DKT
Gibson LP-100
Epiphone LP Custom
Fender FG -200
Fender LS -11
Squaer Standart
Модель предметної області.
Список питань.
Форма гітари:
а) Les Paul;
б) Stratocaster;
в) Classic;
Матеріал:
а) Дерево;
б) Інший;
Виробник:
а) Китай;
б) Корея;
в) Індонезія;
Кількість звукознімачів:
а) 2;
б) 3;
Наявність важеля;
є
немає
Наявність вбудованого ефекту;
а) є
б) немає
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 | + | + | + | + | - | - | - | - |
Дерево виведення
Текст програми на 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 '
seek Guitar
Висновки:
За результатами виконаної роботи реалізації експертної системи в LEONARDO і PROLOG можна відзначити, деякі зручності і незручності програм:
1) Незручності перемикання мови в програмі LEONARDO, мова не перемикається як в системі Windows, на відміну від PROLOG, як наслідок збільшення часу на програмування ЕС в LEONARDO.
2) Незручність у LEONADRO при створенні експертної системи, треба заповнювати окремо правила та об'єкти, що збільшує час на створення експертної системи, на відміну від цього в системі PROLOG достатньо написати тест програми керуючись потрібними операторами.
3) Незручності в програмі PROLOG при виведенні результатів на екран користувачеві необхідно самому вводити відповідь на питання, а в LEONARDO досить вибрати потрібну відповідь і натиснути на ENTER.
4) Незручності в програмі LEONARDO при виведенні результатів на екран і відповіді на питання ви не бачите питань, на які вже відповіли і ваших відповідей, щоб подивитися при помилку в якому питання ви не правильно відповіли.