[Avida-SVN] r3261 - in development/source: actions main

beckma24 at myxo.css.msu.edu beckma24 at myxo.css.msu.edu
Wed May 27 07:05:55 PDT 2009


Author: beckma24
Date: 2009-05-27 10:05:55 -0400 (Wed, 27 May 2009)
New Revision: 3261

Modified:
   development/source/actions/PrintActions.cc
   development/source/main/cDeme.cc
   development/source/main/cDeme.h
   development/source/main/cDemePredicate.h
   development/source/main/cPopulation.cc
   development/source/main/cPopulation.h
   development/source/main/cStats.cc
   development/source/main/cStats.h
Log:
Added print actions PrintDemeResourceThresholdPredicate that prints the number of demes that were replicated for each deme resource threshold predicate and PrintCurrentMeanDemeDensity that prints the current mean deme density.  Also added mean deme density at replication to the three deme replication print actions

Modified: development/source/actions/PrintActions.cc
===================================================================
--- development/source/actions/PrintActions.cc	2009-05-27 03:10:41 UTC (rev 3260)
+++ development/source/actions/PrintActions.cc	2009-05-27 14:05:55 UTC (rev 3261)
@@ -123,6 +123,7 @@
 
 STATS_OUT_FILE(PrintCurrentTaskCounts,      curr_task_counts.dat);
 STATS_OUT_FILE(PrintGermlineData,           germline.dat        );
+STATS_OUT_FILE(PrintDemeResourceThresholdPredicate,     deme_resourceThresholdPredicate.dat );
 STATS_OUT_FILE(PrintPredicatedMessages,     messages.dat        );
 STATS_OUT_FILE(PrintCellData,               cell_data.dat       );
 STATS_OUT_FILE(PrintCurrentOpinions,        opinions.dat        );
@@ -158,6 +159,7 @@
 POP_OUT_FILE(PrintPhenotypeData,       phenotype_count.dat );
 POP_OUT_FILE(PrintPhenotypeStatus,     phenotype_status.dat);
 POP_OUT_FILE(PrintDemeTestamentStats,  deme_testament.dat  );
+POP_OUT_FILE(PrintCurrentMeanDemeDensity,  deme_currentMeanDensity.dat  );
 
 
 class cActionPrintData : public cAction
@@ -3000,7 +3002,9 @@
   action_lib->Register<cActionPrintPhenotypeStatus>("PrintPhenotypeStatus");
   
   action_lib->Register<cActionPrintDemeTestamentStats>("PrintDemeTestamentStats");
-  
+	action_lib->Register<cActionPrintCurrentMeanDemeDensity>("PrintCurrentMeanDemeDensity");
+
+	action_lib->Register<cActionPrintDemeResourceThresholdPredicate>("PrintDemeResourceThresholdPredicate");
 	action_lib->Register<cActionPrintPredicatedMessages>("PrintPredicatedMessages");
 	action_lib->Register<cActionPrintCellData>("PrintCellData");
 	action_lib->Register<cActionPrintCurrentOpinions>("PrintCurrentOpinions");

Modified: development/source/main/cDeme.cc
===================================================================
--- development/source/main/cDeme.cc	2009-05-27 03:10:41 UTC (rev 3260)
+++ development/source/main/cDeme.cc	2009-05-27 14:05:55 UTC (rev 3261)
@@ -729,7 +729,9 @@
 void cDeme::AddDemeResourceThresholdPredicate(cString resourceName, cString comparisonOperator, double threasholdValue) {
 	cDemeResourceThresholdPredicate* pred = new cDemeResourceThresholdPredicate(resourceName, comparisonOperator, threasholdValue);
 	deme_pred_list.Add(pred);
-	
+
+	cString name = resourceName + " " + comparisonOperator + cStringUtil::Stringf(" %f", threasholdValue);
+	m_world->GetStats().AddDemeResourceThresholdPredicate(name);
 }
 
 void cDeme::AddEventReceivedCenterPred(int times) {

Modified: development/source/main/cDeme.h
===================================================================
--- development/source/main/cDeme.h	2009-05-27 03:10:41 UTC (rev 3260)
+++ development/source/main/cDeme.h	2009-05-27 14:05:55 UTC (rev 3261)
@@ -182,6 +182,7 @@
 
   int GetOrgCount() const { return cur_org_count; }
   int GetLastOrgCount() const { return last_org_count; }
+	double GetDensity() const { return static_cast<double>(cur_org_count) / static_cast<double>(GetSize()); }
 
   void IncOrgCount() { cur_org_count++; }
   void DecOrgCount() { cur_org_count--; }

Modified: development/source/main/cDemePredicate.h
===================================================================
--- development/source/main/cDemePredicate.h	2009-05-27 03:10:41 UTC (rev 3260)
+++ development/source/main/cDemePredicate.h	2009-05-27 14:05:55 UTC (rev 3261)
@@ -98,7 +98,10 @@
 	void Reset() { previouslySatisfied = false; }
 	bool PreviouslySatisfied() { return previouslySatisfied; }
 	cString GetName() { return cString("cDemeResourceThreshold"); }
-	void UpdateStats(cStats& stats) {;}
+	void UpdateStats(cStats& stats) {
+		cString name = demeResourceName + " " + compareOperator + cStringUtil::Stringf(" %f", resourceThresholdValue);
+		stats.IncDemeResourceThresholdPredicate(name);
+	}
 };
 
 #endif

Modified: development/source/main/cPopulation.cc
===================================================================
--- development/source/main/cPopulation.cc	2009-05-27 03:10:41 UTC (rev 3260)
+++ development/source/main/cPopulation.cc	2009-05-27 14:05:55 UTC (rev 3261)
@@ -2654,6 +2654,21 @@
   stats.SumEnergyTestamentToNeighborOrganisms().Clear();
 }
 
+void cPopulation::PrintCurrentMeanDemeDensity(const cString& filename) {	
+	cDoubleSum demeDensity;
+	demeDensity.Clear();
+	const int num_demes = deme_array.GetSize();
+	for (int deme_id = 0; deme_id < num_demes; ++deme_id) {
+    const cDeme & cur_deme = deme_array[deme_id];
+		demeDensity.Add(cur_deme.GetDensity());
+	}
+	
+	cDataFile& df = m_world->GetDataFile(filename);
+  df.WriteTimeStamp();
+  df.Write(m_world->GetStats().GetUpdate(), "Update");
+	df.Write(demeDensity.Average(), "Current mean deme density");
+	df.Endl();
+}
 
 // Print some stats about the energy sharing behavior of each deme
 void cPopulation::PrintDemeEnergySharingStats() {
@@ -2674,7 +2689,7 @@
   double amount_received = 0.0;
   double amount_applied = 0.0;  
   
-  for (int deme_id = 0; deme_id < num_demes; deme_id++) {
+  for (int deme_id = 0; deme_id < num_demes; ++deme_id) {
     const cDeme & cur_deme = deme_array[deme_id];
     
     for (int i = 0; i < cur_deme.GetSize(); i++) {

Modified: development/source/main/cPopulation.h
===================================================================
--- development/source/main/cPopulation.h	2009-05-27 03:10:41 UTC (rev 3260)
+++ development/source/main/cPopulation.h	2009-05-27 14:05:55 UTC (rev 3261)
@@ -229,6 +229,7 @@
   // Deme-related stats methods
   void PrintDemeAllStats();
   void PrintDemeTestamentStats(const cString& filename);
+	void PrintCurrentMeanDemeDensity(const cString& filename);
   void PrintDemeEnergySharingStats();
   void PrintDemeEnergyDistributionStats();
   void PrintDemeOrganismEnergyDistributionStats();

Modified: development/source/main/cStats.cc
===================================================================
--- development/source/main/cStats.cc	2009-05-27 03:10:41 UTC (rev 3260)
+++ development/source/main/cStats.cc	2009-05-27 14:05:55 UTC (rev 3261)
@@ -1446,7 +1446,30 @@
   relative_pos_pred_sat.ElementAt(pos.first, pos.second)++;
 }
 
+void cStats::AddDemeResourceThresholdPredicate(cString& name) {
+	demeResourceThresholdPredicateMap[name] = 0;
+}
+	
+void cStats::IncDemeResourceThresholdPredicate(cString& name) {
+	++demeResourceThresholdPredicateMap[name];
+}
 
+void cStats::PrintDemeResourceThresholdPredicate(const cString& filename)
+{
+  cDataFile& df = m_world->GetDataFile(filename);
+  df.WriteComment("Avida deme resource threshold predicate data");
+	df.WriteComment("Number of deme reproduced by a specific threshold since last update that data was printed");
+  df.WriteTimeStamp();
+  
+	if(demeResourceThresholdPredicateMap.size() > 0) {
+		df.Write(GetUpdate(), "Update [update]");
+		for(map<cString, int>::iterator iter = demeResourceThresholdPredicateMap.begin(); iter != demeResourceThresholdPredicateMap.end(); ++iter) {
+			df.Write(iter->second, iter->first);
+			iter->second = 0;
+		}
+		df.Endl();
+	}	
+}
 
 /*! This method prints information contained within all active message predicates.
 
@@ -1504,6 +1527,7 @@
   m_deme_births.Add(source_deme.GetBirthCount());
   m_deme_merit.Add(source_deme.GetHeritableDemeMerit().GetDouble());
   m_deme_generation.Add(source_deme.GetGeneration());
+	m_deme_density.Add(source_deme.GetDensity());
 	
 	if(source_deme.isTreatable()) {
 		++m_deme_num_repls_treatable;
@@ -1511,12 +1535,14 @@
 		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());		
+		m_deme_density_treatable.Add(source_deme.GetDensity());
 	} 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());
+		m_deme_density_untreatable.Add(source_deme.GetDensity());
 	}
 }
 
@@ -1565,7 +1591,8 @@
   df.Write(m_deme_births.Average(), "Mean number of births within replicated demes [numbirths]");
   df.Write(m_deme_merit.Average(), "Mean heritable merit of replicated demes [merit]");
   df.Write(m_deme_generation.Average(), "Mean generation of replicated demes [generation]");
-  
+  df.Write(m_deme_density.Average(), "Mean density of replicated demes [density]");
+	
   df.Endl();
   
   m_deme_num_repls = 0;
@@ -1573,6 +1600,7 @@
   m_deme_births.Clear();
   m_deme_merit.Clear();
   m_deme_generation.Clear();
+	m_deme_density.Clear();
 }
 
 /*! Print statistics related to deme replication.  Currently only prints the
@@ -1591,6 +1619,7 @@
   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.Write(m_deme_density_treatable.Average(), "Mean density of replicated demes [density]");
   
   df.Endl();
   
@@ -1599,6 +1628,7 @@
   m_deme_births_treatable.Clear();
   m_deme_merit_treatable.Clear();
   m_deme_generation_treatable.Clear();
+	m_deme_density_treatable.Clear();
 }
 
 /*! Print statistics related to deme replication.  Currently only prints the
@@ -1617,6 +1647,7 @@
   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.Write(m_deme_density_untreatable.Average(), "Mean density of replicated demes [density]");
   
   df.Endl();
   
@@ -1625,6 +1656,7 @@
   m_deme_births_untreatable.Clear();
   m_deme_merit_untreatable.Clear();
   m_deme_generation_untreatable.Clear();
+	m_deme_density_untreatable.Clear();
 }
 
 

Modified: development/source/main/cStats.h
===================================================================
--- development/source/main/cStats.h	2009-05-27 03:10:41 UTC (rev 3260)
+++ development/source/main/cStats.h	2009-05-27 14:05:55 UTC (rev 3261)
@@ -320,6 +320,7 @@
   // deme predicate stats
   tMatrix<int> relative_pos_event_count;
   tMatrix<int> relative_pos_pred_sat;
+	std::map<cString, int> demeResourceThresholdPredicateMap;
 
   // Speculative Execution Stats
   int m_spec_total;
@@ -780,6 +781,10 @@
   void IncEventCount(int x, int y);
   void IncPredSat(int cell_id);
   void PrintPredSatFracDump(const cString& filename);
+	
+	void AddDemeResourceThresholdPredicate(cString& name);
+	void IncDemeResourceThresholdPredicate(cString& name);
+	void PrintDemeResourceThresholdPredicate(const cString& filename);
 
   void addOrgLocations(std::vector<std::pair<int, int> >); 
   void PrintDemeRepOrgLocation(const cString& filename);
@@ -869,6 +874,7 @@
   cDoubleSum m_deme_births; //!< Mean number of births in replicated demes.
   cDoubleSum m_deme_merit; //!< Mean merit of replicated demes.
   cDoubleSum m_deme_generation; //!< Mean generation of replicated demes.
+	cDoubleSum m_deme_density; //!< Mean density of replicated demes.
   cDoubleSum m_germline_generation; //!< "Generation" accumulator of replicated germlines.
 
 	int m_deme_num_repls_treatable; //!< Number of deme replications in treatable demes since last PrintDemeReplicationData.
@@ -876,12 +882,14 @@
   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.
+	cDoubleSum m_deme_density_treatable; //!< Mean density 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.
+  cDoubleSum m_deme_generation_untreatable; //!< Mean generation of replicated untreatable demes.
+	cDoubleSum m_deme_density_untreatable; //!< Mean density of replicated untreatable demes.
 	
 	t_founder_map m_deme_founders; //!< Data structure to track the founders of demes.
   




More information about the Avida-cvs mailing list