[Avida-SVN] r2190 - branches/dkdev/source/main
dknoester at myxo.css.msu.edu
dknoester at myxo.css.msu.edu
Sun Nov 11 05:47:46 PST 2007
Author: dknoester
Date: 2007-11-11 08:47:45 -0500 (Sun, 11 Nov 2007)
New Revision: 2190
Modified:
branches/dkdev/source/main/cPopulation.cc
branches/dkdev/source/main/cStats.cc
Log:
Added stats tracking for specifically non-zero deme trial merit.
Modified: branches/dkdev/source/main/cPopulation.cc
===================================================================
--- branches/dkdev/source/main/cPopulation.cc 2007-11-10 22:16:44 UTC (rev 2189)
+++ branches/dkdev/source/main/cPopulation.cc 2007-11-11 13:47:45 UTC (rev 2190)
@@ -1313,6 +1313,7 @@
// Yes, we're using germlines. Check to see if we need to do anything with
// germline merit.
if(m_world->GetConfig().DEMES_HAVE_MERIT.Get()) {
+ assert(m_world->GetConfig().DEME_REPLICATION_TRIALS.Get() > 0);
source_deme.GetGermline().UpdateMerit((double)std::accumulate(source_deme.GetTrials().begin(),
source_deme.GetTrials().end(), 0.0)
/ m_world->GetConfig().DEME_REPLICATION_TRIALS.Get());
Modified: branches/dkdev/source/main/cStats.cc
===================================================================
--- branches/dkdev/source/main/cStats.cc 2007-11-10 22:16:44 UTC (rev 2189)
+++ branches/dkdev/source/main/cStats.cc 2007-11-11 13:47:45 UTC (rev 2190)
@@ -25,6 +25,8 @@
#include <string>
#include <sstream>
#include <fstream>
+#include <functional>
+#include <algorithm>
#include <boost/graph/graphviz.hpp>
@@ -1004,6 +1006,11 @@
if(m_world->GetConfig().DEMES_USE_GERMLINE.Get() && m_world->GetConfig().DEMES_HAVE_MERIT.Get()) {
_deme_last_germline = deme.GetGermline();
_deme_merit.Add(deme.GetGermline().GetMerit().GetDouble());
+ // Calculate the non-zero deme merit:
+ unsigned int nz = std::count_if(deme.GetTrials().begin(), deme.GetTrials().end(), std::bind2nd(std::not_equal_to<double>(), 0.0));
+ if(nz != 0) {
+ _deme_merit_nonzero.Add(deme.GetGermline().GetMerit().GetDouble()/(double)nz);
+ }
if(deme.GetGermline().GetMerit().GetDouble() > _deme_max_germline_merit) {
_deme_max_germline_merit = deme.GetGermline().GetMerit().GetDouble();
_deme_max_germline = deme.GetGermline();
@@ -1034,6 +1041,7 @@
df.WriteTimeStamp();
df.Write(GetUpdate(), "update [update]");
df.Write(_deme_merit.Average(), "mean germline merit of replicated demes [mean_merit]");
+ df.Write(_deme_merit_nonzero.Average(), "mean germline merit of replicated demes, non-zero only [mean_merit_nz]");
df.Write(_deme_max_germline_merit, "max germline merit of replicated demes [max_merit]");
if(_deme_max_germline.Size() > 0) {
df.Write(_deme_max_germline.GetLatest().AsString(), "max germline genome [max_genome]");
@@ -1042,6 +1050,7 @@
}
df.Endl();
_deme_merit.Clear();
+ _deme_merit_nonzero.Clear();
_deme_max_germline_merit = 0.0;
}
More information about the Avida-cvs
mailing list