From 9378622d4257f12242379786d81a611168ff4940 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADtor=20Santos=20Costa?= Date: Sat, 9 Mar 2019 06:50:09 +0000 Subject: [PATCH] current_prdicate/2 r Please enter the commit message for your changes. Lines starting --- packages/ProbLog/problog.yap | 7 +- packages/ProbLog/problog_lbfgs.yap | 105 +++++++++++++++-------------- pl/preds.yap | 33 +++++---- 3 files changed, 77 insertions(+), 68 deletions(-) diff --git a/packages/ProbLog/problog.yap b/packages/ProbLog/problog.yap index b2756df63..23e527daa 100644 --- a/packages/ProbLog/problog.yap +++ b/packages/ProbLog/problog.yap @@ -521,7 +521,12 @@ every 5th iteration only. atom_concat(PD0, '../../bin', PD), set_problog_path(PD). -:- PD = '/usr/local/bin', +:- yap_flag(executable, Bin), + file_directory_name(Bin, PD), + set_problog_path(PD). + + +:- PD = '/usxor/local/bin', set_problog_path(PD). diff --git a/packages/ProbLog/problog_lbfgs.yap b/packages/ProbLog/problog_lbfgs.yap index a07140187..3dc2f541a 100644 --- a/packages/ProbLog/problog_lbfgs.yap +++ b/packages/ProbLog/problog_lbfgs.yap @@ -507,7 +507,7 @@ init_learning :- %======================================================================== %= Updates all values of query_probability/2 and query_gradient/4 %= should be called always before these predicates are accessed -%= if the old values are still valid, nothing happens +%= if the old values are still valid, nothing happensv %======================================================================== update_values :- @@ -518,8 +518,6 @@ update_values :- retractall(query_gradient_intern(_,_,_,_)). - - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Check, if continuous facts are used. % if yes, switch to problog_exact @@ -573,7 +571,7 @@ empty_bdd_directory. init_queries :- empty_bdd_directory, format_learning(2,'Build BDDs for examples~n',[]), - forall(user:test_example(ID,Query,_Prob,_),init_one_query(ID,Query,test)), + forall(user:test_example(ID,Query,_Prob,_),init_one_query(ID,Query,test)), forall(user:example(ID,Query,_Prob,_),init_one_query(ID,Query,training)). bdd_input_file(Filename) :- @@ -581,63 +579,70 @@ bdd_input_file(Filename) :- concat_path_with_filename(Dir,'input.txt',Filename). init_one_query(QueryID,Query,_Type) :- -% format_learning(3,' ~q example ~q: ~q~n',[Type,QueryID,Query]), + % format_learning(3,' ~q example ~q: ~q~n',[Type,QueryID,Query]), %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % if BDD file does not exist, call ProbLog %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - ( - recorded(QueryID, _, _) - -> - format_learning(3,' Reuse existing BDD ~q~n~n',[QueryID]) - ; b_setval(problog_required_keep_ground_ids,false), (QueryID mod 100 =:= 0 -> writeln(QueryID) ; true), - problog_flag(init_method,(Query,N,Bdd,graph2bdd(X,Y,N,Bdd))), - Query =.. [_,X,Y] - -> - Bdd = bdd(Dir, Tree, MapList), - ( - graph2bdd(X,Y,N,Bdd) - -> + Query =.. [_|Args], + % problog_flag(init_method,(Query,N,Bdd,M:graph2bdd(Args,N,Bdd))), + Bdd = bdd(Dir, Tree, + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + u3777777777/....777;;;;;;;;;;;;;;;;;;;666666666MapList), + user:graph2bdd(Args,N,Bdd), rb_new(H0), maplist_to_hash(MapList, H0, Hash), - tree_to_grad(Tree, Hash, [], Grad) + tree_to_grad(Tree, Hash, [], Grad), % ; % Bdd = bdd(-1,[],[]), % Grad=[] - ), write('.'), - recordz(QueryID,bdd(Dir, Grad, MapList),_) - ; - problog_flag(init_method,(Query,NOf,Bdd,problog_kbest_as_bdd(Call,NOf,Bdd))) -> - b_setval(problog_required_keep_ground_ids,false), - rb_new(H0), - strip_module(Call,_,Goal), - !, - Bdd = bdd(Dir, Tree, MapList), -% trace, - problog:problog_kbest_as_bdd(Goal,NOf,Bdd), - maplist_to_hash(MapList, H0, Hash), - Tree \= [], - %put_code(0'.), - tree_to_grad(Tree, Hash, [], Grad), - recordz(QueryID,bdd(Dir, Grad, MapList),_) - ; - problog_flag(init_method,(Query,NOf,Bdd,Call)) -> - b_setval(problog_required_keep_ground_ids,false), - rb_new(H0), - Bdd = bdd(Dir, Tree, MapList), -% trace, - problog:Call, - maplist_to_hash(MapList, H0, Hash), - Tree \= [], - %put_code(0'.), - tree_to_grad(Tree, Hash, [], Grad), - recordz(QueryID,bdd(Dir, Grad, MapList),_) - ). - - + recordz(QueryID,bdd(Dir, Grad, MapList),_). %======================================================================== @@ -1010,7 +1015,7 @@ user:progress(FX,X,_G,X_Norm,G_Norm,Step,_N,_Iteration,Ls,0) :- %======================================================================== init_flags :- - prolog_file_name(queries,Queries_Folder), % get absolute file name for './queries' +% prolog_file_name(queries,Queries_Folder), % get absolute file name for './queries' prolog_file_name(output,Output_Folder), % get absolute file name for './output' problog_define_flag(bdd_directory, problog_flag_validate_directory, 'directory for BDD scripts', Queries_Folder,learning_general), problog_define_flag(output_directory, problog_flag_validate_directory, 'directory for logfiles etc', Output_Folder,learning_general,flags:learning_output_dir_handler), diff --git a/pl/preds.yap b/pl/preds.yap index ecc359224..dae99f594 100644 --- a/pl/preds.yap +++ b/pl/preds.yap @@ -473,27 +473,26 @@ predicate_erased_statistics(P0,NCls,Sz,ISz) :- Defines the relation: _P_ is a currently defined predicate whose name is the atom _A_. */ -current_predicate(A,T0) :- - '$yap_strip_module'(T0, M, T), - ( var(M) - -> - '$all_current_modules'(M) - ; - true - ), - (nonvar(T) -> functor(T, A, _) ; true ), +current_predicate(A0,T0) :- + + ( nonvar(T0) -> '$yap_strip_module'(T0, M, T) ; T0 = T ), + ( nonvar(A0) -> '$yap_strip_module'(A0, MA0, A) ; A0 = A ), + M = MA0, ( - '$current_predicate'(A,M, T, user) - ; - (nonvar(T) + var(M) -> - '$imported_predicate'(M:T, M1:T1) + true ; - '$imported_predicate'(M:T, M1:T1) + '$all_current_modules'(M) ), - functor(T1, A, _), - \+ '$is_system_predicate'(T1,M1) - ). + % M is bound + ( + '$current_predicate'(A,M,T,user) + ; + '$imported_predicate'(M:T, M1T1), M1T1 \= M:T + ), + functor(T, A, _). + /** @pred system_predicate( ?_P_ )