1:- module(logicmoo_planner,[load_planner_api/0]). 2
3
4:- style_check(-singleton). 5
6:- use_module(library(prolog_pack)). 7
8:- if( \+ prolog_pack:current_pack(logicmoo_ec)). 9:- add_absolute_search_folder(pack,'../../'). 10:- attach_packs. 11:- initialization(attach_packs). 12:- endif. 13
15:- add_absolute_search_folder(ext,library('../ext/')). 17
18:- if( \+ user:file_search_path(pddl,_) ). 19
20:- add_absolute_search_folder(pddl,library('../test/pddl_tests/')),
21 add_absolute_search_folder(pddl,library('../test/pddl_reader/')),
22 add_absolute_search_folder(pddl,library('../test/uw-yale-pddl/strict-domains/')),
23 add_absolute_search_folder(pddl,library('../test/uw-yale-pddl/domains/')),
24 !. 25
26:- endif. 27
28
29:- module_transparent(export_transparent/1). 30export_transparent(P):-
31 export(P),
32 module_transparent(P).
33
39load_planner_api.
40
41test_all:-test_all(7).
42
43test_all(N):- must_filematch_list(pddl('orig_pddl_parser/test/?*?/domain*.pddl'),RList),RList\=[],!,reverse(RList,List),
44 forall(member(E,List),once(test_domain(E,N))).
45
46test_all(N):-
47 must_filematch(pddl('orig_pddl_parser/test/?*?/domain*.pddl'),_),!,
48 (forall(must_filematch(pddl('orig_pddl_parser/test/?*?/domain*.pddl'),E),
49 once(test_domain(E,N)))).
50
51:- thread_local(t_l:loading_files/0). 52
53test_domain(DP):- t_l:loading_files,!,must(test_domain(DP)).
54test_domain(DP):- test_domain(DP,12).
55
56min_sas(A,B,A):-A =< B,!.
57min_sas(_,A,A).
58
59test_domain(DP,Num):- \+ atom(DP),forall((filematch_smart(DP,FOUND),exists_file(FOUND)),test_domain(FOUND,Num)),!.
60test_domain(DP,Num):- \+ exists_file(DP),!, forall(must_filematch(DP,MATCH),(exists_file(MATCH),test_domain(MATCH,Num))).
61test_domain(DP,Num):-
62 format('~q.~n',[test_domain(DP)]),
63 directory_file_path(D,_,DP),directory_files(D,RList),reverse(RList,ListR),
64 sort(ListR,ListS),length(ListR,PosNum),min_sas(PosNum,Num,MinNum),length(List,MinNum),append(List,_,ListS),!,
65 test_domain_num(DP,List,Num).
66
67test_domain_num(DP,List,Num):-
68 directory_file_path(D,_,DP),
69 forall(member(T,List),ignore((directory_file_path(D,T,TP),exists_file(TP),not(same_file(DP,TP)),
70 planner_solve_files(DP,TP)))).
71
72
73
74
79planner_solve_files(DomainFile, ProblemFile):-
80 forall(must(must_filematch(DomainFile,DomainFile0)),
81 forall(must(must_filematch(ProblemFile,ProblemFile0)),
82 (time(show_call(planner_solve_abs_file(DomainFile0, ProblemFile0)))))),!.
83
84
86planner_solve_abs_file(DomainFile, ProblemFile):-
87 update_changed_files,
88 directory_file_path(_,File,ProblemFile),
89 wdmsg(planner_solve_files(DomainFile, ProblemFile)),
90 planner_solve_abs_file(DomainFile, ProblemFile, File),!.
91
92planner_solve_abs_file(DomainFile, ProblemFile, File):- slow_on(File),!,wdmsg(slow_on(DomainFile, ProblemFile)).
93planner_solve_abs_file(DomainFile, ProblemFile, File):-
94 nop(time((test_solve_files(DomainFile, ProblemFile)))),
95 nop(time(show_call(solve_files_w_ocl(DomainFile, ProblemFile)))),
96 call(time(show_call(solve_files_w_lps(DomainFile, ProblemFile)))),
97 !.
98
99test_solve_files(D,P):- call(call,solve_files,D,P).
100
101test_dir_sas(DirIn):-forall(must_filematch(DirIn,DirInM),test_dir_m(DirInM)).
102test_dir_m(DIR):-
103 working_directory(WAS,WAS),
104 call_cleanup((
105 cd(DIR),
106 wdmsg(test_dir_files_sas(DIR)),
107 108 test_dir_files_sas(DIR)),
109 cd(WAS)).
110
111test_dir_files_sas(PDDLDir,D,P):- filematch_smart(PDDLDir,Dir),
112 directory_file_path(Dir,D,DF),
113 directory_file_path(Dir,P,PF),
114 nop((test_parse_file(DF),test_parse_file(PF))),
115 planner_solve_files(DF,PF),!.
116
117
118test_dir_files_sas(Dir):-
119 test_dir_files_sas(Dir,'p01-domain.pddl','p01.pddl'),
120 test_dir_files_sas(Dir,'p02-domain.pddl','p02.pddl'),
121 test_dir_files_sas(Dir,'p03-domain.pddl','p03.pddl'),
122 test_dir_files_sas(Dir,'p04-domain.pddl','p04.pddl'),
123 test_dir_files_sas(Dir,'p05-domain.pddl','p05.pddl'),
124 test_dir_files_sas(Dir,'p06-domain.pddl','p06.pddl'),
125 test_dir_files_sas(Dir,'p07-domain.pddl','p07.pddl'),
126 test_dir_files_sas(Dir,'p08-domain.pddl','p08.pddl'),
127 test_dir_files_sas(Dir,'p09-domain.pddl','p09.pddl'),
128 test_dir_files_sas(Dir,'p10-domain.pddl','p10.pddl'),
129 test_dir_files_sas(Dir,'p11-domain.pddl','p11.pddl'),
130 test_dir_files_sas(Dir,'p12-domain.pddl','p12.pddl'),
131 test_dir_files_sas(Dir,'p13-domain.pddl','p13.pddl'),
132 test_dir_files_sas(Dir,'p14-domain.pddl','p14.pddl'),
133 test_dir_files_sas(Dir,'p15-domain.pddl','p15.pddl'),
134 test_dir_files_sas(Dir,'p16-domain.pddl','p16.pddl'),
135 test_dir_files_sas(Dir,'p17-domain.pddl','p17.pddl'),
136 test_dir_files_sas(Dir,'p18-domain.pddl','p18.pddl'),
137 test_dir_files_sas(Dir,'p19-domain.pddl','p19.pddl'),
138 test_dir_files_sas(Dir,'p20-domain.pddl','p20.pddl'),
139 test_dir_files_sas(Dir,'p21-domain.pddl','p21.pddl'),
140 test_dir_files_sas(Dir,'p22-domain.pddl','p22.pddl'),
141 test_dir_files_sas(Dir,'p23-domain.pddl','p23.pddl'),
142 test_dir_files_sas(Dir,'p24-domain.pddl','p24.pddl'),
143 test_dir_files_sas(Dir,'p25-domain.pddl','p25.pddl'),
144 test_dir_files_sas(Dir,'p26-domain.pddl','p26.pddl'),
145 test_dir_files_sas(Dir,'p27-domain.pddl','p27.pddl'),
146 test_dir_files_sas(Dir,'p28-domain.pddl','p28.pddl'),
147 test_dir_files_sas(Dir,'p29-domain.pddl','p29.pddl'),
148 test_dir_files_sas(Dir,'p30-domain.pddl','p30.pddl').
149
150twhy
151 :- show_call(record_time(forall(between(1,1000000,_),forall(get_action_bb(_),true)),_Time1)),
152 show_call(record_time(forall(between(1,1000000,_),forall(actn(_,_),true)),_Time2)).
153
154slow_on('blocks-07-0.pddl').
155slow_on('blocks-08-0.pddl').
156slow_on('blocks-09-0.pddl').
157slow_on('hanoi7.pddl').
158slow_on('hanoi8.pddl').
159
160test_blocks:- time(notrace(test_blocks0)).
161
162test_blocks0:- planner_solve_files(pddl('orig_pddl_parser/test/blocks/domain-blocks.pddl'),
163 pddl('orig_pddl_parser/test/blocks/blocks-03-0.pddl')), fail.
164test_blocks0:- fail, must_filematch_list(pddl('orig_pddl_parser/test/blocks/domain*.pddl'),RList),reverse(RList,List),
165 forall(member(E,List),once(test_domain(E))),fail.
166test_blocks0:- must_filematch_list(pddl('orig_pddl_parser/test/?*?/domain*.pddl'),RList),reverse(RList,List),
167 forall(member(E,List),once(test_domain(E))),fail.
168test_blocks0:- !.
169
170:- dynamic(pddl_test_unit/1). 171:- multifile(pddl_test_unit/1). 172:- discontiguous(pddl_test_unit/1). 173pddl_test_unit(blocks) :- test_blocks.
174
175:- fixup_exports. 176
177pddl_test_unit(test_sas):-
178 test_dir_sas('ipc2008-no-cybersec/seq-sat/elevators-strips/'),!, 179 !.
180
181pddl_test_unit(test_sas_sanity):-
182 test_dir_sas('ipc2008-no-cybersec/seq-opt/openstacks-strips/'), 183 test_dir_sas('ipc2008-no-cybersec/seq-opt/transport-strips/'), 184 test_dir_sas('ipc2008-no-cybersec/netben-opt/elevators-strips/'), 185 !.
186
187
188pddl_test_unit(test_rest):-
189 test_dir_sas('ipc2008-no-cybersec/seq-opt/parcprinter-strips/'),
190 test_dir_sas('ipc2008-no-cybersec/seq-opt/pegsol-strips/'),
191 test_dir_sas('ipc2008-no-cybersec/seq-opt/scanalyzer-strips/'),
192 test_dir_sas('ipc2008-no-cybersec/seq-opt/sokoban-strips/'), 193
194 test_dir_sas('ipc2008-no-cybersec/seq-opt/woodworking-strips/'),
195
196
197 expand_file_name('ipc2008-no-cybersec/?*?/*/',O),
198 forall(member(E,O),test_dir_sas(E)).
199
200
201pddl_test_unit(frolog) :- test_dir_files_sas('frolog','p02-domain.pddl','p02.pddl'),
202 test_dir_files_sas('frolog','tPddlAgent01-domain.pddl','tPddlAgent01.pddl'),
203 !. 204
205pddl_test_unit(mystery) :- planner_solve_files(pddl('benchmarks/mystery/domain.pddl'),pddl('benchmarks/mystery/prob01.pddl')).
206pddl_test_unit(driverlog) :- test_domain(pddl('benchmarks/driverlog/domain.pddl'),4).
207pddl_test_unit(woac) :- planner_solve_files(pddl('hsp2_1_0_pddl/parcprinter-strips/p01-domain-woac.pddl'),
208 pddl('hsp2_1_0_pddl/parcprinter-strips/p01-woac.pddl')).
209
210pddl_test_unit(chameleonWorld) :- test_domain(pddl('../domains_ocl/chameleonWorld/domain*')).
211
217
219
221pddl_test_unit(elearning) :- test_domain(pddl('elearning/domain.pddl')).
222
223pddl_test_unit(sat11) :- planner_solve_files(pddl('benchmarks/nomystery-sat11-strips/domain.pddl'),pddl('benchmarks/nomystery-sat11-strips/p01.pddl')).
224pddl_test_unit(sat11_2) :- test_domain(pddl('benchmarks/nomystery-sat11-strips/domain.pddl')).
225pddl_test_unit(toasterWorldv2) :- test_domain(pddl('../domains_ocl/toasterWorldv2/domain*')).
226pddl_test_unit(rover) :- forall(must_filematch(pddl('rover/?*?/?*domain*.*'),E),once(test_domain(E))).
227pddl_test_unit(hsp_pddl) :- forall(must_filematch(pddl('hsp-planners-master/?*?/pddl/?*?/?*domain*.*'),E),once(test_domain(E))).
228pddl_test_unit(hsp_examples) :- forall(must_filematch(pddl('hsp-planners-master/?*?/examples/?*?/?*domain*.*'),E),once(test_domain(E))).
229pddl_test_unit(primaryobjects_strips) :- forall(must_filematch(pddl('primaryobjects_strips/?*?/?*domain*.*'),E),once(test_domain(E))).
230pddl_test_unit(monkey) :- planner_solve_files(pddl('hakank-pddl/monkey-domain.pddl'),pddl('hakank-pddl/monkey-prob01.pddl')).
231
232:- fixup_exports. 233
234:-thread_local(t_l:hyhtn_solve/1). 236
237
238:- flag(time_used,_,0). 239:- flag(time_used_other,_,0). 240
241:- if(gethostname(c3po);gethostname(ubuntu);gethostname(titan)). 245:- endif. 248
249
250
251
252:- fixup_exports.