[Avida-SVN] r3016 - in development: Avida.xcodeproj source/actions source/main support/config

brysonda at myxo.css.msu.edu brysonda at myxo.css.msu.edu
Tue Dec 9 12:32:48 PST 2008


Author: brysonda
Date: 2008-12-09 15:32:48 -0500 (Tue, 09 Dec 2008)
New Revision: 3016

Modified:
   development/Avida.xcodeproj/project.pbxproj
   development/source/actions/PrintActions.cc
   development/source/main/cAvidaConfig.h
   development/source/main/cDeme.cc
   development/source/main/cEnvironment.cc
   development/source/main/cEnvironment.h
   development/source/main/cPhenotype.cc
   development/source/main/cPhenotype.h
   development/source/main/cPopulation.cc
   development/source/main/cStats.cc
   development/source/main/cStats.h
   development/source/main/cTaskLib.h
   development/source/main/cWorld.cc
   development/source/main/cWorld.h
   development/support/config/avida.cfg
Log:
Add better, more complete support for outputting reaction statistics.

Modified: development/Avida.xcodeproj/project.pbxproj
===================================================================
--- development/Avida.xcodeproj/project.pbxproj	2008-12-09 14:40:02 UTC (rev 3015)
+++ development/Avida.xcodeproj/project.pbxproj	2008-12-09 20:32:48 UTC (rev 3016)
@@ -34,6 +34,7 @@
 		56F555E70C3B402A00E2E929 /* viewer-text.cc in Sources */ = {isa = PBXBuildFile; fileRef = 56F555E40C3B402A00E2E929 /* viewer-text.cc */; };
 		700E2996085A1F6000CF158A /* avida in CopyFiles */ = {isa = PBXBuildFile; fileRef = DCC3164D07626CF3008F7A48 /* avida */; };
 		700E2B87085DE54400CF158A /* avida-viewer in CopyFiles */ = {isa = PBXBuildFile; fileRef = 700E2B83085DE50C00CF158A /* avida-viewer */; };
+		701B5F170EEEF3030073ACB4 /* cPhenPlastGenotype.cc in Sources */ = {isa = PBXBuildFile; fileRef = B4FA259E0C5EB7600086D4B5 /* cPhenPlastGenotype.cc */; };
 		70211A5D0ECBD531004A293A /* cRCObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 70211A5B0ECBD531004A293A /* cRCObject.h */; };
 		70211A5E0ECBD531004A293A /* cRCObject.cc in Sources */ = {isa = PBXBuildFile; fileRef = 70211A5C0ECBD531004A293A /* cRCObject.cc */; };
 		7023EC3A0C0A431B00362B9C /* avida.cc in Sources */ = {isa = PBXBuildFile; fileRef = DCC3109C0762539E008F7A48 /* avida.cc */; };
@@ -2127,6 +2128,7 @@
 			buildActionMask = 2147483647;
 			files = (
 				70DCAC9C097AF7C0002F8733 /* primitive.cc in Sources */,
+				701B5F170EEEF3030073ACB4 /* cPhenPlastGenotype.cc in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};

Modified: development/source/actions/PrintActions.cc
===================================================================
--- development/source/actions/PrintActions.cc	2008-12-09 14:40:02 UTC (rev 3015)
+++ development/source/actions/PrintActions.cc	2008-12-09 20:32:48 UTC (rev 3016)
@@ -82,8 +82,10 @@
 STATS_OUT_FILE(PrintTasksQualData,          tasks_quality.dat   );
 STATS_OUT_FILE(PrintResourceData,           resource.dat        );
 STATS_OUT_FILE(PrintReactionData,           reactions.dat       );
+STATS_OUT_FILE(PrintReactionExeData,        reactions_exe.dat   );
 STATS_OUT_FILE(PrintCurrentReactionData,    cur_reactions.dat   );
 STATS_OUT_FILE(PrintReactionRewardData,     reaction_reward.dat );
+STATS_OUT_FILE(PrintCurrentReactionRewardData,     cur_reaction_reward.dat );
 STATS_OUT_FILE(PrintTimeData,               time.dat            );
 STATS_OUT_FILE(PrintMutationRateData,       mutation_rates.dat  );
 STATS_OUT_FILE(PrintDivideMutData,          divide_mut.dat      );
@@ -2700,8 +2702,10 @@
   action_lib->Register<cActionPrintTasksQualData>("PrintTasksQualData");
   action_lib->Register<cActionPrintResourceData>("PrintResourceData");
   action_lib->Register<cActionPrintReactionData>("PrintReactionData");
+  action_lib->Register<cActionPrintReactionExeData>("PrintReactionExeData");
   action_lib->Register<cActionPrintCurrentReactionData>("PrintCurrentReactionData");  
   action_lib->Register<cActionPrintReactionRewardData>("PrintReactionRewardData");
+  action_lib->Register<cActionPrintCurrentReactionRewardData>("PrintCurrentReactionRewardData");
   action_lib->Register<cActionPrintTimeData>("PrintTimeData");
   action_lib->Register<cActionPrintMutationRateData>("PrintMutationRateData");
   action_lib->Register<cActionPrintDivideMutData>("PrintDivideMutData");

Modified: development/source/main/cAvidaConfig.h
===================================================================
--- development/source/main/cAvidaConfig.h	2008-12-09 14:40:02 UTC (rev 3015)
+++ development/source/main/cAvidaConfig.h	2008-12-09 20:32:48 UTC (rev 3016)
@@ -378,8 +378,8 @@
   CONFIG_ADD_VAR(POINT_MUT_PROB, double, 0.0, "Mutation rate (per-location per update)");
 
   CONFIG_ADD_VAR(COPY_MUT_PROB, double, 0.0075, "Mutation rate (per copy)");
-  CONFIG_ADD_VAR(COPY_INS_PROB, double, 0.0075, "Insertion rate (per copy)");
-  CONFIG_ADD_VAR(COPY_DEL_PROB, double, 0.0075, "Deletion rate (per copy)");
+  CONFIG_ADD_VAR(COPY_INS_PROB, double, 0.0, "Insertion rate (per copy)");
+  CONFIG_ADD_VAR(COPY_DEL_PROB, double, 0.0, "Deletion rate (per copy)");
   CONFIG_ADD_VAR(COPY_UNIFORM_PROB, double, 0.0, "Uniform mutation probability (per copy)\n- Randomly applies any of the three classes of mutations (ins, del, point).");
   CONFIG_ADD_VAR(COPY_SLIP_PROB, double, 0.0, "Slip rate (per copy)");
 

Modified: development/source/main/cDeme.cc
===================================================================
--- development/source/main/cDeme.cc	2008-12-09 14:40:02 UTC (rev 3015)
+++ development/source/main/cDeme.cc	2008-12-09 20:32:48 UTC (rev 3016)
@@ -50,7 +50,7 @@
   _next_merit = 1.0;
   
   const int num_tasks = m_world->GetEnvironment().GetNumTasks();
-  const int num_reactions = m_world->GetNumReactions();  
+  const int num_reactions = m_world->GetEnvironment().GetNumReactions();  
   
   cur_task_exe_count.Resize(num_tasks);
   cur_task_exe_count.SetAll(0);

Modified: development/source/main/cEnvironment.cc
===================================================================
--- development/source/main/cEnvironment.cc	2008-12-09 14:40:02 UTC (rev 3015)
+++ development/source/main/cEnvironment.cc	2008-12-09 20:32:48 UTC (rev 3016)
@@ -1304,10 +1304,15 @@
     } 
 }
 
-double cEnvironment::GetReactionValue(int& reaction_id)
+const cString& cEnvironment::GetReactionName(int reaction_id) const
 {
+  return reaction_lib.GetReaction(reaction_id)->GetName();
+}
+
+double cEnvironment::GetReactionValue(int reaction_id)
+{
   cReaction* found_reaction = reaction_lib.GetReaction(reaction_id);
-  if (found_reaction == NULL) return false;
+  if (found_reaction == NULL) return 0.0;
   return found_reaction->GetValue();
 }
 
@@ -1387,7 +1392,7 @@
   cReaction* found_reaction = reaction_lib.GetReaction(name);
   if (found_reaction == NULL) return false;
 
-  for(int i=0; i<m_tasklib.GetSize(); i++)
+  for (int i=0; i<m_tasklib.GetSize(); i++)
   {
     if (m_tasklib.GetTask(i).GetName() == task) 
     {

Modified: development/source/main/cEnvironment.h
===================================================================
--- development/source/main/cEnvironment.h	2008-12-09 14:40:02 UTC (rev 3015)
+++ development/source/main/cEnvironment.h	2008-12-09 20:32:48 UTC (rev 3016)
@@ -153,6 +153,8 @@
   bool UseNeighborInput() const { return m_tasklib.UseNeighborInput(); }
   bool UseNeighborOutput() const { return m_tasklib.UseNeighborOutput(); }
 
+  
+  int GetNumReactions() const { return reaction_lib.GetSize(); }
   const cResourceLib& GetResourceLib() const { return resource_lib; }
   const cReactionLib& GetReactionLib() const { return reaction_lib; }
   const cMutationLib& GetMutationLib() const { return mutation_lib; }
@@ -168,7 +170,8 @@
   int GetInputSize()  const { return m_input_size; };
   int GetOutputSize() const { return m_output_size; };
 
-  double GetReactionValue(int& reaction_id);
+  const cString& GetReactionName(int reaction_id) const;
+  double GetReactionValue(int reaction_id);
   bool SetReactionValue(cAvidaContext& ctx, const cString& name, double value);
   bool SetReactionValueMult(const cString& name, double value_mult);
   bool SetReactionInst(const cString& name, cString inst_name);

Modified: development/source/main/cPhenotype.cc
===================================================================
--- development/source/main/cPhenotype.cc	2008-12-09 14:40:02 UTC (rev 3015)
+++ development/source/main/cPhenotype.cc	2008-12-09 20:32:48 UTC (rev 3016)
@@ -286,8 +286,7 @@
  *     - this is the first method run on an otherwise freshly built phenotype.
  **/
 
-void cPhenotype::SetupOffspring(const cPhenotype & parent_phenotype,
-				const cGenome & _genome)
+void cPhenotype::SetupOffspring(const cPhenotype& parent_phenotype, const cGenome& _genome)
 {
   // Copy divide values from parent, which should already be setup.
   merit           = parent_phenotype.merit;

Modified: development/source/main/cPhenotype.h
===================================================================
--- development/source/main/cPhenotype.h	2008-12-09 14:40:02 UTC (rev 3015)
+++ development/source/main/cPhenotype.h	2008-12-09 20:32:48 UTC (rev 3016)
@@ -339,6 +339,7 @@
   const tArray<double>& GetCurRBinsTotal() const { assert(initialized == true); return cur_rbins_total; }
   const tArray<double>& GetCurRBinsAvail() const { assert(initialized == true); return cur_rbins_avail; }
   const tArray<int>& GetCurReactionCount() const { assert(initialized == true); return cur_reaction_count;}
+  const tArray<double>& GetCurReactionAddReward() const { assert(initialized == true); return cur_reaction_add_reward;}
   const tArray<int>& GetCurInstCount() const { assert(initialized == true); return cur_inst_count; }
   const tArray<int>& GetCurSenseCount() const { assert(initialized == true); return cur_sense_count; }
   double GetSensedResource(int _in) { assert(initialized == true); return sensed_resources[_in]; }

Modified: development/source/main/cPopulation.cc
===================================================================
--- development/source/main/cPopulation.cc	2008-12-09 14:40:02 UTC (rev 3015)
+++ development/source/main/cPopulation.cc	2008-12-09 20:32:48 UTC (rev 3016)
@@ -3677,7 +3677,7 @@
   stats.SumMemSize().Clear();
   
   stats.ZeroTasks();
-  stats.ZeroRewards();
+  stats.ZeroReactions();
   
 #if INSTRUCTION_COUNT
   stats.ZeroInst();
@@ -3763,11 +3763,8 @@
         stats.AddLastTask(j);
         stats.AddLastTaskQuality(j, phenotype.GetLastTaskQuality()[j]);
         stats.IncTaskExeCount(j, phenotype.GetLastTaskCount()[j]);
-      } 
-    }
-    
-    // Test what tasks this organism has completed using internal resources.
-    for (int j = 0; j < m_world->GetEnvironment().GetNumTasks(); j++) {
+      }
+
       if (phenotype.GetCurInternalTaskCount()[j] > 0) {
         stats.AddCurInternalTask(j);
         stats.AddCurInternalTaskQuality(j, phenotype.GetCurInternalTaskQuality()[j]);
@@ -3780,8 +3777,17 @@
     }    
     
     // Record what add bonuses this organism garnered for different reactions    
-    for (int j = 0; j < m_world->GetNumReactions(); j++) {
-      stats.AddLastReactionAddReward(j, phenotype.GetLastReactionAddReward()[j]);    
+    for (int j = 0; j < m_world->GetEnvironment().GetNumReactions(); j++) {
+      if (phenotype.GetCurReactionCount()[j] > 0) {
+        stats.AddCurReaction(j);
+        stats.AddCurReactionAddReward(j, phenotype.GetCurReactionAddReward()[j]);
+      }
+      
+      if (phenotype.GetLastReactionCount()[j] > 0) {
+        stats.AddLastReaction(j);
+        stats.IncReactionExeCount(j, phenotype.GetLastTaskCount()[j]);
+        stats.AddLastReactionAddReward(j, phenotype.GetLastReactionAddReward()[j]);    
+      }
     }
     
     // Test what resource combinations this creature has sensed

Modified: development/source/main/cStats.cc
===================================================================
--- development/source/main/cStats.cc	2008-12-09 14:40:02 UTC (rev 3015)
+++ development/source/main/cStats.cc	2008-12-09 20:32:48 UTC (rev 3016)
@@ -175,11 +175,18 @@
 #endif
   inst_names.Resize(m_world->GetNumInstructions());
 
-  reaction_count.Resize( m_world->GetNumReactions() );
-  reaction_count.SetAll(0);
+  const int num_reactions = env.GetNumReactions();
+  m_reaction_cur_count.Resize(num_reactions);
+  m_reaction_last_count.Resize(num_reactions);
+  m_reaction_cur_add_reward.Resize(num_reactions);
+  m_reaction_last_add_reward.Resize(num_reactions);
+  m_reaction_exe_count.Resize(num_reactions);
+  m_reaction_cur_count.SetAll(0);
+  m_reaction_last_count.SetAll(0);
+  m_reaction_cur_add_reward.SetAll(0.0);
+  m_reaction_last_add_reward.SetAll(0.0);
+  m_reaction_exe_count.SetAll(0);
   
-  reaction_add_reward.Resize( m_world->GetNumReactions() );
-  reaction_add_reward.SetAll(0);
 
   resource_count.Resize( m_world->GetNumResources() );
   resource_count.SetAll(0);
@@ -188,10 +195,11 @@
   resource_geometry.SetAll(nGeometry::GLOBAL);
 
   task_names.Resize(num_tasks);
-  for (int i = 0; i < num_tasks; i++)
-    task_names[i] = env.GetTask(i).GetDesc();
+  for (int i = 0; i < num_tasks; i++) task_names[i] = env.GetTask(i).GetDesc();
   
-  reaction_names.Resize( m_world->GetNumReactions() );
+  reaction_names.Resize(num_reactions);
+  for (int i = 0; i < num_reactions; i++) reaction_names[i] = env.GetReactionName(i);
+  
   resource_names.Resize( m_world->GetNumResources() );
 
   // This block calculates how many slots we need to
@@ -352,25 +360,26 @@
 
 void cStats::ZeroTasks()
 {
-  for (int i = 0; i < task_cur_count.GetSize(); i++) {
-    task_cur_count[i] = 0;
-    task_last_count[i] = 0;
-    task_cur_quality[i] = 0;
-    task_last_quality[i] = 0;
-    task_last_max_quality[i] = 0;
-    task_cur_max_quality[i] = 0;
-    task_internal_cur_count[i] = 0;
-    task_internal_cur_quality[i] = 0;
-    task_internal_cur_max_quality[i] = 0;
-    task_internal_last_count[i] = 0;
-    task_internal_last_quality[i] = 0;
-    task_internal_last_max_quality[i] = 0;
-  }
+  task_cur_count.SetAll(0);
+  task_last_count.SetAll(0);
+  task_cur_quality.SetAll(0);
+  task_last_quality.SetAll(0);
+  task_last_max_quality.SetAll(0);
+  task_cur_max_quality.SetAll(0);
+  task_internal_cur_count.SetAll(0);
+  task_internal_cur_quality.SetAll(0);
+  task_internal_cur_max_quality.SetAll(0);
+  task_internal_last_count.SetAll(0);
+  task_internal_last_quality.SetAll(0);
+  task_internal_last_max_quality.SetAll(0);
 }
 
-void cStats::ZeroRewards()
+void cStats::ZeroReactions()
 {
-  reaction_add_reward.SetAll(0);
+  m_reaction_cur_count.SetAll(0);
+  m_reaction_last_count.SetAll(0);
+  m_reaction_cur_add_reward.SetAll(0);
+  m_reaction_last_add_reward.SetAll(0);
 }
 
 
@@ -528,7 +537,11 @@
   sense_last_count.SetAll(0);
   sense_last_exe_count.SetAll(0);
 
-  reaction_add_reward.SetAll(0);
+  m_reaction_cur_count.SetAll(0);
+  m_reaction_last_count.SetAll(0);
+  m_reaction_cur_add_reward.SetAll(0.0);
+  m_reaction_last_add_reward.SetAll(0.0);
+  m_reaction_exe_count.SetAll(0);
 
   dom_merit = 0;
   dom_gestation = 0.0;
@@ -910,7 +923,6 @@
   df.Write(m_update,   "Update");
   for (int i = 0; i < task_exe_count.GetSize(); i++) {
     df.Write(task_exe_count[i], task_names[i] );
-    task_exe_count[i] = 0;
   }
   df.Endl();
 }
@@ -942,31 +954,11 @@
   df.WriteComment("First column gives the current update, all further columns give the number");
   df.WriteComment("of currently living organisms each reaction has affected.");
 
-  df.Write(m_update,   "Update");
-  
-  const int num_reactions=m_world->GetEnvironment().GetReactionLib().GetSize();
-  tArray<int> reactions(num_reactions);
-  reactions.SetAll(0);
-  
-  for(int i=0; i<m_world->GetPopulation().GetSize(); ++i) {
-    cPopulationCell& cell = m_world->GetPopulation().GetCell(i);
-    if(cell.IsOccupied()) {
-      const tArray<int>& org_rx = cell.GetOrganism()->GetPhenotype().GetLastReactionCount();
-      for(int j=0; j<num_reactions; ++j) {
-        reactions[j] += org_rx[j];
-      }
-    }
-  }
-    
-  for(int i=0; i<num_reactions; ++i) {
-    df.Write(reactions[i], m_world->GetEnvironment().GetReactionLib().GetReaction(i)->GetName());
-  }
-  
-//    df.Write( 0.0, 
-//    df.Write(reaction_count[i], reaction_names[i] );
-//    task_exe_count[i] = 0;
-//  }
-  df.Endl();
+	df.Write(m_update,   "Update");
+	for(int i = 0; i < m_reaction_last_count.GetSize(); i++) {
+		df.Write(m_reaction_last_count[i], reaction_names[i]);
+	}
+	df.Endl();
 }
 
 void cStats::PrintCurrentReactionData(const cString& filename)
@@ -978,46 +970,60 @@
   df.WriteComment("First column gives the current update, all further columns give the number");
   df.WriteComment("of currently living organisms each reaction has affected.");
 
+	df.Write(m_update,   "Update");
+	for(int i = 0; i < m_reaction_cur_count.GetSize(); i++) {
+		df.Write(m_reaction_cur_count[i], reaction_names[i]);
+	}
+	df.Endl();
+}
+
+
+void cStats::PrintReactionRewardData(const cString& filename)
+{
+  cDataFile& df = m_world->GetDataFile(filename);
+
+  df.WriteComment("Avida reaction data");
+  df.WriteTimeStamp();
+  df.WriteComment("First column gives the current update, all further columns give the add bonus reward");
+  df.WriteComment("currently living organisms have garnered from each reaction.");
+
   df.Write(m_update,   "Update");
-  
-  const int num_reactions=m_world->GetEnvironment().GetReactionLib().GetSize();
-  tArray<int> reactions(num_reactions);
-  reactions.SetAll(0);
-  
-  for(int i=0; i<m_world->GetPopulation().GetSize(); ++i) {
-    cPopulationCell& cell = m_world->GetPopulation().GetCell(i);
-    if(cell.IsOccupied()) {
-      const tArray<int>& org_rx = cell.GetOrganism()->GetPhenotype().GetCurReactionCount();
-      for(int j=0; j<num_reactions; ++j) {
-        reactions[j] += org_rx[j];
-      }
-    }
+  for (int i = 0; i < m_reaction_last_add_reward.GetSize(); i++) {
+    df.Write(m_reaction_last_add_reward[i], reaction_names[i]);
   }
-    
-  for(int i=0; i<num_reactions; ++i) {
-    df.Write(reactions[i], m_world->GetEnvironment().GetReactionLib().GetReaction(i)->GetName());
-  }
-  
-//    df.Write( 0.0, 
-//    df.Write(reaction_count[i], reaction_names[i] );
-//    task_exe_count[i] = 0;
-//  }
   df.Endl();
 }
 
 
-void cStats::PrintReactionRewardData(const cString& filename)
+void cStats::PrintCurrentReactionRewardData(const cString& filename)
 {
   cDataFile& df = m_world->GetDataFile(filename);
-
+  
   df.WriteComment("Avida reaction data");
   df.WriteTimeStamp();
   df.WriteComment("First column gives the current update, all further columns give the add bonus reward");
   df.WriteComment("currently living organisms have garnered from each reaction.");
+  
+  df.Write(m_update,   "Update");
+  for (int i = 0; i < m_reaction_cur_add_reward.GetSize(); i++) {
+    df.Write(m_reaction_cur_add_reward[i], reaction_names[i]);
+  }
+  df.Endl();
+}
 
+
+void cStats::PrintReactionExeData(const cString& filename)
+{
+  cDataFile& df = m_world->GetDataFile(filename);
+  
+  df.WriteComment("Avida reaction execution data");
+  df.WriteTimeStamp();
+  df.WriteComment("First column gives the current update, all further columns give the number");
+  df.WriteComment("of times the particular reaction has been triggered this update.");
+  
   df.Write(m_update,   "Update");
-  for (int i = 0; i < reaction_count.GetSize(); i++) {
-    df.Write(reaction_add_reward[i], reaction_names[i] );
+  for (int i = 0; i < m_reaction_exe_count.GetSize(); i++) {
+    df.Write(m_reaction_exe_count[i], reaction_names[i]);
   }
   df.Endl();
 }

Modified: development/source/main/cStats.h
===================================================================
--- development/source/main/cStats.h	2008-12-09 14:40:02 UTC (rev 3015)
+++ development/source/main/cStats.h	2008-12-09 20:32:48 UTC (rev 3016)
@@ -246,8 +246,12 @@
   tArray<double> task_internal_cur_max_quality;
   tArray<double> task_internal_last_max_quality;
 
-  tArray<double> reaction_count;
-  tArray<double> reaction_add_reward;
+  tArray<int> m_reaction_cur_count;
+  tArray<int> m_reaction_last_count;
+  tArray<double> m_reaction_cur_add_reward;
+  tArray<double> m_reaction_last_add_reward;
+  tArray<int> m_reaction_exe_count;
+  
   tArray<double> resource_count;
   tArray<int> resource_geometry;
   tArray< tArray<double> > spatial_res_count;
@@ -538,20 +542,15 @@
   void RecordBirth(int cell_id, int genotype_id, bool breed_true);
   void RecordDeath() { num_deaths++; }
   void AddGenotype() { tot_genotypes++; }
-  void RemoveGenotype(int id_num, int parent_id,
-			     int parent_distance, int depth, int max_abundance,
-			     int parasite_abundance, int age, int length);
-  void AddThreshold(int id_num, const char * name,
-				  int species_num=-1);
+  void RemoveGenotype(int id_num, int parent_id, int parent_distance, int depth, int max_abundance,
+                      int parasite_abundance, int age, int length);
+  void AddThreshold(int id_num, const char * name, int species_num=-1);
   void RemoveThreshold() { num_threshold--; }
   void AddSpecies() { tot_species++; num_species++; }
-  void RemoveSpecies(int id_num, int parent_id,
-			 int max_gen_abundance, int max_abundance, int age);
+  void RemoveSpecies(int id_num, int parent_id, int max_gen_abundance, int max_abundance, int age);
   void AddLineage() { tot_lineages++; num_lineages++; }
-  void RemoveLineage(int id_num, int parent_id, int update_born,
-		     double generation_born, int total_CPUs,
-		     int total_genotypes, double fitness, 
-		     double lineage_stat1, double lineage_stat2 );
+  void RemoveLineage(int id_num, int parent_id, int update_born, double generation_born, int total_CPUs,
+                     int total_genotypes, double fitness, double lineage_stat1, double lineage_stat2 );
 				
   void IncExecuted() { num_executed++; }
 
@@ -559,54 +558,48 @@
   void AddCurTaskQuality(int task_num, double quality) 
   {  
 	  task_cur_quality[task_num] += quality;
-	  if (quality > task_cur_max_quality[task_num])
-		  task_cur_max_quality[task_num] = quality;
+	  if (quality > task_cur_max_quality[task_num]) task_cur_max_quality[task_num] = quality;
   }
   void AddLastTask(int task_num) { task_last_count[task_num]++; }
   void AddLastTaskQuality(int task_num, double quality) 
   { 
 	  task_last_quality[task_num] += quality; 
-	  if (quality > task_last_max_quality[task_num])
-		  task_last_max_quality[task_num] = quality;
+	  if (quality > task_last_max_quality[task_num]) task_last_max_quality[task_num] = quality;
   }
-  void IncTaskExeCount(int task_num, int task_count) 
-    { task_exe_count[task_num] += task_count; }
+  void IncTaskExeCount(int task_num, int task_count) { task_exe_count[task_num] += task_count; }
   void ZeroTasks();
   
   void AddLastSense(int res_comb_index) { sense_last_count[res_comb_index]++; }
-  void IncLastSenseExeCount(int res_comb_index, int count) 
-    { sense_last_exe_count[res_comb_index]+= count; }
+  void IncLastSenseExeCount(int res_comb_index, int count) { sense_last_exe_count[res_comb_index]+= count; }
     
   // internal resource bins and use of internal resources
   void AddCurInternalTask(int task_num) { task_internal_cur_count[task_num]++; }
   void AddCurInternalTaskQuality(int task_num, double quality)
   {
   	task_internal_cur_quality[task_num] += quality;
-  	if(quality > task_internal_cur_max_quality[task_num])
-  		task_internal_cur_max_quality[task_num] = quality;
+  	if(quality > task_internal_cur_max_quality[task_num])	task_internal_cur_max_quality[task_num] = quality;
   }
   void AddLastInternalTask(int task_num) { task_internal_last_count[task_num]++; }
   void AddLastInternalTaskQuality(int task_num, double quality)
   {
   	task_internal_last_quality[task_num] += quality;
-  	if(quality > task_internal_last_max_quality[task_num])
-  		task_internal_last_max_quality[task_num] = quality;
+  	if(quality > task_internal_last_max_quality[task_num]) task_internal_last_max_quality[task_num] = quality;
   }
-    
-  void SetReactions(const tArray<double> &_in) { reaction_count = _in; }
-  void AddLastReactionAddReward(int _id, double _reward) { reaction_add_reward[_id] += _reward; }
-  void ZeroRewards();
   
+  void AddCurReaction(int reaction) { m_reaction_cur_count[reaction]++; }
+  void AddLastReaction(int reaction) { m_reaction_last_count[reaction]++; }
+  void AddCurReactionAddReward(int reaction, double reward) { m_reaction_cur_add_reward[reaction] += reward; }
+  void AddLastReactionAddReward(int reaction, double reward) { m_reaction_last_add_reward[reaction] += reward; }
+  void IncReactionExeCount(int reaction, int count) { m_reaction_exe_count[reaction] += count; }
+  void ZeroReactions();
+  
   void SetResources(const tArray<double> &_in) { resource_count = _in; }
   void SetResourcesGeometry(const tArray<int> &_in) { resource_geometry = _in;}
   void SetSpatialRes(const tArray< tArray<double> > &_in) { 
     spatial_res_count = _in;
   }
 
-  void SetInstName(int id, const cString & name) {
-    assert(id < inst_names.GetSize());
-    inst_names[id] = name;
-  }
+  void SetInstName(int id, const cString & name) { assert(id < inst_names.GetSize()); inst_names[id] = name; }
   void SetReactionName(int id, const cString & name) { reaction_names[id] = name; }
   void SetResourceName(int id, const cString & name) { resource_names[id] = name; }
 
@@ -669,7 +662,7 @@
   double GetInternalTaskLastQuality(int task_num) const { return task_internal_last_quality[task_num]/(double)task_internal_last_count[task_num]; }
   double GetInternalTaskMaxLastQuality(int task_num) const { return task_internal_last_max_quality[task_num]; }
 
-  const tArray<double> & GetReactions() const { return reaction_count; }
+  const tArray<int>& GetReactions() const { return m_reaction_last_count; }
   const tArray<double> & GetResources() const { return resource_count; }
 
   // market info
@@ -725,10 +718,6 @@
 
   int GetNumSenseSlots();
 
-/*  int getNumAsleep(int demeID) { return numAsleep[demeID]; }
-  void incNumAsleep(int demeID) { numAsleep[demeID]++; }
-  void decNumAsleep(int demeID) { numAsleep[demeID]--; }
-*/
   double GetAveSpeculative() const { return (m_spec_num) ? ((double)m_spec_total / (double)m_spec_num) : 0.0; }
   int GetSpeculativeWaste() const { return m_spec_waste; }
 
@@ -757,8 +746,10 @@
   void PrintTasksExeData(const cString& filename);
   void PrintTasksQualData(const cString& filename);
   void PrintReactionData(const cString& filename);
+  void PrintReactionExeData(const cString& filename);
   void PrintCurrentReactionData(const cString& filename);
   void PrintReactionRewardData(const cString& filename);
+  void PrintCurrentReactionRewardData(const cString& filename);
   void PrintResourceData(const cString& filename);
   void PrintSpatialResData(const cString& filename, int i);
   void PrintTimeData(const cString& filename);
@@ -773,7 +764,6 @@
   void PrintInternalTasksQualData(const cString& filename);
   void PrintSleepData(const cString& filename);
   void PrintCompetitionData(const cString& filename);
-  // @WRE: Added event for printing visit counts
   void PrintCellVisitsData(const cString& filename);
 
   // deme predicate stats

Modified: development/source/main/cTaskLib.h
===================================================================
--- development/source/main/cTaskLib.h	2008-12-09 14:40:02 UTC (rev 3015)
+++ development/source/main/cTaskLib.h	2008-12-09 20:32:48 UTC (rev 3016)
@@ -88,12 +88,13 @@
   bool UseNeighborOutput() const { return use_neighbor_output; }
   
   
-private:  // Direct task related methods
-  void NewTask(const cString& name, const cString& desc, tTaskTest task_fun, int reqs = 0,
-               cArgContainer* args = NULL);
+private:
+  
+  void NewTask(const cString& name, const cString& desc, tTaskTest task_fun, int reqs = 0, cArgContainer* args = NULL);
 
   inline double FractionalReward(unsigned int supplied, unsigned int correct);  
 
+  
   double Task_Echo(cTaskContext& ctx) const;
   double Task_Add(cTaskContext& ctx) const;
   double Task_Add3(cTaskContext& ctx) const;

Modified: development/source/main/cWorld.cc
===================================================================
--- development/source/main/cWorld.cc	2008-12-09 14:40:02 UTC (rev 3015)
+++ development/source/main/cWorld.cc	2008-12-09 20:32:48 UTC (rev 3016)
@@ -150,11 +150,6 @@
   return m_hw_mgr->GetInstSet().GetSize();
 }
 
-int cWorld::GetNumReactions()
-{
-  return m_env->GetReactionLib().GetSize();
-}
-
 int cWorld::GetNumResources()
 {
   return m_env->GetResourceLib().GetSize();

Modified: development/source/main/cWorld.h
===================================================================
--- development/source/main/cWorld.h	2008-12-09 14:40:02 UTC (rev 3015)
+++ development/source/main/cWorld.h	2008-12-09 20:32:48 UTC (rev 3016)
@@ -122,7 +122,6 @@
   
   // Convenience Accessors
   int GetNumInstructions();
-  int GetNumReactions();
   int GetNumResources();
   inline int GetVerbosity() { return m_conf->VERBOSITY.Get(); }
   inline void SetVerbosity(int v) { m_conf->VERBOSITY.Set(v); }

Modified: development/support/config/avida.cfg
===================================================================
--- development/support/config/avida.cfg	2008-12-09 14:40:02 UTC (rev 3015)
+++ development/support/config/avida.cfg	2008-12-09 20:32:48 UTC (rev 3016)
@@ -212,8 +212,8 @@
 # Mutations
 POINT_MUT_PROB 0.0       # Mutation rate (per-location per update)
 COPY_MUT_PROB 0.0075     # Mutation rate (per copy)
-COPY_INS_PROB 0.0075     # Insertion rate (per copy)
-COPY_DEL_PROB 0.0075     # Deletion rate (per copy)
+COPY_INS_PROB 0.0        # Insertion rate (per copy)
+COPY_DEL_PROB 0.0        # Deletion rate (per copy)
 COPY_UNIFORM_PROB 0.0    # Uniform mutation probability (per copy)
                          # - Randomly applies any of the three classes of mutations (ins, del, point).
 COPY_SLIP_PROB 0.0       # Slip rate (per copy)




More information about the Avida-cvs mailing list