initial code to support calling a lifted knowledge compilation solver
This commit is contained in:
parent
0ed89d3eeb
commit
6a200760ca
@ -14,6 +14,7 @@
|
|||||||
#include "LiftedBp.h"
|
#include "LiftedBp.h"
|
||||||
#include "CountingBp.h"
|
#include "CountingBp.h"
|
||||||
#include "BeliefProp.h"
|
#include "BeliefProp.h"
|
||||||
|
#include "LiftedKc.h"
|
||||||
#include "ElimGraph.h"
|
#include "ElimGraph.h"
|
||||||
#include "BayesBall.h"
|
#include "BayesBall.h"
|
||||||
|
|
||||||
@ -76,6 +77,7 @@ createLiftedNetwork (void)
|
|||||||
readLiftedEvidence (YAP_ARG2, *(obsFormulas));
|
readLiftedEvidence (YAP_ARG2, *(obsFormulas));
|
||||||
|
|
||||||
LiftedNetwork* net = new LiftedNetwork (pfList, obsFormulas);
|
LiftedNetwork* net = new LiftedNetwork (pfList, obsFormulas);
|
||||||
|
|
||||||
YAP_Int p = (YAP_Int) (net);
|
YAP_Int p = (YAP_Int) (net);
|
||||||
return YAP_Unify (YAP_MkIntTerm (p), YAP_ARG3);
|
return YAP_Unify (YAP_MkIntTerm (p), YAP_ARG3);
|
||||||
}
|
}
|
||||||
@ -273,6 +275,8 @@ readParameters (YAP_Term paramL)
|
|||||||
int
|
int
|
||||||
runLiftedSolver (void)
|
runLiftedSolver (void)
|
||||||
{
|
{
|
||||||
|
// TODO one solver instatiation should be used
|
||||||
|
// to solve several inference tasks
|
||||||
LiftedNetwork* network = (LiftedNetwork*) YAP_IntOfTerm (YAP_ARG1);
|
LiftedNetwork* network = (LiftedNetwork*) YAP_IntOfTerm (YAP_ARG1);
|
||||||
YAP_Term taskList = YAP_ARG2;
|
YAP_Term taskList = YAP_ARG2;
|
||||||
vector<Params> results;
|
vector<Params> results;
|
||||||
@ -303,7 +307,7 @@ runLiftedSolver (void)
|
|||||||
}
|
}
|
||||||
jointList = YAP_TailOfTerm (jointList);
|
jointList = YAP_TailOfTerm (jointList);
|
||||||
}
|
}
|
||||||
if (Globals::liftedSolver == LiftedSolver::FOVE) {
|
if (Globals::liftedSolver == LiftedSolver::LVE) {
|
||||||
LiftedVe solver (pfListCopy);
|
LiftedVe solver (pfListCopy);
|
||||||
if (Globals::verbosity > 0 && taskList == YAP_ARG2) {
|
if (Globals::verbosity > 0 && taskList == YAP_ARG2) {
|
||||||
solver.printSolverFlags();
|
solver.printSolverFlags();
|
||||||
@ -317,6 +321,13 @@ runLiftedSolver (void)
|
|||||||
cout << endl;
|
cout << endl;
|
||||||
}
|
}
|
||||||
results.push_back (solver.solveQuery (queryVars));
|
results.push_back (solver.solveQuery (queryVars));
|
||||||
|
} else if (Globals::liftedSolver == LiftedSolver::LKC) {
|
||||||
|
LiftedKc solver (pfListCopy);
|
||||||
|
if (Globals::verbosity > 0 && taskList == YAP_ARG2) {
|
||||||
|
solver.printSolverFlags();
|
||||||
|
cout << endl;
|
||||||
|
}
|
||||||
|
results.push_back (solver.solveQuery (queryVars));
|
||||||
} else {
|
} else {
|
||||||
assert (false);
|
assert (false);
|
||||||
}
|
}
|
||||||
|
38
packages/CLPBN/horus/LiftedKc.cpp
Normal file
38
packages/CLPBN/horus/LiftedKc.cpp
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
#include "LiftedKc.h"
|
||||||
|
#include "LiftedWCNF.h"
|
||||||
|
#include "LiftedCircuit.h"
|
||||||
|
|
||||||
|
|
||||||
|
LiftedKc::LiftedKc (const ParfactorList& pfList)
|
||||||
|
: pfList_(pfList)
|
||||||
|
{
|
||||||
|
lwcnf_ = new LiftedWCNF (pfList);
|
||||||
|
circuit_ = new LiftedCircuit (lwcnf_);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
LiftedKc::~LiftedKc (void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Params
|
||||||
|
LiftedKc::solveQuery (const Grounds&)
|
||||||
|
{
|
||||||
|
return Params();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
LiftedKc::printSolverFlags (void) const
|
||||||
|
{
|
||||||
|
stringstream ss;
|
||||||
|
ss << "lifted kc [" ;
|
||||||
|
ss << "log_domain=" << Util::toString (Globals::logDomain);
|
||||||
|
ss << "]" ;
|
||||||
|
cout << ss.str() << endl;
|
||||||
|
}
|
||||||
|
|
28
packages/CLPBN/horus/LiftedKc.h
Normal file
28
packages/CLPBN/horus/LiftedKc.h
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#ifndef HORUS_LIFTEDKC_H
|
||||||
|
#define HORUS_LIFTEDKC_H
|
||||||
|
|
||||||
|
#include "ParfactorList.h"
|
||||||
|
|
||||||
|
class LiftedWCNF;
|
||||||
|
class LiftedCircuit;
|
||||||
|
|
||||||
|
class LiftedKc
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
LiftedKc (const ParfactorList& pfList);
|
||||||
|
|
||||||
|
~LiftedKc (void);
|
||||||
|
|
||||||
|
Params solveQuery (const Grounds&);
|
||||||
|
|
||||||
|
void printSolverFlags (void) const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
LiftedWCNF* lwcnf_;
|
||||||
|
LiftedCircuit* circuit_;
|
||||||
|
|
||||||
|
const ParfactorList& pfList_;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // HORUS_LIFTEDKC_H
|
||||||
|
|
@ -58,6 +58,7 @@ HEADERS = \
|
|||||||
$(srcdir)/Indexer.h \
|
$(srcdir)/Indexer.h \
|
||||||
$(srcdir)/LiftedBp.h \
|
$(srcdir)/LiftedBp.h \
|
||||||
$(srcdir)/LiftedCircuit.h \
|
$(srcdir)/LiftedCircuit.h \
|
||||||
|
$(srcdir)/LiftedKc.h \
|
||||||
$(srcdir)/LiftedUtils.h \
|
$(srcdir)/LiftedUtils.h \
|
||||||
$(srcdir)/LiftedVe.h \
|
$(srcdir)/LiftedVe.h \
|
||||||
$(srcdir)/LiftedWCNF.h \
|
$(srcdir)/LiftedWCNF.h \
|
||||||
@ -84,7 +85,8 @@ CPP_SOURCES = \
|
|||||||
$(srcdir)/HorusCli.cpp \
|
$(srcdir)/HorusCli.cpp \
|
||||||
$(srcdir)/HorusYap.cpp \
|
$(srcdir)/HorusYap.cpp \
|
||||||
$(srcdir)/LiftedBp.cpp \
|
$(srcdir)/LiftedBp.cpp \
|
||||||
$(srcdir)/LiftedCircuit.h \
|
$(srcdir)/LiftedCircuit.cpp \
|
||||||
|
$(srcdir)/LiftedKc.cpp \
|
||||||
$(srcdir)/LiftedUtils.cpp \
|
$(srcdir)/LiftedUtils.cpp \
|
||||||
$(srcdir)/LiftedVe.cpp \
|
$(srcdir)/LiftedVe.cpp \
|
||||||
$(srcdir)/LiftedWCNF.cpp \
|
$(srcdir)/LiftedWCNF.cpp \
|
||||||
@ -110,6 +112,7 @@ OBJS = \
|
|||||||
HorusYap.o \
|
HorusYap.o \
|
||||||
LiftedBp.o \
|
LiftedBp.o \
|
||||||
LiftedCircuit.o \
|
LiftedCircuit.o \
|
||||||
|
LiftedKc.o \
|
||||||
LiftedUtils.o \
|
LiftedUtils.o \
|
||||||
LiftedVe.o \
|
LiftedVe.o \
|
||||||
LiftedWCNF.o \
|
LiftedWCNF.o \
|
||||||
|
Reference in New Issue
Block a user