-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest.flc
104 lines (86 loc) · 2.77 KB
/
test.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
FUNCTION_BLOCK agent
VAR_INPUT
action : REAL; (* wyt³umaczone ni¿ej *)
previousAction : REAL; (* jw *)
power : REAL; (* nasza si³a od 0 - 1 *)
wasHere : REAL; (* 0 - raczej nie, 1 - tak *)
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 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;
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;
END_RULEBLOCK
END_FUNCTION_BLOCK