This example shows how to use the Gibbs class.
#include <iostream>
#include <fstream>
using namespace std;
using namespace dai;
int main() {
cout << "Sprinkler network read from sprinkler.fg" << endl;
cout << SprinklerNetwork.
nrVars() <<
" variables" << endl;
cout << SprinklerNetwork.
nrFactors() <<
" factors" << endl;
gibbsProps.
set(
"maxiter",
size_t(100));
gibbsProps.
set(
"burnin",
size_t(0));
gibbsProps.
set(
"verbose",
size_t(0));
Gibbs gibbsSampler( SprinklerNetwork, gibbsProps );
ofstream outfile;
outfile.open( "sprinkler.tab" );
if( !outfile.is_open() )
throw "Cannot write to file!";
for(
size_t i = 0; i < SprinklerNetwork.
nrVars(); i++ )
outfile << (i == 0 ?
"" :
"\t") << SprinklerNetwork.
var(i).
label();
outfile << endl << endl;
size_t nrSamples = 1000;
std::vector<size_t> state;
for( size_t t = 0; t < nrSamples; t++ ) {
state = gibbsSampler.
state();
for( size_t i = 0; i < state.size(); i++ )
outfile << (i == 0 ? "" : "\t") << state[i];
outfile << endl;
}
cout << nrSamples << " samples written to sprinkler.tab" << endl;
outfile.close();
return 0;
}