Use tabs instead of spaces for consistency
This commit is contained in:
parent
d03ea1509e
commit
2738c0fb56
@ -5,34 +5,34 @@
|
|||||||
********************************************************/
|
********************************************************/
|
||||||
|
|
||||||
:- module(clpbn_horus,
|
:- module(clpbn_horus,
|
||||||
[set_solver/1,
|
[set_solver/1,
|
||||||
set_horus_flag/1,
|
set_horus_flag/1,
|
||||||
cpp_create_lifted_network/3,
|
cpp_create_lifted_network/3,
|
||||||
cpp_create_ground_network/4,
|
cpp_create_ground_network/4,
|
||||||
cpp_set_parfactors_params/2,
|
cpp_set_parfactors_params/2,
|
||||||
cpp_set_factors_params/2,
|
cpp_set_factors_params/2,
|
||||||
cpp_run_lifted_solver/3,
|
cpp_run_lifted_solver/3,
|
||||||
cpp_run_ground_solver/3,
|
cpp_run_ground_solver/3,
|
||||||
cpp_set_vars_information/2,
|
cpp_set_vars_information/2,
|
||||||
cpp_set_horus_flag/2,
|
cpp_set_horus_flag/2,
|
||||||
cpp_free_lifted_network/1,
|
cpp_free_lifted_network/1,
|
||||||
cpp_free_ground_network/1
|
cpp_free_ground_network/1
|
||||||
]).
|
]).
|
||||||
|
|
||||||
:- use_module(library(clpbn),
|
:- use_module(library(clpbn),
|
||||||
[set_clpbn_flag/2]).
|
[set_clpbn_flag/2]).
|
||||||
|
|
||||||
|
|
||||||
patch_things_up :-
|
patch_things_up :-
|
||||||
assert_static(clpbn_horus:cpp_set_horus_flag(_,_)).
|
assert_static(clpbn_horus:cpp_set_horus_flag(_,_)).
|
||||||
|
|
||||||
|
|
||||||
warning :-
|
warning :-
|
||||||
format(user_error,"Horus library not installed: cannot use bp, fove~n.",[]).
|
format(user_error,"Horus library not installed: cannot use bp, fove~n.",[]).
|
||||||
|
|
||||||
|
|
||||||
:- catch(load_foreign_files([horus], [], init_predicates), _, patch_things_up)
|
:- catch(load_foreign_files([horus], [], init_predicates), _, patch_things_up)
|
||||||
-> true ; warning.
|
-> true ; warning.
|
||||||
|
|
||||||
|
|
||||||
set_solver(ve) :- !, set_clpbn_flag(solver,ve).
|
set_solver(ve) :- !, set_clpbn_flag(solver,ve).
|
||||||
|
@ -1,46 +1,46 @@
|
|||||||
/*******************************************************
|
/*******************************************************
|
||||||
|
|
||||||
Interface to Horus Ground Solvers. Used by:
|
Interface to Horus Ground Solvers. Used by:
|
||||||
- Variable Elimination
|
- Variable Elimination
|
||||||
- Belief Propagation
|
- Belief Propagation
|
||||||
- Counting Belief Propagation
|
- Counting Belief Propagation
|
||||||
|
|
||||||
********************************************************/
|
********************************************************/
|
||||||
|
|
||||||
:- module(clpbn_horus_ground,
|
:- module(clpbn_horus_ground,
|
||||||
[call_horus_ground_solver/6,
|
[call_horus_ground_solver/6,
|
||||||
check_if_horus_ground_solver_done/1,
|
check_if_horus_ground_solver_done/1,
|
||||||
init_horus_ground_solver/5,
|
init_horus_ground_solver/5,
|
||||||
run_horus_ground_solver/3,
|
run_horus_ground_solver/3,
|
||||||
finalize_horus_ground_solver/1
|
finalize_horus_ground_solver/1
|
||||||
]).
|
]).
|
||||||
|
|
||||||
:- use_module(horus,
|
:- use_module(horus,
|
||||||
[cpp_create_ground_network/4,
|
[cpp_create_ground_network/4,
|
||||||
cpp_set_factors_params/2,
|
cpp_set_factors_params/2,
|
||||||
cpp_run_ground_solver/3,
|
cpp_run_ground_solver/3,
|
||||||
cpp_set_vars_information/2,
|
cpp_set_vars_information/2,
|
||||||
cpp_free_ground_network/1,
|
cpp_free_ground_network/1,
|
||||||
set_solver/1
|
set_solver/1
|
||||||
]).
|
]).
|
||||||
|
|
||||||
:- use_module(library('clpbn/dists'),
|
:- use_module(library('clpbn/dists'),
|
||||||
[dist/4,
|
[dist/4,
|
||||||
get_dist_domain/2,
|
get_dist_domain/2,
|
||||||
get_dist_domain_size/2,
|
get_dist_domain_size/2,
|
||||||
get_dist_params/2
|
get_dist_params/2
|
||||||
]).
|
]).
|
||||||
|
|
||||||
:- use_module(library('clpbn/display'),
|
:- use_module(library('clpbn/display'),
|
||||||
[clpbn_bind_vals/3]).
|
[clpbn_bind_vals/3]).
|
||||||
|
|
||||||
:- use_module(library('clpbn/numbers')).
|
:- use_module(library('clpbn/numbers')).
|
||||||
|
|
||||||
:- use_module(library(charsio),
|
:- use_module(library(charsio),
|
||||||
[term_to_atom/2]).
|
[term_to_atom/2]).
|
||||||
|
|
||||||
:- use_module(library(pfl),
|
:- use_module(library(pfl),
|
||||||
[skolem/2]).
|
[skolem/2]).
|
||||||
|
|
||||||
:- use_module(library(maplist)).
|
:- use_module(library(maplist)).
|
||||||
|
|
||||||
@ -52,32 +52,32 @@
|
|||||||
|
|
||||||
|
|
||||||
call_horus_ground_solver(QueryVars, QueryKeys, AllKeys, Factors, Evidence, Output) :-
|
call_horus_ground_solver(QueryVars, QueryKeys, AllKeys, Factors, Evidence, Output) :-
|
||||||
init_horus_ground_solver(QueryKeys, AllKeys, Factors, Evidence, State),
|
init_horus_ground_solver(QueryKeys, AllKeys, Factors, Evidence, State),
|
||||||
run_horus_ground_solver([QueryKeys], Solutions, State),
|
run_horus_ground_solver([QueryKeys], Solutions, State),
|
||||||
clpbn_bind_vals([QueryVars], Solutions, Output),
|
clpbn_bind_vals([QueryVars], Solutions, Output),
|
||||||
finalize_horus_ground_solver(State).
|
finalize_horus_ground_solver(State).
|
||||||
|
|
||||||
|
|
||||||
run_horus_ground_solver(QueryKeys, Solutions, state(Network,Hash,Id)) :-
|
run_horus_ground_solver(QueryKeys, Solutions, state(Network,Hash,Id)) :-
|
||||||
%get_dists_parameters(DistIds, DistsParams),
|
%get_dists_parameters(DistIds, DistsParams),
|
||||||
%cpp_set_factors_params(Network, DistsParams),
|
%cpp_set_factors_params(Network, DistsParams),
|
||||||
lists_of_keys_to_ids(QueryKeys, QueryIds, Hash, _, Id, _),
|
lists_of_keys_to_ids(QueryKeys, QueryIds, Hash, _, Id, _),
|
||||||
cpp_run_ground_solver(Network, QueryIds, Solutions).
|
cpp_run_ground_solver(Network, QueryIds, Solutions).
|
||||||
|
|
||||||
|
|
||||||
init_horus_ground_solver(QueryKeys, AllKeys, Factors, Evidence, state(Network,Hash4,Id4)) :-
|
init_horus_ground_solver(QueryKeys, AllKeys, Factors, Evidence, state(Network,Hash4,Id4)) :-
|
||||||
get_factors_type(Factors, Type),
|
get_factors_type(Factors, Type),
|
||||||
keys_to_numbers(AllKeys, Factors, Evidence, Hash4, Id4, FactorIds, EvidenceIds),
|
keys_to_numbers(AllKeys, Factors, Evidence, Hash4, Id4, FactorIds, EvidenceIds),
|
||||||
cpp_create_ground_network(Type, FactorIds, EvidenceIds, Network),
|
cpp_create_ground_network(Type, FactorIds, EvidenceIds, Network),
|
||||||
%writeln(network:(Type, FactorIds, EvidenceIds, Network)), writeln(''),
|
%writeln(network:(Type, FactorIds, EvidenceIds, Network)), writeln(''),
|
||||||
maplist(get_var_information, AllKeys, StatesNames),
|
maplist(get_var_information, AllKeys, StatesNames),
|
||||||
maplist(term_to_atom, AllKeys, KeysAtoms),
|
maplist(term_to_atom, AllKeys, KeysAtoms),
|
||||||
cpp_set_vars_information(KeysAtoms, StatesNames).
|
cpp_set_vars_information(KeysAtoms, StatesNames).
|
||||||
|
|
||||||
|
|
||||||
% TODO this is not beeing called!
|
% TODO this is not beeing called!
|
||||||
finalize_horus_ground_solver(state(Network,_Hash,_Id)) :-
|
finalize_horus_ground_solver(state(Network,_Hash,_Id)) :-
|
||||||
cpp_free_ground_network(Network).
|
cpp_free_ground_network(Network).
|
||||||
|
|
||||||
|
|
||||||
get_factors_type([f(bayes, _, _)|_], bayes) :- ! .
|
get_factors_type([f(bayes, _, _)|_], bayes) :- ! .
|
||||||
@ -85,13 +85,13 @@ get_factors_type([f(markov, _, _)|_], markov) :- ! .
|
|||||||
|
|
||||||
|
|
||||||
get_var_information(_:Key, Domain) :- !,
|
get_var_information(_:Key, Domain) :- !,
|
||||||
skolem(Key, Domain).
|
skolem(Key, Domain).
|
||||||
get_var_information(Key, Domain) :-
|
get_var_information(Key, Domain) :-
|
||||||
skolem(Key, Domain).
|
skolem(Key, Domain).
|
||||||
|
|
||||||
|
|
||||||
%get_dists_parameters([],[]).
|
%get_dists_parameters([],[]).
|
||||||
%get_dists_parameters([Id|Ids], [dist(Id, Params)|DistsInfo]) :-
|
%get_dists_parameters([Id|Ids], [dist(Id, Params)|DistsInfo]) :-
|
||||||
% get_dist_params(Id, Params),
|
% get_dist_params(Id, Params),
|
||||||
% get_dists_parameters(Ids, DistsInfo).
|
% get_dists_parameters(Ids, DistsInfo).
|
||||||
|
|
||||||
|
@ -1,67 +1,67 @@
|
|||||||
/*******************************************************
|
/*******************************************************
|
||||||
|
|
||||||
Interface to Horus Lifted Solvers. Used by:
|
Interface to Horus Lifted Solvers. Used by:
|
||||||
- Generalized Counting First-Order Variable Elimination (GC-FOVE)
|
- Generalized Counting First-Order Variable Elimination (GC-FOVE)
|
||||||
- Lifted First-Order Belief Propagation
|
- Lifted First-Order Belief Propagation
|
||||||
- Lifted First-Order Knowledge Compilation
|
- Lifted First-Order Knowledge Compilation
|
||||||
|
|
||||||
********************************************************/
|
********************************************************/
|
||||||
|
|
||||||
:- module(clpbn_horus_lifted,
|
:- module(clpbn_horus_lifted,
|
||||||
[call_horus_lifted_solver/3,
|
[call_horus_lifted_solver/3,
|
||||||
check_if_horus_lifted_solver_done/1,
|
check_if_horus_lifted_solver_done/1,
|
||||||
init_horus_lifted_solver/4,
|
init_horus_lifted_solver/4,
|
||||||
run_horus_lifted_solver/3,
|
run_horus_lifted_solver/3,
|
||||||
finalize_horus_lifted_solver/1
|
finalize_horus_lifted_solver/1
|
||||||
]).
|
]).
|
||||||
|
|
||||||
:- use_module(horus,
|
:- use_module(horus,
|
||||||
[cpp_create_lifted_network/3,
|
[cpp_create_lifted_network/3,
|
||||||
cpp_set_parfactors_params/2,
|
cpp_set_parfactors_params/2,
|
||||||
cpp_run_lifted_solver/3,
|
cpp_run_lifted_solver/3,
|
||||||
cpp_free_lifted_network/1
|
cpp_free_lifted_network/1
|
||||||
]).
|
]).
|
||||||
|
|
||||||
:- use_module(library('clpbn/display'),
|
:- use_module(library('clpbn/display'),
|
||||||
[clpbn_bind_vals/3]).
|
[clpbn_bind_vals/3]).
|
||||||
|
|
||||||
:- use_module(library('clpbn/dists'),
|
:- use_module(library('clpbn/dists'),
|
||||||
[get_dist_params/2]).
|
[get_dist_params/2]).
|
||||||
|
|
||||||
:- use_module(library(pfl),
|
:- use_module(library(pfl),
|
||||||
[factor/6,
|
[factor/6,
|
||||||
skolem/2,
|
skolem/2,
|
||||||
get_pfl_parameters/2
|
get_pfl_parameters/2
|
||||||
]).
|
]).
|
||||||
|
|
||||||
|
|
||||||
call_horus_lifted_solver(QueryVars, AllVars, Output) :-
|
call_horus_lifted_solver(QueryVars, AllVars, Output) :-
|
||||||
init_horus_lifted_solver(_, AllVars, _, State),
|
init_horus_lifted_solver(_, AllVars, _, State),
|
||||||
run_horus_lifted_solver(QueryVars, Solutions, State),
|
run_horus_lifted_solver(QueryVars, Solutions, State),
|
||||||
clpbn_bind_vals(QueryVars, Solutions, Output),
|
clpbn_bind_vals(QueryVars, Solutions, Output),
|
||||||
finalize_horus_lifted_solver(State).
|
finalize_horus_lifted_solver(State).
|
||||||
|
|
||||||
|
|
||||||
init_horus_lifted_solver(_, AllVars, _, state(ParfactorList, DistIds)) :-
|
init_horus_lifted_solver(_, AllVars, _, state(ParfactorList, DistIds)) :-
|
||||||
get_parfactors(Parfactors),
|
get_parfactors(Parfactors),
|
||||||
get_dist_ids(Parfactors, DistIds0),
|
get_dist_ids(Parfactors, DistIds0),
|
||||||
sort(DistIds0, DistIds),
|
sort(DistIds0, DistIds),
|
||||||
get_observed_vars(AllVars, ObservedVars),
|
get_observed_vars(AllVars, ObservedVars),
|
||||||
%writeln(parfactors:Parfactors:'\n'),
|
%writeln(parfactors:Parfactors:'\n'),
|
||||||
%writeln(evidence:ObservedVars:'\n'),
|
%writeln(evidence:ObservedVars:'\n'),
|
||||||
cpp_create_lifted_network(Parfactors, ObservedVars, ParfactorList).
|
cpp_create_lifted_network(Parfactors, ObservedVars, ParfactorList).
|
||||||
|
|
||||||
|
|
||||||
run_horus_lifted_solver(QueryVars, Solutions, state(ParfactorList, DistIds)) :-
|
run_horus_lifted_solver(QueryVars, Solutions, state(ParfactorList, DistIds)) :-
|
||||||
get_query_keys(QueryVars, QueryKeys),
|
get_query_keys(QueryVars, QueryKeys),
|
||||||
get_dists_parameters(DistIds, DistsParams),
|
get_dists_parameters(DistIds, DistsParams),
|
||||||
%writeln(dists:DistsParams), writeln(''),
|
%writeln(dists:DistsParams), writeln(''),
|
||||||
cpp_set_parfactors_params(ParfactorList, DistsParams),
|
cpp_set_parfactors_params(ParfactorList, DistsParams),
|
||||||
cpp_run_lifted_solver(ParfactorList, QueryKeys, Solutions).
|
cpp_run_lifted_solver(ParfactorList, QueryKeys, Solutions).
|
||||||
|
|
||||||
|
|
||||||
finalize_horus_lifted_solver(state(ParfactorList, _)) :-
|
finalize_horus_lifted_solver(state(ParfactorList, _)) :-
|
||||||
cpp_free_lifted_network(ParfactorList).
|
cpp_free_lifted_network(ParfactorList).
|
||||||
|
|
||||||
|
|
||||||
:- table get_parfactors/1.
|
:- table get_parfactors/1.
|
||||||
@ -77,72 +77,73 @@ finalize_horus_lifted_solver(state(ParfactorList, _)) :-
|
|||||||
% Tuples: ground bindings for variables in Vs, of the form [fv(x,y)]
|
% Tuples: ground bindings for variables in Vs, of the form [fv(x,y)]
|
||||||
%
|
%
|
||||||
get_parfactors(Factors) :-
|
get_parfactors(Factors) :-
|
||||||
findall(F, is_factor(F), Factors).
|
findall(F, is_factor(F), Factors).
|
||||||
|
|
||||||
|
|
||||||
is_factor(pf(Id, Ks, Rs, Phi, Tuples)) :-
|
is_factor(pf(Id, Ks, Rs, Phi, Tuples)) :-
|
||||||
factor(_Type, Id, Ks, Vs, Table, Constraints),
|
factor(_Type, Id, Ks, Vs, Table, Constraints),
|
||||||
get_ranges(Ks,Rs),
|
get_ranges(Ks,Rs),
|
||||||
Table \= avg,
|
Table \= avg,
|
||||||
gen_table(Table, Phi),
|
gen_table(Table, Phi),
|
||||||
all_tuples(Constraints, Vs, Tuples).
|
all_tuples(Constraints, Vs, Tuples).
|
||||||
|
|
||||||
|
|
||||||
get_ranges([],[]).
|
get_ranges([],[]).
|
||||||
get_ranges(K.Ks, Range.Rs) :- !,
|
get_ranges(K.Ks, Range.Rs) :- !,
|
||||||
skolem(K,Domain),
|
skolem(K,Domain),
|
||||||
length(Domain,Range),
|
length(Domain,Range),
|
||||||
get_ranges(Ks, Rs).
|
get_ranges(Ks, Rs).
|
||||||
|
|
||||||
|
|
||||||
gen_table(Table, Phi) :-
|
gen_table(Table, Phi) :-
|
||||||
( is_list(Table)
|
(
|
||||||
->
|
is_list(Table)
|
||||||
Phi = Table
|
->
|
||||||
;
|
Phi = Table
|
||||||
call(user:Table, Phi)
|
;
|
||||||
).
|
call(user:Table, Phi)
|
||||||
|
).
|
||||||
|
|
||||||
|
|
||||||
all_tuples(Constraints, Tuple, Tuples) :-
|
all_tuples(Constraints, Tuple, Tuples) :-
|
||||||
setof(Tuple, Constraints^run(Constraints), Tuples).
|
setof(Tuple, Constraints^run(Constraints), Tuples).
|
||||||
|
|
||||||
|
|
||||||
run([]).
|
run([]).
|
||||||
run(Goal.Constraints) :-
|
run(Goal.Constraints) :-
|
||||||
user:Goal,
|
user:Goal,
|
||||||
run(Constraints).
|
run(Constraints).
|
||||||
|
|
||||||
|
|
||||||
get_dist_ids([], []).
|
get_dist_ids([], []).
|
||||||
get_dist_ids(pf(Id, _, _, _, _).Parfactors, Id.DistIds) :-
|
get_dist_ids(pf(Id, _, _, _, _).Parfactors, Id.DistIds) :-
|
||||||
get_dist_ids(Parfactors, DistIds).
|
get_dist_ids(Parfactors, DistIds).
|
||||||
|
|
||||||
|
|
||||||
get_observed_vars([], []).
|
get_observed_vars([], []).
|
||||||
get_observed_vars(V.AllAttVars, [K:E|ObservedVars]) :-
|
get_observed_vars(V.AllAttVars, [K:E|ObservedVars]) :-
|
||||||
clpbn:get_atts(V,[key(K)]),
|
clpbn:get_atts(V,[key(K)]),
|
||||||
( clpbn:get_atts(V,[evidence(E)]) ; pfl:evidence(K,E) ), !,
|
( clpbn:get_atts(V,[evidence(E)]) ; pfl:evidence(K,E) ), !,
|
||||||
get_observed_vars(AllAttVars, ObservedVars).
|
get_observed_vars(AllAttVars, ObservedVars).
|
||||||
get_observed_vars(V.AllAttVars, ObservedVars) :-
|
get_observed_vars(V.AllAttVars, ObservedVars) :-
|
||||||
clpbn:get_atts(V,[key(_K)]), !,
|
clpbn:get_atts(V,[key(_K)]), !,
|
||||||
get_observed_vars(AllAttVars, ObservedVars).
|
get_observed_vars(AllAttVars, ObservedVars).
|
||||||
|
|
||||||
|
|
||||||
get_query_keys([], []).
|
get_query_keys([], []).
|
||||||
get_query_keys(E1.L1, E2.L2) :-
|
get_query_keys(E1.L1, E2.L2) :-
|
||||||
get_query_keys_2(E1,E2),
|
get_query_keys_2(E1,E2),
|
||||||
get_query_keys(L1, L2).
|
get_query_keys(L1, L2).
|
||||||
|
|
||||||
|
|
||||||
get_query_keys_2([], []).
|
get_query_keys_2([], []).
|
||||||
get_query_keys_2(V.AttVars, [RV|RVs]) :-
|
get_query_keys_2(V.AttVars, [RV|RVs]) :-
|
||||||
clpbn:get_atts(V,[key(RV)]), !,
|
clpbn:get_atts(V,[key(RV)]), !,
|
||||||
get_query_keys_2(AttVars, RVs).
|
get_query_keys_2(AttVars, RVs).
|
||||||
|
|
||||||
|
|
||||||
get_dists_parameters([], []).
|
get_dists_parameters([], []).
|
||||||
get_dists_parameters([Id|Ids], [dist(Id, Params)|DistsInfo]) :-
|
get_dists_parameters([Id|Ids], [dist(Id, Params)|DistsInfo]) :-
|
||||||
get_pfl_parameters(Id, Params),
|
get_pfl_parameters(Id, Params),
|
||||||
get_dists_parameters(Ids, DistsInfo).
|
get_dists_parameters(Ids, DistsInfo).
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user