add flag to lifted knowledge compilation and s/fove/lve
This commit is contained in:
@@ -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
|
||||
};
|
||||
|
||||
|
||||
|
@@ -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;
|
||||
|
@@ -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) {
|
||||
|
@@ -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_;
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user