From b0c4c533ceb0c6ce7c1c2b418e4dafca4e2e8616 Mon Sep 17 00:00:00 2001 From: Elliot Robinson Date: Wed, 3 Sep 2014 15:44:29 -0400 Subject: [PATCH] Sets random seeds by default in singlePopMcmc and multiPopMcmc Maintains the ability to specify a seed from the command line --- base9/Settings.cpp | 1 - base9/Settings.hpp | 2 +- multiPopMcmc/MpiMcmcApplication.cpp | 1 + multiPopMcmc/mpiMcmc.cpp | 6 ++++++ singlePopMcmc/MpiMcmcApplication.cpp | 1 + singlePopMcmc/mpiMcmc.cpp | 8 ++++++++ 6 files changed, 17 insertions(+), 2 deletions(-) diff --git a/base9/Settings.cpp b/base9/Settings.cpp index e72e93c..74853d1 100644 --- a/base9/Settings.cpp +++ b/base9/Settings.cpp @@ -141,7 +141,6 @@ void Settings::fromYaml (const string yamlFile) scatterCluster.exposures = tNode.as>(); } - seed = getOrDie(generalNode, "seed"); verbose = getOrDie(generalNode, "verbose"); // When we switch to C++11, we can change these to std::string and remove most of the cruft diff --git a/base9/Settings.hpp b/base9/Settings.hpp index 18a2e8a..6010e83 100644 --- a/base9/Settings.hpp +++ b/base9/Settings.hpp @@ -16,7 +16,7 @@ class Settings bool noBinaries; - uint32_t seed; + uint32_t seed = std::numeric_limits::max(); unsigned int threads = std::numeric_limits::max(); int verbose; diff --git a/multiPopMcmc/MpiMcmcApplication.cpp b/multiPopMcmc/MpiMcmcApplication.cpp index f9fa287..19b5b39 100644 --- a/multiPopMcmc/MpiMcmcApplication.cpp +++ b/multiPopMcmc/MpiMcmcApplication.cpp @@ -279,6 +279,7 @@ int MpiMcmcApplication::run() } // end initChain + cout << "Seed: " << settings.seed << endl; cout << "FSlike: " << fsLike << endl; // Assuming fsLike doesn't change, this is the "global" logPost function diff --git a/multiPopMcmc/mpiMcmc.cpp b/multiPopMcmc/mpiMcmc.cpp index a2ed575..f55bb67 100644 --- a/multiPopMcmc/mpiMcmc.cpp +++ b/multiPopMcmc/mpiMcmc.cpp @@ -23,6 +23,12 @@ int main (int argc, char *argv[]) settings.fromCLI (argc, argv); + if (settings.seed == std::numeric_limits::max()) + { + srand(std::time(0)); + settings.seed = rand(); + } + MpiMcmcApplication master(settings); try diff --git a/singlePopMcmc/MpiMcmcApplication.cpp b/singlePopMcmc/MpiMcmcApplication.cpp index c56910e..7142664 100644 --- a/singlePopMcmc/MpiMcmcApplication.cpp +++ b/singlePopMcmc/MpiMcmcApplication.cpp @@ -285,6 +285,7 @@ int MpiMcmcApplication::run() } // end initChain + cout << "Seed: " << settings.seed << endl; cout << "FSlike: " << fsLike << endl; // Assuming fsLike doesn't change, this is the "global" logPost function diff --git a/singlePopMcmc/mpiMcmc.cpp b/singlePopMcmc/mpiMcmc.cpp index a2ed575..e32be16 100644 --- a/singlePopMcmc/mpiMcmc.cpp +++ b/singlePopMcmc/mpiMcmc.cpp @@ -1,3 +1,5 @@ +#include +#include #include #include "MpiMcmcApplication.hpp" @@ -23,6 +25,12 @@ int main (int argc, char *argv[]) settings.fromCLI (argc, argv); + if (settings.seed == std::numeric_limits::max()) + { + srand(std::time(0)); + settings.seed = rand(); + } + MpiMcmcApplication master(settings); try