#include <map>
#include <set>
#include <dai/lc.h>
-#include <dai/diffs.h>
#include <dai/util.h>
#include <dai/alldai.h>
double maxdiff = 0;
if( props.verbose >= 2 )
- cout << "Initing cavity " << var(i) << "(" << delta(i).size() << " vars, " << nrStates(delta(i)) << " states)" << endl;
+ cout << "Initing cavity " << var(i) << "(" << delta(i).size() << " vars, " << delta(i).nrStates() << " states)" << endl;
if( props.cavity == Properties::CavityType::UNIFORM )
Bi = Factor(delta(i));
if( md > maxdiff )
maxdiff = md;
}
- init();
if( props.verbose >= 1 ) {
cout << Name << "::InitCavityDists used " << toc() - tic << " seconds." << endl;
} else
_cavitydists[i] = Q[i];
}
- init();
return 0;
}
_phis[i][I.iter].randomize();
else
_phis[i][I.iter].fill(1.0);
- for( size_t i = 0; i < nrVars(); i++ ) {
- _pancakes[i] = _cavitydists[i];
-
- foreach( const Neighbor &I, nbV(i) ) {
- _pancakes[i] *= factor(I);
- if( props.updates == Properties::UpdateType::SEQRND )
- _pancakes[i] *= _phis[i][I.iter];
- }
-
- _pancakes[i].normalize();
-
- CalcBelief(i);
- }
}
if( md > _maxdiff )
_maxdiff = md;
+ for( size_t i = 0; i < nrVars(); i++ ) {
+ _pancakes[i] = _cavitydists[i];
+
+ foreach( const Neighbor &I, nbV(i) ) {
+ _pancakes[i] *= factor(I);
+ if( props.updates == Properties::UpdateType::SEQRND )
+ _pancakes[i] *= _phis[i][I.iter];
+ }
+
+ _pancakes[i].normalize();
+
+ CalcBelief(i);
+ }
+
vector<Factor> old_beliefs;
for(size_t i=0; i < nrVars(); i++ )
old_beliefs.push_back(belief(i));