[Avida-SVN] r3251 - in development/source: actions main
beckma24 at myxo.css.msu.edu
beckma24 at myxo.css.msu.edu
Wed May 20 18:43:49 PDT 2009
Author: beckma24
Date: 2009-05-20 21:43:49 -0400 (Wed, 20 May 2009)
New Revision: 3251
Modified:
development/source/actions/EnvironmentActions.cc
development/source/actions/PrintActions.cc
development/source/main/cDeme.h
development/source/main/cStats.cc
development/source/main/cStats.h
Log:
Added actions SetFracDemeTreatable, PrintDemeTreatableReplicationData, PrintDemeUntreatableReplicationData, and PrintDemeTreatableCount
Modified: development/source/actions/EnvironmentActions.cc
===================================================================
--- development/source/actions/EnvironmentActions.cc 2009-05-20 16:11:08 UTC (rev 3250)
+++ development/source/actions/EnvironmentActions.cc 2009-05-21 01:43:49 UTC (rev 3251)
@@ -921,6 +921,33 @@
}
};
+class cActionSetFracDemeTreatable : public cAction {
+private:
+ double factionTreatable; // total number of unique event to create; they may overlab
+
+public:
+ cActionSetFracDemeTreatable(cWorld* world, const cString& args) :
+ cAction(world, args),
+ factionTreatable(0.0)
+ {
+ cString largs(args);
+ if (largs.GetSize()) factionTreatable = largs.PopWord().AsDouble();
+ }
+
+ static const cString GetDescription() { return "Arguments: <double factionTreatable>"; }
+
+ void Process(cAvidaContext& ctx)
+ {
+ cPopulation& pop = m_world->GetPopulation();
+ int numDemes = pop.GetNumDemes();
+ for(int i = 0; i < numDemes; i++) {
+ if(ctx.GetRandom().P(factionTreatable))
+ pop.GetDeme(i).setTreatable(true);
+ else
+ pop.GetDeme(i).setTreatable(false);
+ }
+ }
+};
class cActionSetConfig : public cAction
{
@@ -951,6 +978,7 @@
void RegisterEnvironmentActions(cActionLibrary* action_lib)
{
+ action_lib->Register<cActionSetFracDemeTreatable>("SetFracDemeTreatable");
action_lib->Register<cActionDelayedDemeEvent>("DelayedDemeEvent");
action_lib->Register<cActionDelayedDemeEventsPerSlots>("DelayedDemeEventsPerSlots");
action_lib->Register<cActionInjectResource>("InjectResource");
Modified: development/source/actions/PrintActions.cc
===================================================================
--- development/source/actions/PrintActions.cc 2009-05-20 16:11:08 UTC (rev 3250)
+++ development/source/actions/PrintActions.cc 2009-05-21 01:43:49 UTC (rev 3251)
@@ -102,6 +102,10 @@
STATS_OUT_FILE(PrintSleepData, sleep.dat );
STATS_OUT_FILE(PrintCompetitionData, competition.dat );
STATS_OUT_FILE(PrintDemeReplicationData, deme_repl.dat );
+STATS_OUT_FILE(PrintDemeTreatableReplicationData, deme_repl_treatable.dat );
+STATS_OUT_FILE(PrintDemeUntreatableReplicationData, deme_repl_untreatable.dat );
+STATS_OUT_FILE(PrintDemeTreatableCount, deme_treatable.dat );
+
STATS_OUT_FILE(PrintDemeCompetitionData, deme_compete.dat);
STATS_OUT_FILE(PrintDemeFoundersData, deme_founders.dat );
STATS_OUT_FILE(PrintPerDemeTasksData, per_deme_tasks.dat );
@@ -3014,6 +3018,11 @@
action_lib->Register<cActionPrintDemeSpacialSleep>("PrintDemeSpacialSleepStats");
action_lib->Register<cActionPrintDemeResources>("PrintDemeResourceStats");
action_lib->Register<cActionPrintDemeReplicationData>("PrintDemeReplicationData");
+ action_lib->Register<cActionPrintDemeTreatableReplicationData>("PrintDemeTreatableReplicationData");
+ action_lib->Register<cActionPrintDemeUntreatableReplicationData>("PrintDemeUntreatableReplicationData");
+ action_lib->Register<cActionPrintDemeTreatableCount>("PrintDemeTreatableCount");
+
+
action_lib->Register<cActionPrintDemeCompetitionData>("PrintDemeCompetitionData");
action_lib->Register<cActionPrintDemeFoundersData>("PrintDemeFoundersData");
action_lib->Register<cActionPrintGermlineData>("PrintGermlineData");
Modified: development/source/main/cDeme.h
===================================================================
--- development/source/main/cDeme.h 2009-05-20 16:11:08 UTC (rev 3250)
+++ development/source/main/cDeme.h 2009-05-21 01:43:49 UTC (rev 3251)
@@ -58,6 +58,7 @@
int width; //!< Width of this deme.
bool replicateDeme;
+ bool treatable;
// The following should be moved to cDemePhenotype / cPopulationPhenotype
int cur_birth_count; //!< Number of organisms that have been born into this deme since reset.
@@ -140,7 +141,7 @@
public:
- cDeme() : _id(0), width(0), replicateDeme(false), cur_birth_count(0), last_birth_count(0), cur_org_count(0), last_org_count(0), injected_count(0), birth_count_perslot(0),
+ cDeme() : _id(0), width(0), replicateDeme(false), treatable(true), cur_birth_count(0), last_birth_count(0), cur_org_count(0), last_org_count(0), injected_count(0), birth_count_perslot(0),
_age(0), generation(0), total_org_energy(0.0),
time_used(0), gestation_time(0), cur_normalized_time_used(0.0), last_normalized_time_used(0.0),
MSG_sendFailed(0), MSG_dropped(0), MSG_SuccessfullySent(0), MSG_sent(0), energyInjectedIntoOrganisms(0.0), energyRemainingInDemeAtReplication(0.0), total_energy_testament(0.0),
@@ -197,6 +198,9 @@
bool TestReplication() const { return replicateDeme; }
void ReplicateDeme() { replicateDeme = true; }
+
+ bool isTreatable() const { return treatable; }
+ void setTreatable(bool value) { treatable = value; }
int GetSlotFlowRate() const;
int GetEventsTotal() const { return eventsTotal; }
Modified: development/source/main/cStats.cc
===================================================================
--- development/source/main/cStats.cc 2009-05-20 16:11:08 UTC (rev 3250)
+++ development/source/main/cStats.cc 2009-05-21 01:43:49 UTC (rev 3251)
@@ -135,6 +135,8 @@
, m_spec_waste(0)
, num_orgs_killed(0)
, m_deme_num_repls(0)
+ , m_deme_num_repls_treatable(0)
+ , m_deme_num_repls_untreatable(0)
, m_donate_to_donor (0)
, m_donate_to_facing (0)
{
@@ -1502,6 +1504,20 @@
m_deme_births.Add(source_deme.GetBirthCount());
m_deme_merit.Add(source_deme.GetHeritableDemeMerit().GetDouble());
m_deme_generation.Add(source_deme.GetGeneration());
+
+ if(source_deme.isTreatable()) {
+ ++m_deme_num_repls_treatable;
+ m_deme_gestation_time_treatable.Add(source_deme.GetAge());
+ m_deme_births_treatable.Add(source_deme.GetBirthCount());
+ m_deme_merit_treatable.Add(source_deme.GetHeritableDemeMerit().GetDouble());
+ m_deme_generation_treatable.Add(source_deme.GetGeneration());
+ } else {
+ ++m_deme_num_repls_untreatable;
+ m_deme_gestation_time_untreatable.Add(source_deme.GetAge());
+ m_deme_births_untreatable.Add(source_deme.GetBirthCount());
+ m_deme_merit_untreatable.Add(source_deme.GetHeritableDemeMerit().GetDouble());
+ m_deme_generation_untreatable.Add(source_deme.GetGeneration());
+ }
}
@@ -1559,7 +1575,84 @@
m_deme_generation.Clear();
}
+/*! Print statistics related to deme replication. Currently only prints the
+ number of deme replications since the last time PrintDemeReplicationData was
+ invoked.
+ */
+void cStats::PrintDemeTreatableReplicationData(const cString& filename)
+{
+ cDataFile& df = m_world->GetDataFile(filename);
+
+ df.WriteComment("Avida deme replication data for treatable deme");
+ df.WriteTimeStamp();
+ df.Write(GetUpdate(), "Update [update]");
+ df.Write(m_deme_num_repls_treatable, "Number of deme replications [numrepl]");
+ df.Write(m_deme_gestation_time_treatable.Average(), "Mean deme gestation time [gesttime]");
+ df.Write(m_deme_births_treatable.Average(), "Mean number of births within replicated demes [numbirths]");
+ df.Write(m_deme_merit_treatable.Average(), "Mean heritable merit of replicated demes [merit]");
+ df.Write(m_deme_generation_treatable.Average(), "Mean generation of replicated demes [generation]");
+
+ df.Endl();
+
+ m_deme_num_repls_treatable = 0;
+ m_deme_gestation_time_treatable.Clear();
+ m_deme_births_treatable.Clear();
+ m_deme_merit_treatable.Clear();
+ m_deme_generation_treatable.Clear();
+}
+/*! Print statistics related to deme replication. Currently only prints the
+ number of deme replications since the last time PrintDemeReplicationData was
+ invoked.
+ */
+void cStats::PrintDemeUntreatableReplicationData(const cString& filename)
+{
+ cDataFile& df = m_world->GetDataFile(filename);
+
+ df.WriteComment("Avida deme replication data for untreatable deme");
+ df.WriteTimeStamp();
+ df.Write(GetUpdate(), "Update [update]");
+ df.Write(m_deme_num_repls_untreatable, "Number of deme replications [numrepl]");
+ df.Write(m_deme_gestation_time_untreatable.Average(), "Mean deme gestation time [gesttime]");
+ df.Write(m_deme_births_untreatable.Average(), "Mean number of births within replicated demes [numbirths]");
+ df.Write(m_deme_merit_untreatable.Average(), "Mean heritable merit of replicated demes [merit]");
+ df.Write(m_deme_generation_untreatable.Average(), "Mean generation of replicated demes [generation]");
+
+ df.Endl();
+
+ m_deme_num_repls_untreatable = 0;
+ m_deme_gestation_time_untreatable.Clear();
+ m_deme_births_untreatable.Clear();
+ m_deme_merit_untreatable.Clear();
+ m_deme_generation_untreatable.Clear();
+}
+
+
+void cStats::PrintDemeTreatableCount(const cString& filename)
+{
+ cPopulation& pop = m_world->GetPopulation();
+ static const int numDemes = pop.GetNumDemes();
+ int treatable(0);
+ int untreatable(0);
+ for(int i = 0; i < numDemes; ++i) {
+ if(pop.GetDeme(i).isTreatable())
+ ++treatable;
+ else
+ ++untreatable;
+ }
+
+ cDataFile& df = m_world->GetDataFile(filename);
+
+ df.WriteComment("Avida deme replication data for untreatable deme");
+ df.WriteTimeStamp();
+ df.Write(GetUpdate(), "Update [update]");
+ df.Write(treatable, "Number demes treatable");
+ df.Write(untreatable, "Number demes untreatable");
+ df.Write(static_cast<double>(treatable)/static_cast<double>(untreatable), "Treatable:untreatable ratio");
+
+ df.Endl();
+}
+
void cStats::PrintGermlineData(const cString& filename)
{
cDataFile& df = m_world->GetDataFile(filename);
Modified: development/source/main/cStats.h
===================================================================
--- development/source/main/cStats.h 2009-05-20 16:11:08 UTC (rev 3250)
+++ development/source/main/cStats.h 2009-05-21 01:43:49 UTC (rev 3251)
@@ -827,6 +827,11 @@
void GermlineReplication(cGermline& source_germline, cGermline& target_germline);
//! Print statistics about deme replication.
void PrintDemeReplicationData(const cString& filename);
+
+ void PrintDemeTreatableReplicationData(const cString& filename);
+ void PrintDemeUntreatableReplicationData(const cString& filename);
+ void PrintDemeTreatableCount(const cString& filename);
+
//! Print statistics about germlines.
void PrintGermlineData(const cString& filename);
//! Accessor for average "generation" of germlines.
@@ -865,7 +870,20 @@
cDoubleSum m_deme_merit; //!< Mean merit of replicated demes.
cDoubleSum m_deme_generation; //!< Mean generation of replicated demes.
cDoubleSum m_germline_generation; //!< "Generation" accumulator of replicated germlines.
- t_founder_map m_deme_founders; //!< Data structure to track the founders of demes.
+
+ int m_deme_num_repls_treatable; //!< Number of deme replications in treatable demes since last PrintDemeReplicationData.
+ cDoubleSum m_deme_gestation_time_treatable; //!< Gestation time for treatable demes - mean age at deme replication.
+ cDoubleSum m_deme_births_treatable; //!< Mean number of births in replicated treatable demes.
+ cDoubleSum m_deme_merit_treatable; //!< Mean merit of replicated treatable demes.
+ cDoubleSum m_deme_generation_treatable; //!< Mean generation of replicated treatable demes.
+
+ int m_deme_num_repls_untreatable; //!< Number of deme replications in untreatable demes since last PrintDemeReplicationData.
+ cDoubleSum m_deme_gestation_time_untreatable; //!< Gestation time for untreatable demes - mean age at deme replication.
+ cDoubleSum m_deme_births_untreatable; //!< Mean number of births in replicated untreatable demes.
+ cDoubleSum m_deme_merit_untreatable; //!< Mean merit of replicated untreatable demes.
+ cDoubleSum m_deme_generation_untreatable; //!< Mean generation of replicated untreatabledemes.
+
+ t_founder_map m_deme_founders; //!< Data structure to track the founders of demes.
// -------- Deme competition support --------
More information about the Avida-cvs
mailing list