1:- ['../../data/complete caviar/appearance.prolog']. 2:- ['../../data/complete caviar/movementB.prolog']. 3:- ['../../data/complete caviar/list-of-ids.prolog']. 4
5:- ['../../CE patterns/compiled_caviar_CE_patterns.prolog']. 6
13
14continuousER(TimesFile, InputFile, WM, Step, LastTime) :-
15 open(TimesFile, write, TimesStream),
16 open(InputFile, write, InputStream),
17 initialiseRecognition(ordered, preprocessing, 40),
18 updateManySDE(0, WM), 19 WMPlus1 is WM+1,
20 21 22 eventRecognition(WM, WMPlus1),
23 CurrentTime is WM+Step,
24 updateManySDE(WM, CurrentTime),
25 write('ER: '), write(CurrentTime), write(WM), nl,
26 statistics(cputime, [S1,T1]),
27 eventRecognition(CurrentTime, WM),
28 findall((F=V,L), (outputEntity(F=V),holdsFor(F=V,L)), CC),
29 statistics(cputime, [S2,T2]), T is T2-T1, S is S2-S1, 30 write(TimesStream, S),
31 NewCurrentTime is CurrentTime+Step,
32 findall((A,B), happensAtIE(A,B), SDEList),
33 length(SDEList, SDEL),
34 findall((A,B), holdsAtIE(A,B), InputList),
35 length(InputList, InputL),
36 Input is SDEL+InputL,
37 write(InputStream, Input),
38 querying(TimesStream, InputStream, WM, Step, NewCurrentTime, LastTime, [S], WorstCase, [Input], InputSum),
39 40 sum_list(WorstCase, Sum),
41 length(WorstCase, L),
42 AvgTime is Sum/L,
43 nl(TimesStream), write(TimesStream, AvgTime),
44 45 max_list(WorstCase, Max),
46 nl(TimesStream), write(TimesStream, Max),
47 48 sum_list(InputSum, ISum),
49 AvgInput is ISum/L,
50 nl(InputStream), write(InputStream, AvgInput),
51 close(TimesStream),
52 close(InputStream), !.
53
54querying(_TimesStream, _InputStream, _WM, _Step, CurrentTime, LastTime, WorstCase, WorstCase, InputSum, InputSum) :-
55 CurrentTime >= LastTime, !.
56
57querying(TimesStream, InputStream, WM, Step, CurrentTime, LastTime, InitWorstCase, WorstCase, InitInput, InputSum) :-
58 OldCurrentTime is CurrentTime-Step,
59 updateManySDE(OldCurrentTime, CurrentTime),
60 Diff is CurrentTime-WM,
61 write('ER: '),write(CurrentTime),write(' '),write(WM),nl,
62 statistics(cputime,[S1,T1]),
63 eventRecognition(CurrentTime, WM),
64 findall((F=V,L), (outputEntity(F=V),holdsFor(F=V,L)), CC),
65 statistics(cputime,[S2,T2]),
66 T is T2-T1, S is S2-S1, 67 writeResult(S, TimesStream),
68 NewCurrentTime is CurrentTime+Step,
69 findall((A,B), happensAtIE(A,B), SDEList),
70 length(SDEList, SDEL),
71 findall((A,B), holdsAtIE(A,B),InputList),
72 length(InputList, InputL),
73 Input is SDEL+InputL,
74 writeResult(Input, InputStream),
75 querying(TimesStream, InputStream, WM, Step, NewCurrentTime, LastTime, [S|InitWorstCase], WorstCase, [Input|InitInput], InputSum).
76
80
81writeResult(Time, Stream):-
82 write(Stream,'+'), write(Stream,Time).
83
84
88
89updateSDE(Start, End) :-
90 findall(Start, updateSDE(movement, Start, End), _),
91 findall(Start, updateSDE(appearance, Start, End), _).
92
93
94updateManySDE(Start, End) :-
95 Diff is End-Start,
96 Diff =< 1000,
97 !,
98 updateSDE(Start, End).
99
100updateManySDE(Start, End) :-
101 Diff is End-Start,
102 Diff > 1000,
103 NewStart is Start + 1000,
104 updateSDE(Start, NewStart),
105 updateManySDE(NewStart, End)