-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBartlomiejSieczka.flc
134 lines (112 loc) · 4.08 KB
/
BartlomiejSieczka.flc
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
FUNCTION_BLOCK agent
VAR_INPUT
action : REAL; (* wyt³umaczone ni¿ej *)
previousAction : REAL; (* jw *)
power : REAL; (* nasza si³a od 0 - 1 *)
trail : REAL; (* -1 nie ma, 0 nasz œlad, 1 czyjœ *)
trailDirection : REAL; (* -1 nie ma, inaczej kierunek 0>, 1^, 2<, 3v *)
trailAge : REAL; (* 0 œwie¿y, 1 stary *)
wasHere : REAL; (* jak dawno temu tu byliœmy, 0 dziœ, 1 dawno temu, 2 nigdy *)
turn : REAL; (* która tura *)
itemInRoom : REAL; (* poziom przedmiotu w pokoju 0 - 1 *)
lastMove : REAL; (* ostatni kierunek ruchu *)
END_VAR
VAR_OUTPUT
idea : REAL;
END_VAR
FUZZIFY trail
TERM none := -1;
TERM ours := 0;
TERM theirs := 1;
END_FUZZIFY
FUZZIFY action
TERM moveUp := 0;
TERM moveLeft:= 1;
TERM moveRight := 2;
TERM moveDown := 3;
TERM search := 4;
TERM pickUp := 5;
END_FUZZIFY
FUZZIFY previousAction
TERM moveUp := 0;
TERM moveLeft:= 1;
TERM moveRight := 2;
TERM moveDown := 3;
TERM search := 4;
TERM pickUp := 5;
END_FUZZIFY
FUZZIFY power
TERM nonExistent := (0, 1) (0.2, 0);
TERM average := gauss 0.5 0.25;
TERM excellent := (0.8, 0) (1, 1);
END_FUZZIFY
DEFUZZIFY idea
TERM terrible := trian 0 1 2;
TERM poor := trian 1 2 3;
TERM alright := trian 2 3 4;
TERM good := trian 3 4 5;
TERM excellent := trian 4 5 6;
METHOD : COG;
DEFAULT := 0;
END_DEFUZZIFY
RULEBLOCK toMoveOrNotToMove
AND : MIN;
ACT : MIN;
ACCU : MAX;
RULE 1 : IF action IS moveUp
THEN idea IS alright;
RULE 2 : IF action IS moveLeft
THEN idea IS alright;
RULE 3 : IF action IS moveRight
THEN idea IS alright;
RULE 4 : IF action IS moveDown
THEN idea IS alright;
RULE 5 : IF action IS moveUp AND previousAction IS moveDown
THEN idea IS terrible;
RULE 6 : IF action IS moveLeft AND previousAction IS moveRight
THEN idea IS terrible;
RULE 7 : IF action IS moveRight AND previousAction IS moveLeft
THEN idea IS terrible;
RULE 8 : IF action IS moveDown AND previousAction IS moveUp
THEN idea IS terrible;
RULE 9 : IF action IS moveUp AND trail IS theirs AND power IS excellent
THEN idea IS good;
RULE 10 : IF action IS moveLeft AND trail IS theirs AND power IS excellent
THEN idea IS good;
RULE 11 : IF action IS moveRight AND trail IS theirs AND power IS excellent
THEN idea IS good;
RULE 12 : IF action IS moveDown AND trail IS theirs AND power IS excellent
THEN idea IS good;
RULE 13 : IF action IS moveUp AND trail IS theirs AND power IS average
THEN idea IS poor;
RULE 14 : IF action IS moveLeft AND trail IS theirs AND power IS average
THEN idea IS poor;
RULE 15 : IF action IS moveRight AND trail IS theirs AND power IS average
THEN idea IS poor;
RULE 16 : IF action IS moveDown AND trail IS theirs AND power IS average
THEN idea IS poor;
END_RULEBLOCK
RULEBLOCK toSearchOrNotToSearch
AND : MIN;
ACT : MIN;
ACCU : MAX;
RULE 1 : IF action IS search AND power IS nonExistent
THEN idea IS excellent;
RULE 2 : IF action IS search AND power IS average
THEN idea IS alright;
RULE 3 : IF action IS search AND power IS excellent
THEN idea IS terrible;
RULE 4 : IF action IS pickUp AND power IS nonExistent
THEN idea IS excellent;
RULE 5 : IF action IS pickUp AND power IS average
THEN idea IS alright;
RULE 6 : IF action IS pickUp AND power IS excellent
THEN idea IS terrible;
RULE 7 : IF action IS pickUp AND power IS nonExistent AND trail IS theirs
THEN idea IS excellent;
RULE 8 : IF action IS pickUp AND power IS average AND trail IS theirs
THEN idea IS excellent;
RULE 9 : IF action IS pickUp AND power IS excellent AND trail IS theirs
THEN idea IS good;
END_RULEBLOCK
END_FUNCTION_BLOCK