1 #ifndef OPENGM_LIBDAI_BP_HXX
2 #define OPENGM_LIBDAI_BP_HXX
12 template<
class GM,
class ACC>
15 typedef ACC AccumulationType;
16 typedef GM GraphicalModelType;
29 std::string name()
const {
35 const size_t maxIterations=100,
36 const double damping=0.0,
37 const double tolerance=0.000001,
38 UpdateRule updateRule= PARALL,
39 const size_t verbose=0
40 ) :maxIterations_(maxIterations),
42 tolerance_(tolerance),
43 updateRule_(updateRule),
48 std::string toString()
const{
51 if(updateRule_==PARALL)ur=
"PARALL";
52 else if(updateRule_==SEQFIX)ur =
"SEQFIX";
53 else if(updateRule_==SEQMAX)ur =
"SEQMAX";
54 else if(updateRule_==SEQRND)ur =
"SEQRND";
57 <<
"damping="<<damping_<<
","
58 <<
"maxiter="<<maxIterations_<<
","
59 <<
"tol="<<tolerance_<<
","
60 <<
"logdomain="<<logDomain_<<
","
61 <<
"inference="<< std::string(::opengm::meta::Compare<ACC,::opengm::Integrator>::value==
true ? std::string(
"SUMPROD") : std::string(
"MAXPROD") ) <<
","
62 <<
"verbose="<<verbose_<<
"]";
66 size_t maxIterations_;
69 UpdateRule updateRule_;
73 Bp(
const GM & gm,
const Parameter param=Parameter())
78 virtual const GraphicalModelType& graphicalModel()
const{
79 return this->graphicalModel_impl();
83 return this->reset_impl();
87 return this->infer_impl();
90 template<
class VISITOR>
99 return this->arg_impl(v,argnr);
102 return this->marginal_impl(v,m);
105 return this->factorMarginal_impl(f,m);
116 #endif // OPENGM_LIBDAI_BP_HXX
Inference algorithm interface.
#define OPENGM_GM_TYPE_TYPEDEFS