From 0ed89d3eebf2bb7730bc0465c1cb0f94cf7cf07d Mon Sep 17 00:00:00 2001 From: Tiago Gomes Date: Thu, 8 Nov 2012 15:05:48 +0000 Subject: [PATCH] add flag to lifted knowledge compilation and s/fove/lve --- packages/CLPBN/README.txt | 3 ++- .../CLPBN/benchmarks/city/{fove_tests.sh => lve_tests.sh} | 4 ++-- .../comp_workshops/{fove_tests.sh => lve_tests.sh} | 4 ++-- packages/CLPBN/benchmarks/run_all.sh | 8 ++++---- .../benchmarks/smokers/{fove_tests.sh => lve_tests.sh} | 4 ++-- .../smokers_evidence/{fove_tests.sh => lve_tests.sh} | 4 ++-- .../workshop_attrs/{fove_tests.sh => lve_tests.sh} | 4 ++-- packages/CLPBN/clpbn/horus.yap | 3 ++- packages/CLPBN/examples/School/school_32.yap | 2 +- packages/CLPBN/examples/burglary-alarm.pfl | 2 +- packages/CLPBN/examples/city.yap | 2 +- packages/CLPBN/examples/comp_workshops.yap | 2 +- packages/CLPBN/examples/fail1.yap | 2 +- packages/CLPBN/examples/fail2.yap | 2 +- packages/CLPBN/examples/social_domain1.yap | 2 +- packages/CLPBN/examples/social_domain2.yap | 2 +- packages/CLPBN/examples/workshop_attrs.yap | 2 +- packages/CLPBN/horus/Horus.h | 5 +++-- packages/CLPBN/horus/LiftedVe.cpp | 2 +- packages/CLPBN/horus/LiftedWCNF.cpp | 8 ++++---- packages/CLPBN/horus/LiftedWCNF.h | 6 +++--- packages/CLPBN/horus/Util.cpp | 8 +++++--- 22 files changed, 43 insertions(+), 38 deletions(-) rename packages/CLPBN/benchmarks/city/{fove_tests.sh => lve_tests.sh} (91%) rename packages/CLPBN/benchmarks/comp_workshops/{fove_tests.sh => lve_tests.sh} (90%) rename packages/CLPBN/benchmarks/smokers/{fove_tests.sh => lve_tests.sh} (87%) rename packages/CLPBN/benchmarks/smokers_evidence/{fove_tests.sh => lve_tests.sh} (89%) rename packages/CLPBN/benchmarks/workshop_attrs/{fove_tests.sh => lve_tests.sh} (92%) diff --git a/packages/CLPBN/README.txt b/packages/CLPBN/README.txt index c24eccd39..76231b268 100644 --- a/packages/CLPBN/README.txt +++ b/packages/CLPBN/README.txt @@ -49,11 +49,12 @@ Inference Options PFL supports both ground and lifted inference. The inference algorithm can be chosen using the set_solver/1 predicate. The following algorithms are supported: -- fove: lifted variable elimination with arbitrary constraints (GC-FOVE) +- lve: generalized counting first-order variable elimination (GC-FOVE) - hve: (ground) variable elimination - lbp: lifted first-order belief propagation - cbp: counting belief propagation - bp: (ground) belief propagation +- lkc: lifted first-order knowledge compilation For example, if we want to use ground variable elimination to solve some query, we need to call first the following goal: diff --git a/packages/CLPBN/benchmarks/city/fove_tests.sh b/packages/CLPBN/benchmarks/city/lve_tests.sh similarity index 91% rename from packages/CLPBN/benchmarks/city/fove_tests.sh rename to packages/CLPBN/benchmarks/city/lve_tests.sh index 149d3b332..edb79f6c4 100755 --- a/packages/CLPBN/benchmarks/city/fove_tests.sh +++ b/packages/CLPBN/benchmarks/city/lve_tests.sh @@ -3,7 +3,7 @@ source city.sh source ../benchs.sh -SOLVER="fove" +SOLVER="lve" function run_all_graphs { @@ -32,5 +32,5 @@ function run_all_graphs } prepare_new_run -run_all_graphs "fove " +run_all_graphs "lve " diff --git a/packages/CLPBN/benchmarks/comp_workshops/fove_tests.sh b/packages/CLPBN/benchmarks/comp_workshops/lve_tests.sh similarity index 90% rename from packages/CLPBN/benchmarks/comp_workshops/fove_tests.sh rename to packages/CLPBN/benchmarks/comp_workshops/lve_tests.sh index 68e0c8d07..89d607b07 100755 --- a/packages/CLPBN/benchmarks/comp_workshops/fove_tests.sh +++ b/packages/CLPBN/benchmarks/comp_workshops/lve_tests.sh @@ -3,7 +3,7 @@ source cw.sh source ../benchs.sh -SOLVER="fove" +SOLVER="lve" function run_all_graphs { @@ -26,6 +26,6 @@ function run_all_graphs } prepare_new_run -run_all_graphs "fove " +run_all_graphs "lve " diff --git a/packages/CLPBN/benchmarks/run_all.sh b/packages/CLPBN/benchmarks/run_all.sh index bf2571256..4962fd7e5 100755 --- a/packages/CLPBN/benchmarks/run_all.sh +++ b/packages/CLPBN/benchmarks/run_all.sh @@ -3,7 +3,7 @@ cd workshop_attrs source hve_tests.sh source bp_tests.sh -source fove_tests.sh +source lve_tests.sh source lbp_tests.sh source cbp_tests.sh cd .. @@ -11,7 +11,7 @@ cd .. cd comp_workshops source hve_tests.sh source bp_tests.sh -source fove_tests.sh +source lve_tests.sh source lbp_tests.sh source cbp_tests.sh cd .. @@ -19,7 +19,7 @@ cd .. cd city source hve_tests.sh source bp_tests.sh -source fove_tests.sh +source lve_tests.sh source lbp_tests.sh source cbp_tests.sh cd .. @@ -27,7 +27,7 @@ cd .. cd smokers source hve_tests.sh source bp_tests.sh -source fove_tests.sh +source lve_tests.sh source lbp_tests.sh source cbp_tests.sh cd .. diff --git a/packages/CLPBN/benchmarks/smokers/fove_tests.sh b/packages/CLPBN/benchmarks/smokers/lve_tests.sh similarity index 87% rename from packages/CLPBN/benchmarks/smokers/fove_tests.sh rename to packages/CLPBN/benchmarks/smokers/lve_tests.sh index d36f9fd46..e7e08c253 100755 --- a/packages/CLPBN/benchmarks/smokers/fove_tests.sh +++ b/packages/CLPBN/benchmarks/smokers/lve_tests.sh @@ -3,7 +3,7 @@ source sm.sh source ../benchs.sh -SOLVER="fove" +SOLVER="lve" function run_all_graphs { @@ -26,6 +26,6 @@ function run_all_graphs } prepare_new_run -run_all_graphs "fove " +run_all_graphs "lve " diff --git a/packages/CLPBN/benchmarks/smokers_evidence/fove_tests.sh b/packages/CLPBN/benchmarks/smokers_evidence/lve_tests.sh similarity index 89% rename from packages/CLPBN/benchmarks/smokers_evidence/fove_tests.sh rename to packages/CLPBN/benchmarks/smokers_evidence/lve_tests.sh index 09e346839..5f32c8c6d 100755 --- a/packages/CLPBN/benchmarks/smokers_evidence/fove_tests.sh +++ b/packages/CLPBN/benchmarks/smokers_evidence/lve_tests.sh @@ -3,7 +3,7 @@ source sm.sh source ../benchs.sh -SOLVER="fove" +SOLVER="lve" function run_all_graphs { @@ -30,6 +30,6 @@ function run_all_graphs } prepare_new_run -run_all_graphs "fove " +run_all_graphs "lve " diff --git a/packages/CLPBN/benchmarks/workshop_attrs/fove_tests.sh b/packages/CLPBN/benchmarks/workshop_attrs/lve_tests.sh similarity index 92% rename from packages/CLPBN/benchmarks/workshop_attrs/fove_tests.sh rename to packages/CLPBN/benchmarks/workshop_attrs/lve_tests.sh index 2edc90919..10c9e5e1e 100755 --- a/packages/CLPBN/benchmarks/workshop_attrs/fove_tests.sh +++ b/packages/CLPBN/benchmarks/workshop_attrs/lve_tests.sh @@ -3,7 +3,7 @@ source wa.sh source ../benchs.sh -SOLVER="fove" +SOLVER="lve" function run_all_graphs { @@ -32,6 +32,6 @@ function run_all_graphs } prepare_new_run -run_all_graphs "fove " +run_all_graphs "lve " diff --git a/packages/CLPBN/clpbn/horus.yap b/packages/CLPBN/clpbn/horus.yap index c557a4c66..6bed62fa2 100644 --- a/packages/CLPBN/clpbn/horus.yap +++ b/packages/CLPBN/clpbn/horus.yap @@ -39,8 +39,9 @@ set_solver(ve) :- !, set_clpbn_flag(solver,ve). set_solver(bdd) :- !, set_clpbn_flag(solver,bdd). set_solver(jt) :- !, set_clpbn_flag(solver,jt). set_solver(gibbs) :- !, set_clpbn_flag(solver,gibbs). -set_solver(fove) :- !, set_clpbn_flag(solver,fove), set_horus_flag(lifted_solver, fove). +set_solver(lve) :- !, set_clpbn_flag(solver,fove), set_horus_flag(lifted_solver, lve). set_solver(lbp) :- !, set_clpbn_flag(solver,fove), set_horus_flag(lifted_solver, lbp). +set_solver(lkc) :- !, set_clpbn_flag(solver,fove), set_horus_flag(lifted_solver, lkc). set_solver(hve) :- !, set_clpbn_flag(solver,bp), set_horus_flag(ground_solver, ve). set_solver(bp) :- !, set_clpbn_flag(solver,bp), set_horus_flag(ground_solver, bp). set_solver(cbp) :- !, set_clpbn_flag(solver,bp), set_horus_flag(ground_solver, cbp). diff --git a/packages/CLPBN/examples/School/school_32.yap b/packages/CLPBN/examples/School/school_32.yap index 3ba7f855a..00dc27a2c 100644 --- a/packages/CLPBN/examples/School/school_32.yap +++ b/packages/CLPBN/examples/School/school_32.yap @@ -18,7 +18,7 @@ total_students(256). :- ensure_loaded(parschema). :- yap_flag(unknown,error). -%:- clpbn_horus:set_solver(fove). +%:- clpbn_horus:set_solver(lve). %:- clpbn_horus:set_solver(hve). :- clpbn_horus:set_solver(bp). %:- clpbn_horus:set_solver(bdd). diff --git a/packages/CLPBN/examples/burglary-alarm.pfl b/packages/CLPBN/examples/burglary-alarm.pfl index 40a0c926b..defbf83da 100644 --- a/packages/CLPBN/examples/burglary-alarm.pfl +++ b/packages/CLPBN/examples/burglary-alarm.pfl @@ -1,6 +1,6 @@ :- use_module(library(pfl)). -%:- set_solver(fove). +%:- set_solver(lve). %:- set_solver(hve). %:- set_solver(bp). %:- set_solver(cbp). diff --git a/packages/CLPBN/examples/city.yap b/packages/CLPBN/examples/city.yap index 5cad29586..3647698cc 100644 --- a/packages/CLPBN/examples/city.yap +++ b/packages/CLPBN/examples/city.yap @@ -1,6 +1,6 @@ :- use_module(library(pfl)). -%:- set_solver(fove). +%:- set_solver(lve). %:- set_solver(hve). %:- set_solver(bp). %:- set_solver(cbp). diff --git a/packages/CLPBN/examples/comp_workshops.yap b/packages/CLPBN/examples/comp_workshops.yap index 39a14d8bd..2ab7d2cd5 100644 --- a/packages/CLPBN/examples/comp_workshops.yap +++ b/packages/CLPBN/examples/comp_workshops.yap @@ -1,6 +1,6 @@ :- use_module(library(pfl)). -%:- set_solver(fove). +%:- set_solver(lve). %:- set_solver(hve). %:- set_solver(bp). %:- set_solver(cbp). diff --git a/packages/CLPBN/examples/fail1.yap b/packages/CLPBN/examples/fail1.yap index aa5cfc5db..1646fd8ff 100644 --- a/packages/CLPBN/examples/fail1.yap +++ b/packages/CLPBN/examples/fail1.yap @@ -1,7 +1,7 @@ :- use_module(library(pfl)). -:- set_pfl_flag(solver,fove). +:- set_pfl_flag(solver,lve). %:- set_pfl_flag(solver,bp), clpbn_horus:set_horus_flag(inf_alg,ve). %:- set_pfl_flag(solver,bp), clpbn_horus:set_horus_flag(inf_alg,bp). %:- set_pfl_flag(solver,bp), clpbn_horus:set_horus_flag(inf_alg,cbp). diff --git a/packages/CLPBN/examples/fail2.yap b/packages/CLPBN/examples/fail2.yap index 7e62ea42c..342cc9c52 100644 --- a/packages/CLPBN/examples/fail2.yap +++ b/packages/CLPBN/examples/fail2.yap @@ -1,6 +1,6 @@ :- use_module(library(pfl)). -:- set_solver(fove). +:- set_solver(lve). %:- set_solver(hve). %:- set_solver(bp). %:- set_solver(cbp). diff --git a/packages/CLPBN/examples/social_domain1.yap b/packages/CLPBN/examples/social_domain1.yap index ba5b095d1..348ac4bec 100644 --- a/packages/CLPBN/examples/social_domain1.yap +++ b/packages/CLPBN/examples/social_domain1.yap @@ -1,6 +1,6 @@ :- use_module(library(pfl)). -%:- set_solver(fove). +%:- set_solver(lve). %:- set_solver(hve). %:- set_solver(bp). %:- set_solver(cbp). diff --git a/packages/CLPBN/examples/social_domain2.yap b/packages/CLPBN/examples/social_domain2.yap index af0327e8f..e02c2d9a1 100644 --- a/packages/CLPBN/examples/social_domain2.yap +++ b/packages/CLPBN/examples/social_domain2.yap @@ -1,6 +1,6 @@ :- use_module(library(pfl)). -%:- set_solver(fove). +%:- set_solver(lve). %:- set_solver(hve). %:- set_solver(bp). %:- set_solver(cbp). diff --git a/packages/CLPBN/examples/workshop_attrs.yap b/packages/CLPBN/examples/workshop_attrs.yap index 880adcae5..05a97106f 100644 --- a/packages/CLPBN/examples/workshop_attrs.yap +++ b/packages/CLPBN/examples/workshop_attrs.yap @@ -1,6 +1,6 @@ :- use_module(library(pfl)). -%:- set_solver(fove). +%:- set_solver(lve). %:- set_solver(hve). %:- set_solver(bp). %:- set_solver(cbp). diff --git a/packages/CLPBN/horus/Horus.h b/packages/CLPBN/horus/Horus.h index bb1d77bb9..2c8d20e1e 100644 --- a/packages/CLPBN/horus/Horus.h +++ b/packages/CLPBN/horus/Horus.h @@ -30,8 +30,9 @@ typedef unsigned long long ullong; enum LiftedSolver { - FOVE, // first order variable elimination - LBP, // lifted belief propagation + LVE, // generalized counting first-order variable elimination (GC-FOVE) + LBP, // lifted first-order belief propagation + LKC // lifted first-order knowledge compilation }; diff --git a/packages/CLPBN/horus/LiftedVe.cpp b/packages/CLPBN/horus/LiftedVe.cpp index 6ed2c22f7..2437906ce 100644 --- a/packages/CLPBN/horus/LiftedVe.cpp +++ b/packages/CLPBN/horus/LiftedVe.cpp @@ -647,7 +647,7 @@ void LiftedVe::printSolverFlags (void) const { stringstream ss; - ss << "fove [" ; + ss << "lve [" ; ss << "log_domain=" << Util::toString (Globals::logDomain); ss << "]" ; cout << ss.str() << endl; diff --git a/packages/CLPBN/horus/LiftedWCNF.cpp b/packages/CLPBN/horus/LiftedWCNF.cpp index 139fb6a43..31641187e 100644 --- a/packages/CLPBN/horus/LiftedWCNF.cpp +++ b/packages/CLPBN/horus/LiftedWCNF.cpp @@ -215,7 +215,7 @@ bool Clause::isIpgLogVar (LogVar X) const { assert (constr_.logVarSet().contains (X)); - return ipgLogVars_.contains (X); + return ipgLvs_.contains (X); } @@ -237,7 +237,7 @@ Clause::ipgCandidates (void) const { LogVarSet candidates; LogVarSet allLvs = constr_.logVarSet(); - allLvs -= ipgLogVars_; + allLvs -= ipgLvs_; allLvs -= posCountedLvs_; allLvs -= negCountedLvs_; for (size_t i = 0; i < allLvs.size(); i++) { @@ -281,7 +281,7 @@ Clause::removeLiteral (size_t litIdx) { LogVarSet lvsToRemove = literals_[litIdx].logVarSet() - getLogVarSetExcluding (litIdx); - ipgLogVars_ -= lvsToRemove; + ipgLvs_ -= lvsToRemove; posCountedLvs_ -= lvsToRemove; negCountedLvs_ -= lvsToRemove; constr_.remove (lvsToRemove); @@ -322,7 +322,7 @@ std::ostream& operator<< (ostream &os, const Clause& clause) { for (unsigned i = 0; i < clause.literals_.size(); i++) { if (i != 0) os << " v " ; - os << clause.literals_[i].toString (clause.ipgLogVars_, + os << clause.literals_[i].toString (clause.ipgLvs_, clause.posCountedLvs_, clause.negCountedLvs_); } if (clause.constr_.empty() == false) { diff --git a/packages/CLPBN/horus/LiftedWCNF.h b/packages/CLPBN/horus/LiftedWCNF.h index fd236a80d..263593cbf 100644 --- a/packages/CLPBN/horus/LiftedWCNF.h +++ b/packages/CLPBN/horus/LiftedWCNF.h @@ -81,9 +81,9 @@ class Clause bool isUnit (void) const { return literals_.size() == 1; } - LogVarSet ipgLogVars (void) const { return ipgLogVars_; } + LogVarSet ipgLogVars (void) const { return ipgLvs_; } - void addIpgLogVar (LogVar X) { ipgLogVars_.insert (X); } + void addIpgLogVar (LogVar X) { ipgLvs_.insert (X); } void addPosCountedLogVar (LogVar X) { posCountedLvs_.insert (X); } @@ -137,7 +137,7 @@ class Clause LogVarSet getLogVarSetExcluding (size_t idx) const; Literals literals_; - LogVarSet ipgLogVars_; + LogVarSet ipgLvs_; LogVarSet posCountedLvs_; LogVarSet negCountedLvs_; ConstraintTree constr_; diff --git a/packages/CLPBN/horus/Util.cpp b/packages/CLPBN/horus/Util.cpp index f7a785419..bef3414c6 100644 --- a/packages/CLPBN/horus/Util.cpp +++ b/packages/CLPBN/horus/Util.cpp @@ -13,7 +13,7 @@ bool logDomain = false; unsigned verbosity = 0; -LiftedSolver liftedSolver = LiftedSolver::FOVE; +LiftedSolver liftedSolver = LiftedSolver::LVE; GroundSolver groundSolver = GroundSolver::VE; @@ -210,10 +210,12 @@ setHorusFlag (string key, string value) ss << value; ss >> Globals::verbosity; } else if (key == "lifted_solver") { - if ( value == "fove") { - Globals::liftedSolver = LiftedSolver::FOVE; + if ( value == "lve") { + Globals::liftedSolver = LiftedSolver::LVE; } else if (value == "lbp") { Globals::liftedSolver = LiftedSolver::LBP; + } else if (value == "lkc") { + Globals::liftedSolver = LiftedSolver::LKC; } else { cerr << "warning: invalid value `" << value << "' " ; cerr << "for `" << key << "'" << endl;