Форум программистов, компьютерный форум, киберфорум
Наши страницы
Prolog
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/22: Рейтинг темы: голосов - 22, средняя оценка - 4.86
gradiusalisik
0 / 0 / 0
Регистрация: 19.01.2010
Сообщений: 25
#1

Построение экспертной системы

23.03.2012, 21:01. Просмотров 3928. Ответов 4
Метки нет (Все метки)

Построить систему, которая дает возможность распознавать виды транспорта (автобус, троллейбус, трамвай).
Правильно ли построена. Учитель мне сказал что тут написана просто база , а нужно как то чтобы мыслил по другому. Вот вопрос а какие варианты написания есть или чего здесь не хватает?
Писал с примера про животных

ПРИМЕР
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
database
  xpositive(symbol, symbol)
  xnegative(symbol, symbol)
      
predicates
  animal_is(symbol)
  it_is(symbol)
  ask(symbol, symbol, symbol)
  remember(symbol, symbol, symbol)
  positive(symbol, symbol)
  negative(symbol, symbol)
  clear_facts
  run
   
clauses
  animal_is(cheetah) :- it_is(mammal),
    it_is(carnivore),
    positive(has, tawny_color),
    positive(has, dark_spots).
 
  animal_is(tiger) :- it_is(mammal),
    it_is(carnivore),
    positive(has, tawny_color),
    positive(has, black_stripes).
 
  animal_is(giraffe) :- it_is(ungulate),
    positive(has, long_neck),
    positive(has, long_legs),
    positive(has, dark_spots).
 
  animal_is(zebra) :- it_is(ungulate),
    positive(has,black_stripes).
 
  animal_is(ostrich) :- it_is(bird),
    negative(does, fly),
    positive(has, long_neck),
    positive(has, long_legs),
    positive(has, black_and_white_color).
 
  animal_is(penguin) :- it_is(bird),
    negative(does, fly),
    positive(does, swim),
    positive(has, black_and_white_color).
 
  animal_is(albatross) :-
    it_is(bird),  positive(does, fly_well).
 
    it_is(mammal) :- positive(has, hair).
    it_is(mammal) :- positive(does, give_milk).
    it_is(bird)   :- positive(has, feathers).
    it_is(bird)   :- positive(does, fly),
    positive(does,lay_eggs).
 
  it_is(carnivore) :- positive(does, eat_meat).
 
  it_is(carnivore) :-
    positive(has, pointed_teeth),
    positive(has, claws),
    positive(has, forward_eyes).
 
  it_is(ungulate) :-
    it_is(mammal), positive(has, hooves).
 
  it_is(ungulate) :- 
    it_is(mammal), positive(does, chew_cud).
 
  positive(X, Y) :- xpositive(X, Y), !.
  positive(X, Y) :-
    not(xnegative(X, Y)),
    ask(X, Y, yes).
 
  negative(X, Y) :- xnegative(X, Y), !.
  negative(X, Y) :-
    not(xpositive(X, Y)),
    ask(X, Y, no).
 
  ask(X, Y, yes) :-
    !, write(X, " it ", Y, '\n'),
    readln(Reply),
    frontchar(Reply,  'y', _),
    remember(X, Y, yes).
 
  ask(X, Y, no) :-
    !, write(X, " it ", Y, '\n'),
    readln(Reply),
    frontchar(Reply, 'n', _),
    remember(X, Y, no).
 
  remember(X, Y, yes) :- assertz(xpositive(X,Y)).
  remember(X, Y, no)  :- assertz(xnegative(X,Y)).
 
  clear_facts :- 
    write("\n\nPlease press the space bar to exit\n"),
    retractall(_, dbasedom), readchar(_).
 
  run :-
    animal_is(X), !,
    write("\nYour animal may be a (an) ",X),
    nl, nl, clear_facts.
 
  run :-
    write("\nUnable to determine what"),
    write("your animal is.\n\n"), clear_facts.
К сожелению не нашел как в спойлер поставить(

ТО ЧТО ПИСАЛ Я
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
database
  xpositive(symbol, symbol)
  xnegative(symbol, symbol)
      
predicates
  mashina_is(symbol)
  it_is(symbol)
  ask(symbol, symbol, symbol)
  remember(symbol, symbol, symbol)
  positive(symbol, symbol)
  negative(symbol, symbol)
  clear_facts
  run
   
clauses
 
  mashina_is(avtobus) :- it_is(transport),
    positive(has, benzin),
    positive(has, rezinovie_kolesa).
 
  mashina_is(trolleibus) :- it_is(transport),
    positive(has, elektri4estvo),
    positive(has, rezinovie_kolesa).
 
  mashina_is(tramvay) :- it_is(transport),
    positive(has, elektri4estvo),
    positive(has, zheleznie_kolesa).
   
   it_is(transport) :- positive(on, edet).
        
  positive(X, Y) :- xpositive(X, Y), !.
  positive(X, Y) :-
    not(xnegative(X, Y)),
    ask(X, Y, yes).
 
  negative(X, Y) :- xnegative(X, Y), !.
  negative(X, Y) :-
    not(xpositive(X, Y)),
    ask(X, Y, no).
 
  ask(X, Y, yes) :-
    !, write(X, " it ", Y, '\n'),
    readln(Reply),
    frontchar(Reply,  'y', _),
    remember(X, Y, yes).
 
  ask(X, Y, no) :-
    !, write(X, " it ", Y, '\n'),
    readln(Reply),
    frontchar(Reply, 'n', _),
    remember(X, Y, no).
 
  remember(X, Y, yes) :- assertz(xpositive(X,Y)).
  remember(X, Y, no)  :- assertz(xnegative(X,Y)).
 
  clear_facts :- 
    write("\n\nPlease press the space bar to exit\n"),
    retractall(_, dbasedom), readchar(_).
 
  run :-
    mashina_is(X), !,
    write("\nYour mashina may be a (an) ",X),
    nl, nl, clear_facts.
 
  run :-
    write("\nUnable to determine what"),
    write("your animal is.\n\n"), clear_facts.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2012, 21:01
Ответы с готовыми решениями:

Готовые блоки экспертной системы
Есть необходимость создания экспертной системы. Если кто либо обладает уже...

Создание экспертной системы на Guru
Добавлено через 6 минут Всем доброго времени суток. Работаю над научным...

Добавление в базу экспертной системы
Экспертная система. Имеется база животных, заданная в исходнике. Как добавить...

Графический интерфейс для Экспертной системы
Есть экспертная система обнаружение неполадок автомобиля для Turbo Prolog....

Перевод Экспертной системы из Clips to Prolog
Здравствуйте. Вот решил перевести свою ЭС в Prolog. Немного описания: Цель...

4
gradiusalisik
0 / 0 / 0
Регистрация: 19.01.2010
Сообщений: 25
23.03.2012, 23:35  [ТС] #2
более подробно , сказала написать как в скриншоте программу , но я не могу понять как это работает, чтобы написать(
0
Миниатюры
Построение экспертной системы  
gradiusalisik
0 / 0 / 0
Регистрация: 19.01.2010
Сообщений: 25
24.03.2012, 03:02  [ТС] #3
Написад программу , без легковушек работала , вставил их перестала выводить по запросам трамвай к примеру.
Где ошибка, подскажите пожалуйста

Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
database
  yes(string)
  no(string)
      
predicates
  repeat
  run
  mashina_is(string)
  is(string)
  ask(string, char)
  remember(string, char)
  positive(string)
  negative(string)
  xpositive(string)
  xnegative(string)
  delete_all
  
   
clauses
 repeat.
 repeat:- repeat.
 
  mashina_is("avtobus") :- positive("na_benzine"),
                         negative("na_elektri4estve"),
                         negative("imeet_roga"),
                         negative("imeet_relsi"),is("passazhirskiy").
 
  mashina_is("trolleibus") :- negative("na_benzine"),
                         positive("na_elektri4estve"),
                         positive("imeet_roga"),
                         negative("imeet_relsi"),is("passazhirskiy").
 
  mashina_is("tramvay") :- negative("na_benzine"),
                         positive("na_elektri4estve"),
                         positive("imeet_roga"),
                         positive("imeet_relsi"),is("passazhirskiy").
 
 mashina_is("moped") :-  positive("na_benzine"),
                         negative("na_elektri4estve"),
                         positive("moshnost 200 l.s."),is("legkovoy").
 
  mashina_is("motocikl") :- positive("na_benzine"), 
                         negative("na_elektri4estve"),
                         positive("moshnost 100 l.s."),is("legkovoy").
 
  mashina_is("velosiped") :- negative("na_benzine"),
                         negative("na_elektri4estve"),
                         positive("chelove4eskaya sila"),is("legkovoy").
 
 
 
                         
  mashina_is(" neizvestnaya nay4nomu miry...").
 
  is("passazhirsky"):- positive("perevozyat passazhirov"),!;
                       negative("svezhiy vozdux"),
                       positive("imeet dvery"),
                       positive("dvizhenie v salone").
  is("legkovoy"):- positive("svezhiy vozdux"),!;
                   negative("imeet dvery"),
                   negative("dvizhenie v salone").  
        
  positive(X):-xpositive(X),!; xnegative(X),!,fail; ask(X,'y').
  negative(X):-xnegative(X),!; xpositive(X),!,fail; ask(X,'n').
  ask(X,R):-write(X,"  ?  : "),readchar(Reply),write(Reply,"\n"),
            remember(X,Reply),R=Reply.
 
 
  xpositive(X):-yes(X).
  xnegative(X):-no(X).
 
 
  remember(X,'y'):-asserta(yes(X)).
  remember(X,'n'):-assertz(no(X)).
  
 
delete_all:-retract(yes(_)),delete_all.
delete_all:-retract(no(_)),delete_all.
delete_all.
%-----------------------------------------------------------------------------
  run:-delete_all,
       repeat,
       write("NA voprosi otve4at (y-da, n-net).\n"),
       mashina_is(X),
       write("Tish Mashina: ",X,"\n"),
       write("Zavershit raboty programmi (y/n): "),readchar(Z),
       write(Z),nl,
       Z='y'.
0
Грымзик
2477 / 1454 / 34
Регистрация: 14.09.2009
Сообщений: 2,742
24.03.2012, 11:13 #4
У Вас где passazhirskiy, а где passazhirsky.
0
gradiusalisik
0 / 0 / 0
Регистрация: 19.01.2010
Сообщений: 25
24.03.2012, 11:15  [ТС] #5
Благодарю Вас), когда долго сидишь не замечаешь таких ошибок, спасибо большое
0
24.03.2012, 11:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2012, 11:15

Ошибки в экспертной системе
код экспертной системы: /*5.МОЯ ФУТБОЛЬНАЯ КОМАНДА*/ domains s=...

Графический интерфейс к экспертной системе
Подскажите, пожалуйста, как сделать графический интерфейс к экспертной системе,...

Как в экспертной системе обучать базу знаний что если в ней нету знания она сама его добавляла
Как в экспертной системе обучать базу знаний что если в ней нету знания она...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru