Migrated some minor improvements
This commit is contained in:
parent
0cd5cec64b
commit
60df0028fb
@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
%
|
%
|
||||||
% $Date: 2010-08-30 18:09:17 +0200 (Mon, 30 Aug 2010) $
|
% $Date: 2010-09-29 13:03:26 +0200 (Wed, 29 Sep 2010) $
|
||||||
% $Revision: 4728 $
|
% $Revision: 4843 $
|
||||||
%
|
%
|
||||||
% This file is part of ProbLog
|
% This file is part of ProbLog
|
||||||
% http://dtai.cs.kuleuven.be/problog
|
% http://dtai.cs.kuleuven.be/problog
|
||||||
@ -290,6 +290,7 @@
|
|||||||
problog_real_kbest/4,
|
problog_real_kbest/4,
|
||||||
op( 550, yfx, :: ),
|
op( 550, yfx, :: ),
|
||||||
op( 550, fx, ?:: ),
|
op( 550, fx, ?:: ),
|
||||||
|
op(1149, yfx, <-- ),
|
||||||
op( 1150, fx, problog_table ),
|
op( 1150, fx, problog_table ),
|
||||||
in_interval/3,
|
in_interval/3,
|
||||||
below/2,
|
below/2,
|
||||||
@ -320,12 +321,15 @@
|
|||||||
:- use_module('problog/sampling').
|
:- use_module('problog/sampling').
|
||||||
:- use_module('problog/intervals').
|
:- use_module('problog/intervals').
|
||||||
:- use_module('problog/mc_DNF_sampling').
|
:- use_module('problog/mc_DNF_sampling').
|
||||||
|
:- catch(use_module('problog/ad_converter'),_,true).
|
||||||
:- catch(use_module('problog/variable_elimination'),_,true).
|
:- catch(use_module('problog/variable_elimination'),_,true).
|
||||||
|
|
||||||
% op attaching probabilities to facts
|
% op attaching probabilities to facts
|
||||||
:- op( 550, yfx, :: ).
|
:- op( 550, yfx, :: ).
|
||||||
:- op( 550, fx, ?:: ).
|
:- op( 550, fx, ?:: ).
|
||||||
|
|
||||||
|
% for annotated disjunctions
|
||||||
|
% :- op(1149, yfx, <-- ).
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
% control predicates on various levels
|
% control predicates on various levels
|
||||||
@ -378,15 +382,10 @@
|
|||||||
% and this module provides the predicate X::Y to iterate over them
|
% and this module provides the predicate X::Y to iterate over them
|
||||||
:- multifile('::'/2).
|
:- multifile('::'/2).
|
||||||
|
|
||||||
|
|
||||||
% directory where problogbdd executable is located
|
% directory where problogbdd executable is located
|
||||||
% automatically set during loading -- assumes it is in same place as this file (problog.yap)
|
% automatically set during loading -- assumes it is in same place as this file (problog.yap)
|
||||||
:- getcwd(PD), set_problog_path(PD).
|
:- getcwd(PD), set_problog_path(PD).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
%%%%%%%%%%%%
|
%%%%%%%%%%%%
|
||||||
% iterative deepening on minimal probabilities (delta, max, kbest):
|
% iterative deepening on minimal probabilities (delta, max, kbest):
|
||||||
% - first threshold (not in log-space as only used to retrieve argument for init_threshold/1, which is also used with user-supplied argument)
|
% - first threshold (not in log-space as only used to retrieve argument for init_threshold/1, which is also used with user-supplied argument)
|
||||||
@ -468,6 +467,14 @@
|
|||||||
|
|
||||||
:- initialization(problog_define_flag(inference, problog_flag_validate_dummy, 'default inference method', exact, inference)).
|
:- initialization(problog_define_flag(inference, problog_flag_validate_dummy, 'default inference method', exact, inference)).
|
||||||
|
|
||||||
|
%%%%%%%%%%%%
|
||||||
|
% Tunable Facts
|
||||||
|
%%%%%%%%%%%%
|
||||||
|
|
||||||
|
:- initialization(problog_define_flag(tunable_fact_start_value,problog_flag_validate_dummy,'How to initialize tunable probabilities',uniform(0.1,0.9),learning_general,flags:learning_prob_init_handler)).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
problog_dir(PD):- problog_path(PD).
|
problog_dir(PD):- problog_path(PD).
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
@ -565,6 +572,9 @@ generate_atoms(N, A):-
|
|||||||
% dynamic predicate problog_predicate(Name,Arity) keeps track of predicates that already have wrapper clause
|
% dynamic predicate problog_predicate(Name,Arity) keeps track of predicates that already have wrapper clause
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
|
term_expansion_intern(A, B, C):-
|
||||||
|
catch(term_expansion_intern_ad(A, B, C), _, false).
|
||||||
|
|
||||||
% converts ?:: prefix to ? :: infix, as handled by other clause
|
% converts ?:: prefix to ? :: infix, as handled by other clause
|
||||||
term_expansion_intern((Annotation::Fact), Module, ExpandedClause) :-
|
term_expansion_intern((Annotation::Fact), Module, ExpandedClause) :-
|
||||||
Annotation == '?',
|
Annotation == '?',
|
||||||
@ -634,7 +644,7 @@ term_expansion_intern(P :: Goal,Module,problog:ProbFact) :-
|
|||||||
->
|
->
|
||||||
(
|
(
|
||||||
assertz(tunable_fact(ID,TrueProb)),
|
assertz(tunable_fact(ID,TrueProb)),
|
||||||
LProb is log(random*0.9+0.05) % set unknown probability randomly in [0.05, 0.95]
|
sample_initial_value_for_tunable_fact(LProb)
|
||||||
);
|
);
|
||||||
(
|
(
|
||||||
ground(P)
|
ground(P)
|
||||||
@ -669,7 +679,34 @@ term_expansion_intern(P :: Goal,Module,problog:ProbFact) :-
|
|||||||
problog_predicate(Name, Arity, ProblogName,Module).
|
problog_predicate(Name, Arity, ProblogName,Module).
|
||||||
|
|
||||||
|
|
||||||
|
sample_initial_value_for_tunable_fact(LogP) :-
|
||||||
|
problog_flag(tunable_fact_start_value,Initializer),
|
||||||
|
|
||||||
|
(
|
||||||
|
Initializer=uniform(Low,High)
|
||||||
|
->
|
||||||
|
(
|
||||||
|
Spread is High-Low,
|
||||||
|
random(Rand),
|
||||||
|
P1 is Rand*Spread+Low,
|
||||||
|
|
||||||
|
% security check, to avoid log(0)
|
||||||
|
(
|
||||||
|
P1>0
|
||||||
|
->
|
||||||
|
P=P1;
|
||||||
|
P=0.5
|
||||||
|
)
|
||||||
|
);
|
||||||
|
(
|
||||||
|
number(Initializer)
|
||||||
|
->
|
||||||
|
P=Initializer;
|
||||||
|
throw(unkown_probability_initializer(Initializer))
|
||||||
|
)
|
||||||
|
),
|
||||||
|
|
||||||
|
LogP is log(P).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -1145,7 +1182,7 @@ get_fact(ID,OutsideTerm) :-
|
|||||||
ProblogTerm =.. [_Functor,ID|Args],
|
ProblogTerm =.. [_Functor,ID|Args],
|
||||||
atomic_concat('problog_',OutsideFunctor,ProblogName),
|
atomic_concat('problog_',OutsideFunctor,ProblogName),
|
||||||
Last is ProblogArity-1,
|
Last is ProblogArity-1,
|
||||||
nth(Last,Args,_LogProb,OutsideArgs), % PM avoid nth/3; use nth0/3 or nth1/3 instead
|
nth(Last,Args,_LogProb,OutsideArgs),
|
||||||
OutsideTerm =.. [OutsideFunctor|OutsideArgs].
|
OutsideTerm =.. [OutsideFunctor|OutsideArgs].
|
||||||
% ID of instance of non-ground fact: get fact from grounding table
|
% ID of instance of non-ground fact: get fact from grounding table
|
||||||
get_fact(ID,OutsideTerm) :-
|
get_fact(ID,OutsideTerm) :-
|
||||||
@ -2696,7 +2733,7 @@ build_trie(Goal, Trie) :-
|
|||||||
throw(error('Flag settings not supported by build_trie/2.'))
|
throw(error('Flag settings not supported by build_trie/2.'))
|
||||||
).
|
).
|
||||||
|
|
||||||
build_trie_supported :- problog_flag(inference,exact). % PM this can easily be written to avoid creating choice-points
|
build_trie_supported :- problog_flag(inference,exact).
|
||||||
build_trie_supported :- problog_flag(inference,low(_)).
|
build_trie_supported :- problog_flag(inference,low(_)).
|
||||||
build_trie_supported :- problog_flag(inference,atleast-_-best).
|
build_trie_supported :- problog_flag(inference,atleast-_-best).
|
||||||
build_trie_supported :- problog_flag(inference,_-best).
|
build_trie_supported :- problog_flag(inference,_-best).
|
||||||
@ -2989,7 +3026,7 @@ write_global_bdd_file_line(I,Max) :-
|
|||||||
).
|
).
|
||||||
|
|
||||||
write_global_bdd_file_query(I,Max) :-
|
write_global_bdd_file_query(I,Max) :-
|
||||||
(I=Max -> % PM shouldn't this be instead I =:= Max ?
|
(I=Max ->
|
||||||
format("L~q~n",[I])
|
format("L~q~n",[I])
|
||||||
;
|
;
|
||||||
format("L~q,",[I]),
|
format("L~q,",[I]),
|
||||||
|
Reference in New Issue
Block a user