Finished a new release: libDAI v0.2.6
[libdai.git] / tests / testbbp.cpp
index 502d869..5747d84 100644 (file)
@@ -1,22 +1,11 @@
-/*  Copyright (C) 2009  Joris Mooij  [joris dot mooij at tuebingen dot mpg dot de]
-    Max Planck Institute for Biological Cybernetics, Germany
-
-    This file is part of libDAI.
-
-    libDAI is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    libDAI is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with libDAI; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-*/
+/*  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) 2009  Joris Mooij  [joris dot mooij at libdai dot org]
+ */
 
 
 #include <iostream>
@@ -38,21 +27,20 @@ int main( int argc, char *argv[] ) {
         // Read FactorGraph from the file specified by the first command line argument
         FactorGraph fg;
         fg.ReadFromFile(argv[1]);
-        
+
         // Set some constants
         size_t verbose = 0;
-        double tol = 1.0e-9;
+        Real   tol = 1.0e-9;
         size_t maxiter = 10000;
-        double damping = 0.0;
+        Real   damping = 0.0;
         BBP::Properties::UpdateType updates = BBP::Properties::UpdateType::PAR;
-        bool   clean_updates = false;
 
         // Store the constants in a PropertySet object
         PropertySet opts;
-        opts.Set("verbose",verbose);  // Verbosity (amount of output generated)
-        opts.Set("tol",tol);          // Tolerance for convergence
-        opts.Set("maxiter",maxiter);  // Maximum number of iterations
-        opts.Set("damping",damping);  // Amount of damping applied
+        opts.set("verbose",verbose);  // Verbosity (amount of output generated)
+        opts.set("tol",tol);          // Tolerance for convergence
+        opts.set("maxiter",maxiter);  // Maximum number of iterations
+        opts.set("damping",damping);  // Amount of damping applied
 
         // Construct a BP (belief propagation) object from the FactorGraph fg
         BP bp(fg, opts("updates",string("SEQFIX"))("logdomain",false));
@@ -62,10 +50,9 @@ int main( int argc, char *argv[] ) {
 
         vector<size_t> state( fg.nrVars(), 0 );
 
-        for( size_t t = 0; t < 90; t++ ) {
-            clean_updates = t % 2;
+        for( size_t t = 0; t < 45; t++ ) {
             BBP::Properties::UpdateType updates;
-            switch( (t / 2) % 5 ) {
+            switch( t % 5 ) {
                 case BBP::Properties::UpdateType::SEQ_FIX:
                     updates = BBP::Properties::UpdateType::SEQ_FIX;
                     break;
@@ -82,40 +69,40 @@ int main( int argc, char *argv[] ) {
                     updates = BBP::Properties::UpdateType::PAR;
                     break;
             }
-            bbp_cfn_t cfn;
-            switch( (t / 10) % 9 ) {
+            BBPCostFunction cfn;
+            switch( (t / 5) % 9 ) {
                 case 0:
-                    cfn = bbp_cfn_t::cfn_gibbs_b;
+                    cfn = BBPCostFunction::CFN_GIBBS_B;
                     break;
                 case 1:
-                    cfn = bbp_cfn_t::cfn_gibbs_b2;
+                    cfn = BBPCostFunction::CFN_GIBBS_B2;
                     break;
                 case 2:
-                    cfn = bbp_cfn_t::cfn_gibbs_exp;
+                    cfn = BBPCostFunction::CFN_GIBBS_EXP;
                     break;
                 case 3:
-                    cfn = bbp_cfn_t::cfn_gibbs_b_factor;
+                    cfn = BBPCostFunction::CFN_GIBBS_B_FACTOR;
                     break;
                 case 4:
-                    cfn = bbp_cfn_t::cfn_gibbs_b2_factor;
+                    cfn = BBPCostFunction::CFN_GIBBS_B2_FACTOR;
                     break;
                 case 5:
-                    cfn = bbp_cfn_t::cfn_gibbs_exp_factor;
+                    cfn = BBPCostFunction::CFN_GIBBS_EXP_FACTOR;
                     break;
                 case 6:
-                    cfn = bbp_cfn_t::cfn_var_ent;
+                    cfn = BBPCostFunction::CFN_VAR_ENT;
                     break;
                 case 7:
-                    cfn = bbp_cfn_t::cfn_factor_ent;
+                    cfn = BBPCostFunction::CFN_FACTOR_ENT;
                     break;
                 case 8:
-                    cfn = bbp_cfn_t::cfn_bethe_ent;
+                    cfn = BBPCostFunction::CFN_BETHE_ENT;
                     break;
             }
 
-            double h = 1e-4;
-            double result = numericBBPTest( bp, &state, opts("updates",updates)("clean_updates",clean_updates), cfn, h );
-            cout << "clean_updates=" << clean_updates << ", updates=" << updates << ", cfn=" << cfn << ", result: " << result << endl;
+            Real h = 1e-4;
+            Real result = numericBBPTest( bp, &state, opts("updates",updates), cfn, h );
+            cout << "result: " << result << ",\tupdates=" << updates << ", cfn=" << cfn << endl;
         }
     }