Improved properties.h/cpp and added unit tests
[libdai.git] / examples / example_sprinkler.cpp
index 84c62e4..74a7441 100644 (file)
@@ -1,5 +1,16 @@
+/*  This file is part of libDAI - http://www.libdai.org/
+ *
+ *  libDAI is licensed under the terms of the GNU General Public License version
+ *  2, or (at your option) any later version. libDAI is distributed without any
+ *  warranty. See the file COPYING for more details.
+ *
+ *  Copyright (C) 2008-2010  Joris Mooij  [joris dot mooij at libdai dot org]
+ */
+
+
 #include <dai/factorgraph.h>
 #include <iostream>
+#include <fstream>
 
 using namespace std;
 using namespace dai;
@@ -13,7 +24,7 @@ int main() {
     Var S(1, 2);  // Define binary variable Sprinkler (with label 1)
     Var R(2, 2);  // Define binary variable Rain (with label 2)
     Var W(3, 2);  // Define binary variable Wetgrass (with label 3)
+
     // Define probability distribution for C
     Factor P_C( C );
     P_C[0] = 0.5;   // C = 0
@@ -54,9 +65,7 @@ int main() {
 
     // Write factorgraph to a file
     SprinklerNetwork.WriteToFile( "sprinkler.fg" );
-
-    // Reread the factorgraph from the file
-    SprinklerNetwork.ReadFromFile( "sprinkler.fg" );
+    cout << "Sprinkler network written to sprinkler.fg" << endl;
 
     // Output some information about the factorgraph
     cout << SprinklerNetwork.nrVars() << " variables" << endl;
@@ -64,16 +73,15 @@ int main() {
 
     // Calculate joint probability of all four variables
     Factor P;
-    for( size_t I = 0; I < SprinklerNetwork.nrFactors(); I++ ) {
+    for( size_t I = 0; I < SprinklerNetwork.nrFactors(); I++ )
         P *= SprinklerNetwork.factor( I );
-    }
     // P.normalize();  // Not necessary: a Bayesian network is already normalized by definition
 
     // Calculate some probabilities
-    double denom = P.marginal( W )[1];
+    Real denom = P.marginal( W )[1];
     cout << "P(W=1) = " << denom << endl;
     cout << "P(S=1 | W=1) = " << P.marginal( VarSet( S, W ) )[3] / denom << endl;
     cout << "P(R=1 | W=1) = " << P.marginal( VarSet( R, W ) )[3] / denom << endl;
 
-       return 0;
+    return 0;
 }