[Avida-SVN] r3214 - in development: documentation source/analyze source/main tests tests/hoarding_collect_internal_300u tests/hoarding_collect_split_230u tests/hoarding_collect_split_230u/config tests/hoarding_collect_split_230u/expected tests/hoarding_collect_split_230u/expected/data

blwalker at myxo.css.msu.edu blwalker at myxo.css.msu.edu
Mon Apr 20 09:16:49 PDT 2009


Author: blwalker
Date: 2009-04-20 12:16:48 -0400 (Mon, 20 Apr 2009)
New Revision: 3214

Added:
   development/tests/hoarding_collect_split_230u/
   development/tests/hoarding_collect_split_230u/config/
   development/tests/hoarding_collect_split_230u/config/avida-splittest.cfg
   development/tests/hoarding_collect_split_230u/config/collect+nand.org
   development/tests/hoarding_collect_split_230u/config/environment.high_initial
   development/tests/hoarding_collect_split_230u/config/events-splittest.cfg
   development/tests/hoarding_collect_split_230u/config/instset-collect.cfg
   development/tests/hoarding_collect_split_230u/expected/
   development/tests/hoarding_collect_split_230u/expected/data/
   development/tests/hoarding_collect_split_230u/expected/data/average.dat
   development/tests/hoarding_collect_split_230u/expected/data/count.dat
   development/tests/hoarding_collect_split_230u/expected/data/dominant.dat
   development/tests/hoarding_collect_split_230u/expected/data/reactions.dat
   development/tests/hoarding_collect_split_230u/expected/data/reactions_exe.dat
   development/tests/hoarding_collect_split_230u/expected/data/resource.dat
   development/tests/hoarding_collect_split_230u/expected/data/stats.dat
   development/tests/hoarding_collect_split_230u/expected/data/tasks.dat
   development/tests/hoarding_collect_split_230u/expected/data/time.dat
   development/tests/hoarding_collect_split_230u/test_list
Removed:
   development/tests/hoarding_collect_internal_300u/expected/
Modified:
   development/documentation/analyze.html
   development/source/analyze/cAnalyzeGenotype.cc
   development/source/analyze/cAnalyzeGenotype.h
   development/source/main/cEnvironment.cc
   development/source/main/cEnvironment.h
   development/source/main/cOrganism.cc
   development/source/main/cPhenotype.cc
   development/source/main/cPhenotype.h
   development/source/main/cReactionResult.cc
   development/source/main/cReactionResult.h
Log:

Code changes to make internal resources split equally between the two "daughter organisms" on divide, including fixes for several minor bugs dealing with internal resources.

Internal resource representation has been standardized to be a property of cPhenotype only and no longer belongs to cOrganism.

Added a new test for this.

Removed expected results from an older hoardin-resources test, as the fixes break consistency for it.  Next commit will add the new expected results.



Modified: development/documentation/analyze.html
===================================================================
--- development/documentation/analyze.html	2009-04-17 16:14:14 UTC (rev 3213)
+++ development/documentation/analyze.html	2009-04-20 16:16:48 UTC (rev 3214)
@@ -640,12 +640,16 @@
 <tr>
   <td><strong>task.n</strong> (# of times task number n is done)</td>
   <td><strong>task.n:binary</strong> (is task n done, 0/1)</td>
-  <td><strong>total_task_count</strong> (# of different tasks done)</td>
+  <td><strong>total_task_count</strong> (# of unique tasks done)</td>
 </tr>
 <tr>
 	<td><strong>total_task_performance_count</strong> (total # of tasks done)</td>
   <td><strong>inst.n</strong> (# of times instruction number n is done)</td>
+  <td><strong>r_tot.n</strong> (amount of resource n added to the organism's store in its lifetime)</td>
 </tr>
+<tr>
+	<td><strong>r_avail.n</strong> (amount of resource n in organism's store)</td>
+</tr>
 </table>
 </div>
 

Modified: development/source/analyze/cAnalyzeGenotype.cc
===================================================================
--- development/source/analyze/cAnalyzeGenotype.cc	2009-04-17 16:14:14 UTC (rev 3213)
+++ development/source/analyze/cAnalyzeGenotype.cc	2009-04-20 16:16:48 UTC (rev 3214)
@@ -315,10 +315,7 @@
   //         versions we should rename these.
   ADD_GDATA(cString (), "link", "Phenotype Map",              GetMapLink,      SetNULL, 0, 0,       0);
   ADD_GDATA(cString (), "html",  "Genome Sequence",            GetHTMLSequence, SetNULL, 0, "(N/A)", "");
-  
-  dcm->Add("inst", new tDataEntryOfType<cAnalyzeGenotype, int (int)>
-              ("inst", &cAnalyzeGenotype::DescInstExe, &cAnalyzeGenotype::GetInstExecutedCount));
-  
+    
   // coarse-grained task stats
   ADD_GDATA(int (), 		"total_task_count","# Different Tasks", 		GetTotalTaskCount, SetNULL, 1, 0, 0);
   ADD_GDATA(int (), 		"total_task_performance_count", "Total Tasks Performed",	GetTotalTaskPerformanceCount, SetNULL, 1, 0, 0);
@@ -328,11 +325,17 @@
            ("task", &cAnalyzeGenotype::DescTask, &cAnalyzeGenotype::GetTaskCount, 5));
   dcm->Add("env_input", new tDataEntryOfType<cAnalyzeGenotype, int (int)>
            ("env_input", &cAnalyzeGenotype::DescEnvInput, &cAnalyzeGenotype::GetEnvInput));
+  dcm->Add("inst", new tDataEntryOfType<cAnalyzeGenotype, int (int)>
+           ("inst", &cAnalyzeGenotype::DescInstExe, &cAnalyzeGenotype::GetInstExecutedCount));
+  dcm->Add("r_tot", new tDataEntryOfType<cAnalyzeGenotype, double (int)>
+           ("r_tot", &cAnalyzeGenotype::DescRTot, &cAnalyzeGenotype::GetRBinTotal));
+  dcm->Add("r_avail", new tDataEntryOfType<cAnalyzeGenotype, double (int)>
+           ("r_avail", &cAnalyzeGenotype::DescRAvail, &cAnalyzeGenotype::GetRBinAvail));
   dcm->Add("prob_task", new tDataEntryOfType<cAnalyzeGenotype, double (int)>
            ("prob_task", &cAnalyzeGenotype::DescTaskProb, &cAnalyzeGenotype::GetTaskProbability, 5));
   
   
-  // The remaining values should actually go in a seperate list called
+  // The remaining values should actually go in a separate list called
   // "population_data_list", but for the moment we're going to put them
   // here so that we only need to worry about a single system to load and
   // save genotype information.

Modified: development/source/analyze/cAnalyzeGenotype.h
===================================================================
--- development/source/analyze/cAnalyzeGenotype.h	2009-04-17 16:14:14 UTC (rev 3213)
+++ development/source/analyze/cAnalyzeGenotype.h	2009-04-20 16:16:48 UTC (rev 3214)
@@ -459,6 +459,18 @@
     return m_env_inputs;
   }
   cString DescEnvInput(int input_id) const { return cStringUtil::Stringf("task.%d", input_id); }
+  
+  double GetRBinTotal(int resource_id) const {
+    if (resource_id >= rbins_total.GetSize()) return -1;
+    return rbins_total[resource_id];
+  }
+  cString DescRTot(int resource_id) const { return cStringUtil::Stringf("Resource %d Total", resource_id);}
+  
+  double GetRBinAvail(int resource_id) const {
+    if (resource_id >= rbins_avail.GetSize()) return -1;
+    return rbins_avail[resource_id];
+  }
+  cString DescRAvail(int resource_id) const { return cStringUtil::Stringf("Resource %d Available", resource_id);}
 
   // Comparisons...  Compares a genotype to the "previous" one, which is
   // passed in, in one specified phenotype.

Modified: development/source/main/cEnvironment.cc
===================================================================
--- development/source/main/cEnvironment.cc	2009-04-17 16:14:14 UTC (rev 3213)
+++ development/source/main/cEnvironment.cc	2009-04-20 16:16:48 UTC (rev 3214)
@@ -1017,7 +1017,7 @@
                               cTaskContext& taskctx, const tArray<int>& task_count,
                               const tArray<int>& reaction_count, 
                               const tArray<double>& resource_count, 
-                              tArray<double>& rbins_count) const
+                              const tArray<double>& rbins_count) const
 {
   // Do setup for reaction tests...
   m_tasklib.SetupTests(taskctx);
@@ -1125,7 +1125,7 @@
 
 
 void cEnvironment::DoProcesses(cAvidaContext& ctx, const tList<cReactionProcess>& process_list,
-                               const tArray<double>& resource_count, tArray<double>& rbins_count, 
+                               const tArray<double>& resource_count, const tArray<double>& rbins_count, 
                                const double task_quality, const int task_count, 
                                const int reaction_id, cReactionResult& result) const
 {
@@ -1199,9 +1199,6 @@
       // Mark in the results the resource consumed.
 			if (cur_process->GetDepletable()) {
       	result.Consume(res_id, consumed, !using_rbins);
-        
-      	// if we consumed resource from an internal resource bin, remove it
-      	if (may_use_rbins && using_rbins) rbins_count[res_id] -= consumed;
       }
     }
     

Modified: development/source/main/cEnvironment.h
===================================================================
--- development/source/main/cEnvironment.h	2009-04-17 16:14:14 UTC (rev 3213)
+++ development/source/main/cEnvironment.h	2009-04-20 16:16:48 UTC (rev 3214)
@@ -118,7 +118,7 @@
   bool TestRequisites(const tList<cReactionRequisite>& req_list, int task_count, 
                       const tArray<int>& reaction_count, const bool on_divide = false) const;
   void DoProcesses(cAvidaContext& ctx, const tList<cReactionProcess>& process_list, 
-                   const tArray<double>& resource_count, tArray<double>& rbin_count,
+                   const tArray<double>& resource_count, const tArray<double>& rbin_count,
                    const double task_quality, const int task_count, const int reaction_id, 
                    cReactionResult& result) const;
 
@@ -145,7 +145,7 @@
 
   bool TestOutput(cAvidaContext& ctx, cReactionResult& result, cTaskContext& taskctx,
                   const tArray<int>& task_count, const tArray<int>& reaction_count,
-                  const tArray<double>& resource_count, tArray<double>& rbins_count) const;
+                  const tArray<double>& resource_count, const tArray<double>& rbins_count) const;
 
   // Accessors
   int GetNumTasks() const { return m_tasklib.GetSize(); }

Modified: development/source/main/cOrganism.cc
===================================================================
--- development/source/main/cOrganism.cc	2009-04-17 16:14:14 UTC (rev 3213)
+++ development/source/main/cOrganism.cc	2009-04-20 16:16:48 UTC (rev 3214)
@@ -62,7 +62,6 @@
   , m_interface(NULL)
   , m_lineage_label(-1)
   , m_lineage(NULL)
-  , m_rbins(0)
   , m_input_pointer(0)
   , m_input_buf(world->GetEnvironment().GetInputSize())
   , m_output_buf(world->GetEnvironment().GetOutputSize())
@@ -95,7 +94,6 @@
   , m_interface(NULL)
   , m_lineage_label(-1)
   , m_lineage(NULL)
-  , m_rbins(0)
   , m_input_pointer(0)
   , m_input_buf(world->GetEnvironment().GetInputSize())
   , m_output_buf(world->GetEnvironment().GetOutputSize())
@@ -129,7 +127,6 @@
   , m_interface(NULL)
   , m_lineage_label(-1)
   , m_lineage(NULL)
-  , m_rbins(0)
   , m_input_pointer(0)
   , m_input_buf(world->GetEnvironment().GetInputSize())
   , m_output_buf(world->GetEnvironment().GetOutputSize())
@@ -200,10 +197,6 @@
   m_interface = interface;
   
   HardwareReset(ctx);
-  
-  // initialize m_rbins as soon as the interface is available
-  m_rbins = m_interface->GetResources();
-  m_rbins.SetAll(0.0);
 }
 
 const cStateGrid& cOrganism::GetStateGrid() const { return m_world->GetEnvironment().GetStateGrid(m_cur_sg); }
@@ -211,29 +204,24 @@
 double cOrganism::GetRBinsTotal()
 {
 	double total = 0;
-	for(int i = 0; i < m_rbins.GetSize(); i++)
-	{total += m_rbins[i];}
+	for(int i = 0; i < m_phenotype.GetCurRBinsAvail().GetSize(); i++)
+	{total += m_phenotype.GetCurRBinsAvail()[i];}
 	
 	return total;
 }
 
 void cOrganism::SetRBins(const tArray<double>& rbins_in) 
 { 
-	m_rbins = rbins_in;
 	m_phenotype.SetCurRBinsAvail(rbins_in);
-	//@blw does not change cur_rbins_total
 }
 
 void cOrganism::SetRBin(const int index, const double value) 
 { 
-	m_rbins[index] = value; 
 	m_phenotype.SetCurRBinAvail(index, value);
-	//@blw does not change cur_rbins_total
 }
 
 void cOrganism::AddToRBin(const int index, const double value) 
 { 
-	m_rbins[index] += value;
 	m_phenotype.AddToCurRBinAvail(index, value);
 	
 	if(value > 0)
@@ -392,8 +380,8 @@
 	  }
   }
 
-  bool task_completed = m_phenotype.TestOutput(ctx, taskctx, globalAndDeme_resource_count, m_rbins, globalAndDeme_res_change,
-                                               insts_triggered);
+  bool task_completed = m_phenotype.TestOutput(ctx, taskctx, globalAndDeme_resource_count, m_phenotype.GetCurRBinsAvail(), 
+                                               globalAndDeme_res_change, insts_triggered);
   
   //disassemble global and deme resource counts
   global_res_change = globalAndDeme_res_change.Subset(0, global_res_change.GetSize());
@@ -575,7 +563,7 @@
 
     cTaskContext taskctx(this, m_input_buf, m_output_buf, other_input_list, other_output_list,
                          m_hardware->GetExtendedMemory());
-    m_phenotype.TestOutput(ctx, taskctx, resource_count, m_rbins, res_change, insts_triggered);
+    m_phenotype.TestOutput(ctx, taskctx, resource_count, m_phenotype.GetCurRBinsAvail(), res_change, insts_triggered);
     m_interface->UpdateResources(res_change);
     
     for (int i = 0; i < insts_triggered.GetSize(); i++) {

Modified: development/source/main/cPhenotype.cc
===================================================================
--- development/source/main/cPhenotype.cc	2009-04-17 16:14:14 UTC (rev 3213)
+++ development/source/main/cPhenotype.cc	2009-04-20 16:16:48 UTC (rev 3214)
@@ -325,8 +325,11 @@
   cur_task_quality.SetAll(0);
   cur_task_value.SetAll(0);
   cur_internal_task_quality.SetAll(0);
-  cur_rbins_total.SetAll(0);
-  cur_rbins_avail.SetAll(0);
+  cur_rbins_total.SetAll(0);  // total resources collected in lifetime
+  // parent's resources have already been halved in DivideReset;
+  // offspring gets that value too.
+  for (int i = 0; i < cur_rbins_avail.GetSize(); i++)
+        cur_rbins_avail[i] = parent_phenotype.cur_rbins_avail[i];
   cur_reaction_count.SetAll(0);
   cur_reaction_add_reward.SetAll(0);
   cur_inst_count.SetAll(0);
@@ -670,8 +673,9 @@
   cur_task_quality.SetAll(0);
   cur_task_value.SetAll(0);
   cur_internal_task_quality.SetAll(0);
-  cur_rbins_total.SetAll(0);
-  cur_rbins_avail.SetAll(0);
+  cur_rbins_total.SetAll(0);  // total resources collected in lifetime
+  // resources available are split in half -- the offspring gets the other half
+  for (int i = 0; i < cur_rbins_avail.GetSize(); i++) {cur_rbins_avail[i] /= 2.0;}
   cur_reaction_count.SetAll(0);
   cur_reaction_add_reward.SetAll(0);
   cur_inst_count.SetAll(0);
@@ -822,8 +826,9 @@
   cur_task_quality.SetAll(0);
   cur_task_value.SetAll(0);
   cur_internal_task_quality.SetAll(0);
-  cur_rbins_total.SetAll(0);
-  cur_rbins_avail.SetAll(0);
+  cur_rbins_total.SetAll(0);  // total resources collected in lifetime
+  // resources available are split in half -- the offspring gets the other half
+  for (int i = 0; i < cur_rbins_avail.GetSize(); i++) {cur_rbins_avail[i] /= 2.0;}
   cur_reaction_count.SetAll(0);
   cur_reaction_add_reward.SetAll(0);
   cur_inst_count.SetAll(0);
@@ -1079,7 +1084,7 @@
 }
 
 bool cPhenotype::TestOutput(cAvidaContext& ctx, cTaskContext& taskctx,
-			    const tArray<double>& res_in, tArray<double>& rbins_in, tArray<double>& res_change,
+			    const tArray<double>& res_in, const tArray<double>& rbins_in, tArray<double>& res_change,
 			    tArray<int>& insts_triggered)
 {
   assert(initialized == true);
@@ -1175,15 +1180,15 @@
   for (int i = 0; i < res_in.GetSize(); i++) {
     res_change[i] = result.GetProduced(i) - result.GetConsumed(i);
   }
-  
-  // Update rbin stats as necessary
+
+  // Update rbins as necessary
   if(result.UsedEnvResource() == false)
   {
   	double rbin_diff;
   	for(int i = 0; i < num_resources; i++)
   	{
-  		rbin_diff = cur_rbins_avail[i] - rbins_in[i];
-  		cur_rbins_avail[i] = rbins_in[i];
+  		rbin_diff = result.GetInternalConsumed(i);
+  		cur_rbins_avail[i] -= rbin_diff;
   		if(rbin_diff > 0) { cur_rbins_total[i] += rbin_diff; }
   	}
   }

Modified: development/source/main/cPhenotype.h
===================================================================
--- development/source/main/cPhenotype.h	2009-04-17 16:14:14 UTC (rev 3213)
+++ development/source/main/cPhenotype.h	2009-04-20 16:16:48 UTC (rev 3214)
@@ -280,7 +280,7 @@
   // Input and Output Reaction Tests
   bool TestInput(tBuffer<int>& inputs, tBuffer<int>& outputs);
   bool TestOutput(cAvidaContext& ctx, cTaskContext& taskctx,
-                  const tArray<double>& res_in, tArray<double>& rbins_in, tArray<double>& res_change,
+                  const tArray<double>& res_in, const tArray<double>& rbins_in, tArray<double>& res_change,
                   tArray<int>& insts_triggered);
 
   // State saving and loading, and printing...

Modified: development/source/main/cReactionResult.cc
===================================================================
--- development/source/main/cReactionResult.cc	2009-04-17 16:14:14 UTC (rev 3213)
+++ development/source/main/cReactionResult.cc	2009-04-20 16:16:48 UTC (rev 3214)
@@ -32,6 +32,7 @@
   : resources_consumed(num_resources)
   , resources_produced(num_resources)
   , resources_detected(num_resources)
+  , internal_resources_consumed(num_resources)
   , tasks_done(num_tasks)
   , tasks_quality(num_tasks)
   , tasks_value(num_tasks)
@@ -62,6 +63,7 @@
   resources_consumed.SetAll(0.0);
   resources_produced.SetAll(0.0);
   resources_detected.SetAll(-1.0);
+  internal_resources_consumed.SetAll(0.0);
   tasks_done.SetAll(false);
   tasks_quality.SetAll(0.0);
   tasks_value.SetAll(0.0);
@@ -77,7 +79,10 @@
 {
   ActivateReaction();
   if(is_env_resource) { resources_consumed[id] += num; }
-  else { used_env_resource = false; }
+  else { 
+    used_env_resource = false; 
+    internal_resources_consumed[id] += num;
+  }
 }
 
 
@@ -193,6 +198,12 @@
   return resources_detected[id];
 }
 
+double cReactionResult::GetInternalConsumed(int id)
+{
+  if (GetActive() == false) return 0.0;
+  return internal_resources_consumed[id];
+}
+
 bool cReactionResult::GetLethal()
 {
   if (GetActive() == false) return false;

Modified: development/source/main/cReactionResult.h
===================================================================
--- development/source/main/cReactionResult.h	2009-04-17 16:14:14 UTC (rev 3213)
+++ development/source/main/cReactionResult.h	2009-04-20 16:16:48 UTC (rev 3214)
@@ -35,6 +35,7 @@
   tArray<double> resources_consumed;
   tArray<double> resources_produced;
   tArray<double> resources_detected;  //Initialize to -1.0
+  tArray<double> internal_resources_consumed;
   tArray<bool> tasks_done;
   tArray<double> tasks_quality;
   tArray<double> tasks_value;
@@ -89,6 +90,7 @@
   double GetConsumed(int id);
   double GetProduced(int id);
   double GetDetected(int id);
+  double GetInternalConsumed(int id);
   bool GetLethal();  
   bool GetSterilize();
   bool ReactionTriggered(int id);

Added: development/tests/hoarding_collect_split_230u/config/avida-splittest.cfg
===================================================================
--- development/tests/hoarding_collect_split_230u/config/avida-splittest.cfg	                        (rev 0)
+++ development/tests/hoarding_collect_split_230u/config/avida-splittest.cfg	2009-04-20 16:16:48 UTC (rev 3214)
@@ -0,0 +1,526 @@
+#############################################################################
+# This file includes all the basic run-time defines for Avida.
+# For more information, see doc/config.html
+#############################################################################
+
+VERSION_ID 2.9.0   # Do not change this value.
+
+### GENERAL_GROUP ###
+# General Settings
+ANALYZE_MODE 0  # 0 = Disabled
+                # 1 = Enabled
+                # 2 = Interactive
+VIEW_MODE 1     # Initial viewer screen
+CLONE_FILE -    # Clone file to load
+VERBOSITY 1     # 0 = No output at all
+                # 1 = Normal output
+                # 2 = Verbose output, detailing progress
+                # 3 = High level of details, as available
+                # 4 = Print Debug Information, as applicable
+
+### ARCH_GROUP ###
+# Architecture Variables
+WORLD_X 60         # Width of the Avida world
+WORLD_Y 60         # Height of the Avida world
+WORLD_Z 1          # Depth of the Avida world
+WORLD_GEOMETRY 2   # 1 = Bounded Grid
+                   # 2 = Torus
+                   # 3 = Clique
+                   # 4 = Hexagonal grid
+                   # 5 = Lattice
+RANDOM_SEED 0      # Random number seed (0 for based on time)
+HARDWARE_TYPE 0    # 0 = Original CPUs
+                   # 1 = New SMT CPUs
+                   # 2 = Transitional SMT
+                   # 3 = Experimental CPU
+                   # 4 = Gene Expression CPU
+SPECULATIVE 1      # Enable speculative execution
+TRACE_EXECUTION 0  # Trace the execution of all organisms in the population (default=off,SLOW!)
+BCAST_HOPS 1       # Number of hops to broadcast an alarm
+ALARM_SELF 0       # Does sending an alarm move sender IP to alarm label?
+                   # 0=no
+                   # 1=yes
+IO_EXPIRE 1        # Is the expiration functionality of '-expire' I/O instructions enabled?
+
+### CONFIG_FILE_GROUP ###
+# Configuration Files
+DATA_DIR data                       # Directory in which config files are found
+INST_SET instset-collect.cfg        # File containing instruction set
+INST_SET_FORMAT 0                   # Instruction set file format.
+                                    # 0 = Default
+                                    # 1 = New Style
+EVENT_FILE events-splittest.cfg     # File containing list of events during run
+ANALYZE_FILE analyze.cfg            # File used for analysis mode
+ENVIRONMENT_FILE environment.high_initial    # File that describes the environment
+START_CREATURE collect+nand.org     # Organism to seed the soup
+
+### DEME_GROUP ###
+# Demes and Germlines
+NUM_DEMES 1                             # Number of independent groups in the
+                                        # population (default=1).
+DEMES_USE_GERMLINE 0                    # Whether demes use a distinct germline (default=0).
+DEMES_PREVENT_STERILE 0                 # Whether to prevent sterile demes from
+                                        # replicating (default=0 or no).
+DEMES_RESET_RESOURCES 0                 # Reset resources in demes on replication. 
+                                        # 0 = reset both demes 
+                                        # 1 = reset target deme 
+                                        # 2 = deme resources remain unchanged
+DEMES_REPLICATE_SIZE 1                  # Number of identical organisms to create or copy from the
+                                        # source deme to the target deme (default=1).
+LOG_DEMES_REPLICATE 0                   # Log deme replications.  0/1 (off/on)
+DEMES_REPLICATE_LOG_START 0             # Update at which to start logging deme replications
+DEMES_PROB_ORG_TRANSFER 0.0             # Probablity of an organism being transferred from the
+                                        # source deme to the target deme (default=0.0).
+DEMES_ORGANISM_SELECTION 0              # How organisms are selected for transfer from
+                                        # source to target during deme replication.
+                                        # 0=random with replacement (default).
+                                        # 1=sequential.
+DEMES_ORGANISM_PLACEMENT 0              # How organisms are placed during deme replication.
+                                        # 0=cell-array middle (default).
+                                        # 1=deme center.
+                                        # 2=random placement.
+                                        # 3=sequential.
+DEMES_ORGANISM_FACING 0                 # How organisms are facing during deme replication.
+                                        # 0=unchanged (default).
+                                        # 1=northwest.
+                                        # 2=random.
+DEMES_MAX_AGE 500                       # The maximum age of a deme (in updates) to be
+                                        # used for age-based replication (default=500).
+DEMES_MAX_BIRTHS 100                    # The maximum number of births that can occur
+                                        # within a deme; used with birth-count
+                                        # replication (default=100).
+DEMES_MIM_EVENTS_KILLED_RATIO 0.7       # Minimum ratio of events killed required for event period to be a success.
+DEMES_MIM_SUCCESSFUL_EVENT_PERIODS 1    # Minimum number of consecutive event periods that must be a success.
+GERMLINE_COPY_MUT 0.0075                # Prob. of copy mutations occuring during
+                                        # germline replication (default=0.0075).
+GERMLINE_INS_MUT 0.05                   # Prob. of an insertion mutation occuring
+                                        # during germline replication (default=0.05).
+GERMLINE_DEL_MUT 0.05                   # Prob. of a deletion mutation occuring
+                                        # during germline replication (default=0.05).
+DEMES_REPLICATE_CPU_CYCLES 0.0          # Replicate a deme immediately after it has used
+                                        # this number of cpu cycles, normalized
+                                        # by number of orgs in deme (0 = OFF).
+DEMES_REPLICATE_TIME 0.0                # Replicate a deme immediately after it has used
+                                        # this number of cpu cycles, normalized
+                                        # by number of orgs in deme and organism merit (0 = OFF).
+DEMES_REPLICATE_BIRTHS 0                # Replicate a deme immediately after it has 
+                                        # produced this many offspring (0 = OFF).
+DEMES_REPLICATE_ORGS 0                  # Replicate a deme immediately once it reaches a
+                                        # certain number of organisms (0 = OFF).
+DEMES_REPLICATION_ONLY_RESETS 0         # Kin selection mode. Deme replication really:
+                                        # 1=resets deme resources
+                                        # 2=rests deme resources and re-injects organisms
+DEMES_MIGRATION_RATE 0.0                # Probability of an offspring being born in a different deme.
+DEMES_MIGRATION_METHOD 0                # How do we choose what demes an org may land in when it migrates?
+                                        # 0=all other demes
+                                        # 1=eight adjacent neighbors
+                                        # 2=two adjacent demes in list
+DEMES_NUM_X 0                           # Simulated number of demes in X dimension. Only used for migration. 
+DEMES_SEED_METHOD 0                     # Deme seeding method.
+                                        # 0=maintain old consistency
+                                        # 1=new method using genotypes
+DEMES_DIVIDE_METHOD 0                   # Deme divide method. Only works with DEMES_SEED_METHOD 1
+                                        # 0=replace and target demes
+                                        # 1= replace target deme, reset source deme to founders
+                                        # 2=replace target deme, leave source deme unchanged
+DEMES_DEFAULT_GERMLINE_PROPENSITY 0.0   # Default germline propensity of organisms in deme.
+                                        # For use with DEMES_DIVIDE_METHOD 2.
+DEMES_FOUNDER_GERMLINE_PROPENSITY -1.0  # Default germline propensity of founder organisms in deme.
+                                        # For use with DEMES_DIVIDE_METHOD 2.
+                                        #  <0 = OFF
+DEMES_PREFER_EMPTY 0                    # Give empty demes preference as targets of deme replication?
+
+### REPRODUCTION_GROUP ###
+# Birth and Death
+BIRTH_METHOD 0            # Which organism should be replaced on birth?
+                          # 0 = Random organism in neighborhood
+                          # 1 = Oldest in neighborhood
+                          # 2 = Largest Age/Merit in neighborhood
+                          # 3 = None (use only empty cells in neighborhood)
+                          # 4 = Random from population (Mass Action)
+                          # 5 = Oldest in entire population
+                          # 6 = Random within deme
+                          # 7 = Organism faced by parent
+                          # 8 = Next grid cell (id+1)
+                          # 9 = Largest energy used in entire population
+                          # 10 = Largest energy used in neighborhood
+PREFER_EMPTY 1            # Give empty cells preference in offsping placement?
+ALLOW_PARENT 1            # Allow births to replace the parent organism?
+DEATH_METHOD 2            # 0 = Never die of old age.
+                          # 1 = Die when inst executed = AGE_LIMIT (+deviation)
+                          # 2 = Die when inst executed = length*AGE_LIMIT (+dev)
+AGE_LIMIT 20              # Modifies DEATH_METHOD
+AGE_DEVIATION 0           # Creates a distribution around AGE_LIMIT
+ALLOC_METHOD 0            # (Orignal CPU Only)
+                          # 0 = Allocated space is set to default instruction.
+                          # 1 = Set to section of dead genome (Necrophilia)
+                          # 2 = Allocated space is set to random instruction.
+DIVIDE_METHOD 1           # 0 = Divide leaves state of mother untouched.
+                          # 1 = Divide resets state of mother
+                          #     (after the divide, we have 2 children)
+                          # 2 = Divide resets state of current thread only
+                          #     (does not touch possible parasite threads)
+                          # 3 = Divide resets mother stats, but not state.
+                          # 4 = 3 + child inherits mother registers and stack values.
+EPIGENETIC_METHOD 0       # Inheritance of state information other than genome
+                          # 0 = none
+                          # 1 = offspring inherits registers and stacks of first thread
+                          # 1 = parent maintains registers and stacks of first thread
+                          # 
+                          # 1 = offspring and parent keep state information
+INJECT_METHOD 0           # 0 = Leaves the parasite thread state untouched.
+                          # 1 = Resets the calling thread state on inject
+GENERATION_INC_METHOD 1   # 0 = Only the generation of the child is
+                          #     increased on divide.
+                          # 1 = Both the generation of the mother and child are
+                          #     increased on divide (good with DIVIDE_METHOD 1).
+RESET_INPUTS_ON_DIVIDE 0  # Reset environment inputs of parent upon successful divide.
+REPRO_METHOD 1            # Replace existing organism: 1=yes
+
+### RECOMBINATION_GROUP ###
+# Sexual Recombination and Modularity
+RECOMBINATION_PROB 1.0  # probability of recombination in div-sex
+MAX_BIRTH_WAIT_TIME -1  # Updates incipiant orgs can wait for crossover
+MODULE_NUM 0            # number of modules in the genome
+CONT_REC_REGS 1         # are (modular) recombination regions continuous
+CORESPOND_REC_REGS 1    # are (modular) recombination regions swapped randomly
+                        #  or with corresponding positions?
+TWO_FOLD_COST_SEX 0     # 1 = only one recombined offspring is born.
+                        # 2 = both offspring are born
+SAME_LENGTH_SEX 0       # 0 = recombine with any genome
+                        # 1 = only recombine w/ same length
+
+### DIVIDE_GROUP ###
+# Divide Restrictions
+CHILD_SIZE_RANGE 2.0         # Maximal differential between child and parent sizes.
+MIN_COPIED_LINES 0.5         # Code fraction which must be copied before divide.
+MIN_EXE_LINES 0.5            # Code fraction which must be executed before divide.
+MIN_GENOME_SIZE 0            # Minimum number of instructions allowed in a genome. 0 = OFF
+MAX_GENOME_SIZE 0            # Maximum number of instructions allowed in a genome. 0 = OFF
+REQUIRE_ALLOCATE 1           # (Original CPU Only) Require allocate before divide?
+REQUIRED_TASK -1             # Task ID required for successful divide.
+IMMUNITY_TASK -1             # Task providing immunity from the required task.
+REQUIRED_REACTION 0          # Reaction ID required for successful divide.
+REQUIRED_BONUS 0.0           # Required bonus to divide.
+IMPLICIT_REPRO_BONUS 0       # Call Inst_Repro to divide upon achieving this bonus. 0 = OFF
+IMPLICIT_REPRO_CPU_CYCLES 0  # Call Inst_Repro after this many cpu cycles. 0 = OFF
+IMPLICIT_REPRO_TIME 0        # Call Inst_Repro after this time used. 0 = OFF
+IMPLICIT_REPRO_END 0         # Call Inst_Repro after executing the last instruction in the genome.
+IMPLICIT_REPRO_ENERGY 0.0    # Call Inst_Repro if organism accumulates this amount of energy.
+
+### MUTATION_GROUP ###
+# 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.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)
+DIV_MUT_PROB 0.0         # Mutation rate (per site, applied on divide)
+DIV_INS_PROB 0.0         # Insertion rate (per site, applied on divide)
+DIV_DEL_PROB 0.0         # Deletion rate (per site, applied on divide)
+DIV_UNIFORM_PROB 0.0     # Uniform mutation probability (per site, applied on divide)
+                         # - Randomly applies any of the three classes of mutations (ins, del, point).
+DIV_SLIP_PROB 0.0        # Slip rate
+DIVIDE_MUT_PROB 0.0      # Mutation rate (per divide)
+DIVIDE_INS_PROB 0.05     # Insertion rate (per divide)
+DIVIDE_DEL_PROB 0.05     # Deletion rate (per divide)
+DIVIDE_UNIFORM_PROB 0.0  # Uniform mutation probability (per divide)
+                         # - Randomly applies any of the three classes of mutations (ins, del, point).
+DIVIDE_SLIP_PROB 0.0     # Slip rate (per divide) - creates large deletions/duplications
+INJECT_INS_PROB 0.0      # Insertion rate (per site, applied on inject)
+INJECT_DEL_PROB 0.0      # Deletion rate (per site, applied on inject)
+INJECT_MUT_PROB 0.0      # Mutation rate (per site, applied on inject)
+SLIP_FILL_MODE 0         # Fill insertions from slip mutations with 0=duplication, 1=nop-X, 2=random, 3=scrambled
+PARENT_MUT_PROB 0.0      # Per-site, in parent, on divide
+SPECIAL_MUT_LINE -1      # If this is >= 0, ONLY this line is mutated
+META_COPY_MUT 0.0        # Prob. of copy mutation rate changing (per gen)
+META_STD_DEV 0.0         # Standard deviation of meta mutation size.
+MUT_RATE_SOURCE 1        # 1 = Mutation rates determined by environment.
+                         # 2 = Mutation rates inherited from parent.
+MIGRATION_RATE 0.0       # Uniform probability of offspring migrating to a new deme.
+
+### REVERSION_GROUP ###
+# Mutation Reversion
+# These slow down avida a lot, and should be set to 0.0 normally.
+REVERT_FATAL 0.0           # Should any mutations be reverted on birth?
+REVERT_DETRIMENTAL 0.0     #   0.0 to 1.0; Probability of reversion.
+REVERT_NEUTRAL 0.0         # 
+REVERT_BENEFICIAL 0.0      # 
+STERILIZE_FATAL 0.0        # Should any mutations clear (kill) the organism?
+STERILIZE_DETRIMENTAL 0.0  # 
+STERILIZE_NEUTRAL 0.0      # 
+STERILIZE_BENEFICIAL 0.0   # 
+FAIL_IMPLICIT 0            # Should copies that failed *not* due to mutations
+                           # be eliminated?
+NEUTRAL_MAX 0.0            # The percent benifical change from parent fitness
+                           # to be considered neutral.
+NEUTRAL_MIN 0.0            # The percent deleterious change from parent fitness
+                           # to be considered neutral.
+
+### TIME_GROUP ###
+# Time Slicing
+AVE_TIME_SLICE 30           # Ave number of insts per org per update
+SLICING_METHOD 1            # 0 = CONSTANT: all organisms get default...
+                            # 1 = PROBABILISTIC: Run _prob_ proportional to merit.
+                            # 2 = INTEGRATED: Perfectly integrated deterministic.
+                            # 3 = DemeProbabalistic, each deme gets the same number of CPU cycles, which are awarded probabalistically within each deme.
+                            # 4 = ProbDemeProbabalistic, each deme gets CPU cycles proportional to its living population size, which are awarded probabalistically within each deme.
+                            # 5 = CONSTANT BURST: all organisms get default, in SLICING_BURST_SIZE chunks
+SLICING_BURST_SIZE 1        # Sets the scheduler burst size, when supported.
+BASE_MERIT_METHOD 4         # 0 = Constant (merit independent of size)
+                            # 1 = Merit proportional to copied size
+                            # 2 = Merit prop. to executed size
+                            # 3 = Merit prop. to full size
+                            # 4 = Merit prop. to min of executed or copied size
+                            # 5 = Merit prop. to sqrt of the minimum size
+                            # 6 = Merit prop. to num times MERIT_BONUS_INST is in genome.
+BASE_CONST_MERIT 100        # Base merit when BASE_MERIT_METHOD set to 0
+DEFAULT_BONUS 1.0           # Initial bonus before any tasks
+MERIT_DEFAULT_BONUS 0       # Scale the merit of an offspring by this default bonus
+                            # rather than the accumulated bonus of the parent? 0 = off
+MERIT_BONUS_INST 0          # in BASE_MERIT_METHOD 6, this sets which instruction counts
+                            # (-1 = none, 0 = First in INST_SET.)
+MERIT_BONUS_EFFECT 0        # in BASE_MERIT_METHOD 6, this sets how much merit is earned
+                            # per instruction (-1 = penalty, 0 = no effect.)
+FITNESS_METHOD 0            # 0 = default, >=1 = experimental
+FITNESS_COEFF_1 1.0         # 1st FITNESS_METHOD parameter
+FITNESS_COEFF_2 1.0         # 2nd FITNESS_METHOD parameter
+FITNESS_VALLEY 0            # in BASE_MERIT_METHOD 6, this creates valleys from
+                            # FITNESS_VALLEY_START to FITNESS_VALLEY_STOP
+                            # (0 = off, 1 = on)
+FITNESS_VALLEY_START 0      # if FITNESS_VALLEY = 1, orgs with num_key_instructions
+                            # from FITNESS_VALLEY_START to FITNESS_VALLEY_STOP
+                            # get fitness 1 (lowest)
+FITNESS_VALLEY_STOP 0       # if FITNESS_VALLEY = 1, orgs with num_key_instructions
+                            # from FITNESS_VALLEY_START to FITNESS_VALLEY_STOP
+                            # get fitness 1 (lowest)
+MAX_CPU_THREADS 1           # Number of Threads a CPU can spawn
+THREAD_SLICING_METHOD 0     # Formula for and organism's thread slicing
+                            #   (num_threads-1) * THREAD_SLICING_METHOD + 1
+                            # 0 = One thread executed per time slice.
+                            # 1 = All threads executed each time slice.
+NO_CPU_CYCLE_TIME 0         # Don't count each CPU cycle as part of gestation time
+MAX_LABEL_EXE_SIZE 1        # Max nops marked as executed when labels are used
+MERIT_GIVEN 0.0             # Fraction of merit donated with 'donate' command
+MERIT_RECEIVED 0.0          # Multiplier of merit given with 'donate' command
+MAX_DONATE_KIN_DIST -1      # Limit on distance of relation for donate; -1=no max
+MAX_DONATE_EDIT_DIST -1     # Limit on genetic (edit) distance for donate; -1=no max
+MIN_GB_DONATE_THRESHOLD -1  # threshold green beard donates only to orgs above this
+                            # donation attempt threshold; -1=no thresh
+DONATE_THRESH_QUANTA 10     # The size of steps between quanta donate thresholds
+MAX_DONATES 1000000         # Limit on number of donates organisms are allowed.
+PRECALC_PHENOTYPE 0         # 0 = Disabled
+                            #  1 = Assign precalculated merit at birth (unlimited resources only)
+                            #  2 = Assign precalculated gestation time
+                            #  3 = Assign precalculated merit AND gestation time.
+                            # Fitness will be evaluated for organism based on these settings.
+FASTFORWARD_UPDATES 0       # Fast-forward if the average generation has not changed in this many updates. (0 = off)
+FASTFORWARD_NUM_ORGS 0      # Fast-forward if population is equal to this
+
+### GENEOLOGY_GROUP ###
+# Geneology
+TRACK_MAIN_LINEAGE 1  # Keep all ancestors of the active population?
+                      # 0=no, 1=yes, 2=yes,w/sexual population
+THRESHOLD 3           # Number of organisms in a genotype needed for it
+                      #   to be considered viable.
+GENOTYPE_PRINT 0      # 0/1 (off/on) Print out all threshold genotypes?
+GENOTYPE_PRINT_DOM 0  # Print out a genotype if it stays dominant for
+                      #   this many updates. (0 = off)
+SPECIES_THRESHOLD 2   # max failure count for organisms to be same species
+SPECIES_RECORDING 0   # 1 = full, 2 = limited search (parent only)
+SPECIES_PRINT 0       # 0/1 (off/on) Print out all species?
+TEST_CPU_TIME_MOD 20  # Time allocated in test CPUs (multiple of length)
+
+### LOG_GROUP ###
+# Log Files
+LOG_CREATURES 0  # 0/1 (off/on) toggle to print file.
+LOG_GENOTYPES 0  # 0 = off, 1 = print ALL, 2 = print threshold ONLY.
+LOG_THRESHOLD 0  # 0/1 (off/on) toggle to print file.
+LOG_SPECIES 0    # 0/1 (off/on) toggle to print file.
+
+### LINEAGE_GROUP ###
+# Lineage
+# NOTE: This should probably be called "Clade"
+# This one can slow down avida a lot. It is used to get an idea of how
+# often an advantageous mutation arises, and where it goes afterwards.
+# Lineage creation options are.  Works only when LOG_LINEAGES is set to 1.
+#   0 = manual creation (on inject, use successive integers as lineage labels).
+#   1 = when a child's (potential) fitness is higher than that of its parent.
+#   2 = when a child's (potential) fitness is higher than max in population.
+#   3 = when a child's (potential) fitness is higher than max in dom. lineage
+# *and* the child is in the dominant lineage, or (2)
+#   4 = when a child's (potential) fitness is higher than max in dom. lineage
+# (and that of its own lineage)
+#   5 = same as child's (potential) fitness is higher than that of the
+#       currently dominant organism, and also than that of any organism
+#       currently in the same lineage.
+#   6 = when a child's (potential) fitness is higher than any organism
+#       currently in the same lineage.
+#   7 = when a child's (potential) fitness is higher than that of any
+#       organism in its line of descent
+LOG_LINEAGES 0             # 
+LINEAGE_CREATION_METHOD 0  # 
+
+### ORGANISM_NETWORK_GROUP ###
+# Organism Network Communication
+NET_ENABLED 0      # Enable Network Communication Support
+NET_DROP_PROB 0.0  # Message drop rate
+NET_MUT_PROB 0.0   # Message corruption probability
+NET_MUT_TYPE 0     # Type of message corruption.  0 = Random Single Bit, 1 = Always Flip Last
+NET_STYLE 0        # Communication Style.  0 = Random Next, 1 = Receiver Facing
+
+### ORGANISM_MESSAGING_GROUP ###
+# Organism Message-Based Communication
+MESSAGE_TYPE 0                      # Messaging Style. 0=Receiver Facing, 1=Broadcast
+MESSAGE_BCAST_RADIUS 1              # Broadcast message radius (cells)
+ORGANISMS_REMEMBER_MESSAGES 1       # Does an organism remember all messages it has sent or received? 0=false, 1=true (default)
+MESSAGE_QUEUE_SIZE -1               # Maximum number of unretrieved messages an organism can store (-1 for no limit is the default)
+MESSAGE_QUEUE_BEHAVIOR_WHEN_FULL 0  # 0 = Drop incoming message (default), 1 = Drop oldest unretrieved message
+
+### BUY_SELL_GROUP ###
+# Buying and Selling Parameters
+SAVE_RECEIVED 0  # Enable storage of all inputs bought from other orgs
+BUY_PRICE 0      # price offered by organisms attempting to buy
+SELL_PRICE 0     # price offered by organisms attempting to sell
+
+### HOARD_RESOURCE_GROUP ###
+# Resource Hoarding Parameters 
+USE_RESOURCE_BINS 1             # Enable resource bin use.  This serves as a guard on most resource hoarding code.
+ABSORB_RESOURCE_FRACTION 1.0  # Fraction of available environmental resource an organism absorbs with the collect instruction.
+MULTI_ABSORB_TYPE 0             # What to do if collect is called on a range of resources.
+                                #  0 = absorb a random resource in the range
+                                #  1 = absorb the first resource in the range
+                                #  2 = absorb the last resource in the range
+                                #  3 = absorb ABSORB_RESOURCE_FRACTION / (# of resources in range) of each resource in the range
+MAX_TOTAL_STORED -1             # Maximum total amount of all resources an organism can store.
+                                #  <0 = no maximum
+USE_STORED_FRACTION 1.0         # The fraction of stored resource to use.
+ENV_FRACTION_THRESHOLD 1.0      # The fraction of available environmental resource to compare available stored resource to when deciding whether to use stored resource.
+RETURN_STORED_ON_DEATH 0        # Return an organism's stored resources to the world when it dies?
+
+### ANALYZE_GROUP ###
+# Analysis Settings
+MAX_CONCURRENCY -1  # Maximum number of analyze threads, -1 == use all available.
+ANALYZE_OPTION_1    # String variable accessible from analysis scripts
+ANALYZE_OPTION_2    # String variable accessible from analysis scripts
+
+### ENERGY_GROUP ###
+# Energy Settings
+ENERGY_ENABLED 0                               # Enable Energy Model. 0/1 (off/on)
+ENERGY_GIVEN_ON_INJECT 0.0                     # Energy given to organism upon injection.
+ENERGY_GIVEN_AT_BIRTH 0.0                      # Energy given to offspring upon birth.
+FRAC_PARENT_ENERGY_GIVEN_TO_ORG_AT_BIRTH 0.5   # Fraction of parent's energy given to offspring organism.
+FRAC_PARENT_ENERGY_GIVEN_TO_DEME_AT_BIRTH 0.5  # Fraction of parent's energy given to offspring deme.
+FRAC_ENERGY_DECAY_AT_ORG_BIRTH 0.0             # Fraction of energy lost due to decay during organism reproduction.
+FRAC_ENERGY_DECAY_AT_DEME_BIRTH 0.0            # Fraction of energy lost due to decay during deme reproduction.
+NUM_INST_EXC_BEFORE_0_ENERGY 0                 # Number of instructions executed before energy is exhausted.
+ENERGY_CAP -1.0                                # Maximum amount of energy that can be stored in an organism.  -1 means the cap is set to Max Double
+APPLY_ENERGY_METHOD 0                          # When should rewarded energy be applied to current energy?
+                                               # 0 = on divide
+                                               # 1 = on completion of task
+                                               # 2 = on sleep
+FRAC_ENERGY_TRANSFER 0.0                       # Fraction of replaced organism's energy take by new resident
+LOG_SLEEP_TIMES 0                              # Log sleep start and end times. 0/1 (off/on)
+                                               # WARNING: may use lots of memory.
+FRAC_ENERGY_RELINQUISH 1.0                     # Fraction of organisms energy to relinquish
+ENERGY_PASSED_ON_DEME_REPLICATION_METHOD 0     # Who get energy passed from a parent deme
+                                               # 0 = Energy divided among organisms injected to offspring deme
+                                               # 1 = Energy divided among cells in offspring deme
+INHERIT_EXE_RATE 0                             # Inherit energy rate from parent? 0=no  1=yes
+ATTACK_DECAY_RATE 0.0                          # Percent of cell's energy decayed by attack
+ENERGY_THRESH_LOW .33                          # Threshold percent below which energy level is considered low.  Requires ENERGY_CAP.
+ENERGY_THRESH_HIGH .75                         # Threshold percent above which energy level is considered high.  Requires ENERGY_CAP.
+
+### ENERGY_SHARING_GROUP ###
+# Energy Sharing Settings
+ENERGY_SHARING_METHOD 0        # Method for sharing energy.  0=receiver must actively receive/request, 1=energy pushed on receiver
+ENERGY_SHARING_PCT 0.0         # Percent of energy to share
+ENERGY_SHARING_INCREMENT 0.01  # Amount to change percent energy shared
+ENERGY_SHARING_LOSS 0.0        # Percent of shared energy lost in transfer
+
+### SECOND_PASS_GROUP ###
+# Tracking metrics known after the running experiment previously
+TRACK_CCLADES 0                    # Enable tracking of coalescence clades
+TRACK_CCLADES_IDS coalescence.ids  # File storing coalescence IDs
+
+### GX_GROUP ###
+# Gene Expression CPU Settings
+MAX_PROGRAMIDS 16                # Maximum number of programids an organism can create.
+MAX_PROGRAMID_AGE 2000           # Max number of CPU cycles a programid executes before it is removed.
+IMPLICIT_GENE_EXPRESSION 0       # Create executable programids from the genome without explicit allocation and copying?
+IMPLICIT_BG_PROMOTER_RATE 0.0    # Relative rate of non-promoter sites creating programids.
+IMPLICIT_TURNOVER_RATE 0.0       # Number of programids recycled per CPU cycle. 0 = OFF
+IMPLICIT_MAX_PROGRAMID_LENGTH 0  # Creation of an executable programid terminates after this many instructions. 0 = disabled
+
+### PROMOTER_GROUP ###
+# Promoters
+PROMOTERS_ENABLED 0             # Use the promoter/terminator execution scheme.
+                                # Certain instructions must also be included.
+PROMOTER_INST_MAX 0             # Maximum number of instructions to execute before terminating. 0 = off
+PROMOTER_PROCESSIVITY 1.0       # Chance of not terminating after each cpu cycle.
+PROMOTER_PROCESSIVITY_INST 1.0  # Chance of not terminating after each instruction.
+PROMOTER_TO_REGISTER 0          # Place a promoter's base bit code in register BX when starting execution from it?
+TERMINATION_RESETS 0            # Does termination reset the thread's state?
+NO_ACTIVE_PROMOTER_EFFECT 0     # What happens when there are no active promoters?
+                                # 0 = Start execution at the beginning of the genome.
+                                # 1 = Kill the organism.
+                                # 2 = Stop the organism from executing any further instructions.
+PROMOTER_CODE_SIZE 24           # Size of a promoter code in bits. (Maximum value is 32)
+PROMOTER_EXE_LENGTH 3           # Length of promoter windows used to determine execution.
+PROMOTER_EXE_THRESHOLD 2        # Minimum number of bits that must be set in a promoter window to allow execution.
+INST_CODE_LENGTH 3              # Instruction binary code length (number of bits)
+INST_CODE_DEFAULT_TYPE 0        # Default value of instruction binary code value.
+                                # 0 = All zeros
+                                # 1 = Based off the instruction number
+CONSTITUTIVE_REGULATION 0       # Sense a new regulation value before each CPU cycle?
+
+### COLORS_GROUP ###
+# Output colors for when data files are printed in HTML mode.
+# There are two sets of these; the first are for lineages,
+# and the second are for mutation tests.
+COLOR_DIFF CCCCFF        # Color to flag stat that has changed since parent.
+COLOR_SAME FFFFFF        # Color to flag stat that has NOT changed since parent.
+COLOR_NEG2 FF0000        # Color to flag stat that is significantly worse than parent.
+COLOR_NEG1 FFCCCC        # Color to flag stat that is minorly worse than parent.
+COLOR_POS1 CCFFCC        # Color to flag stat that is minorly better than parent.
+COLOR_POS2 00FF00        # Color to flag stat that is significantly better than parent.
+COLOR_MUT_POS 00FF00     # Color to flag stat that has changed since parent.
+COLOR_MUT_NEUT FFFFFF    # Color to flag stat that has changed since parent.
+COLOR_MUT_NEG FFFF00     # Color to flag stat that has changed since parent.
+COLOR_MUT_LETHAL FF0000  # Color to flag stat that has changed since parent.
+
+### BIOMIMETIC_GROUP ###
+# Biomimetic Features Settings
+BIOMIMETIC_REFRACTORY_PERIOD 0.0  # Number of updates affected by refractory period
+BIOMIMETIC_MOVEMENT_STEP 1        # Number of cells to move Avidian on move instruction
+BIOMIMETIC_MOVEMENT_LOG 0         # Log detailed movement information (WARNING: large data file)
+BIOMIMETIC_MOVEMENT_FACTOR 1.0    # Scale merit bonus due to movement (m<1.0 applies a cost)
+BIOMIMETIC_EVAL_ON_MOVEMENT 0     # Force task evaluation on each movement step
+BIOMIMETIC_K 0                    # Carrying capacity in number of organisms
+
+### PHEROMONE_GROUP ###
+# Pheromone Settings
+PHEROMONE_ENABLED 0        # Enable pheromone usage. 0/1 (off/on)
+PHEROMONE_AMOUNT 1.0       # Amount of pheromone to add per drop
+PHEROMONE_DROP_MODE 0      # Where to drop pheromone
+                           # 0 = Half amount at src, half at dest
+                           # 1 = All at source
+                           # 2 = All at dest
+EXPLOIT_EXPLORE_PROB 0.00  # Probability of random exploration
+                           # instead of pheromone trail following
+LOG_PHEROMONE 0            # Log pheromone drops.  0/1 (off/on)
+PHEROMONE_LOG_START 0      # Update at which to start logging pheromone drops
+EXPLOIT_LOG_START 0        # Update at which to start logging exploit moves
+EXPLORE_LOG_START 0        # Update at which to start logging explore moves
+MOVETARGET_LOG_START 0     # Update at which to start logging movetarget moves
+LOG_INJECT 0               # Log injection of organisms.  0/1 (off/on)
+INJECT_LOG_START 0         # Update at which to start logging injection of
+                           # organisms
+
+### SYNCHRONIZATION_GROUP ###
+# Synchronization settings
+SYNC_FITNESS_WINDOW 100     # Number of updates over which to calculate fitness (default=100).
+SYNC_FLASH_LOSSRATE 0.0     # P() to lose a flash send (0.0==off).
+SYNC_TEST_FLASH_ARRIVAL -1  # CPU cycle at which an organism will receive a flash (off=-1, default=-1, analyze mode only.)

Added: development/tests/hoarding_collect_split_230u/config/collect+nand.org
===================================================================
--- development/tests/hoarding_collect_split_230u/config/collect+nand.org	                        (rev 0)
+++ development/tests/hoarding_collect_split_230u/config/collect+nand.org	2009-04-20 16:16:48 UTC (rev 3214)
@@ -0,0 +1,100 @@
+h-alloc    # Allocate space for child
+h-search   # Locate the end of the organism
+nop-C      #
+nop-A      #
+mov-head   # Place write-head at beginning of offspring.
+nop-C      #
+collect    # Collect resource (with no nop modifiers)
+IO         # I/O into the BX register
+nop-B      # 
+IO         # I/O into the CX register
+nop-C      # 
+nand       # Nand BX and CX, and place the result in the BX register
+nop-B      # 
+IO         # I/O from the BX register, triggering "nand" task
+nop-B      # 
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+nop-C      #
+h-search   # Mark the beginning of the copy loop
+h-copy     # Do the copy
+if-label   # If we're done copying....
+nop-C      #
+nop-A      #
+h-divide   #    ...divide!
+mov-head   # Otherwise, loop back to the beginning of the copy loop.
+nop-A      # End label.
+nop-B      #

Added: development/tests/hoarding_collect_split_230u/config/environment.high_initial
===================================================================
--- development/tests/hoarding_collect_split_230u/config/environment.high_initial	                        (rev 0)
+++ development/tests/hoarding_collect_split_230u/config/environment.high_initial	2009-04-20 16:16:48 UTC (rev 3214)
@@ -0,0 +1,21 @@
+##############################################################################
+#
+# This is the setup file for the task/resource system.  From here, you can
+# setup the available resources (including their inflow and outflow rates) as
+# well as the reactions that the organisms can trigger by performing tasks.
+#
+# This environmental setup is that of a chemostat with 9 resources, each
+# with a unique task corresponding to them.  All resources have a set inflow
+# of 100, and outflow rate of 0.01, setting their an equilibrium level at
+# 10,000.  Given a maximum population size of 3600 and neighborhood size of
+# 9, the fraction of the resource absorbable in each reaction is simply
+# 9/3600 or 0.0025.
+#
+# For information on how to use this file, see:  doc/environment.html
+# For other sample environments, see:  source/support/config/ 
+#
+##############################################################################
+
+RESOURCE  resNAND:initial=10000.0:inflow=0.0:outflow=0.0
+
+REACTION  NAND  nand   process:resource=resNAND:value=1.0:frac=0.0025:max=25.0:min=.001

Added: development/tests/hoarding_collect_split_230u/config/events-splittest.cfg
===================================================================
--- development/tests/hoarding_collect_split_230u/config/events-splittest.cfg	                        (rev 0)
+++ development/tests/hoarding_collect_split_230u/config/events-splittest.cfg	2009-04-20 16:16:48 UTC (rev 3214)
@@ -0,0 +1,39 @@
+##############################################################################
+#
+# This is the setup file for the events system.  From here, you can
+# configure any actions that you want to have happen during the course of
+# an experiment, including setting the times for data collection.
+#
+# basic syntax: [trigger] [start:interval:stop] [action/event] [arguments...]
+#
+# This file is currently setup to record key information every 100 updates.
+#
+# For information on how to use this file, see:  doc/events.html
+# For other sample event configurations, see:  support/config/
+#
+##############################################################################
+i PrintResourceData
+
+# Print all of the standard data files...
+u 0:10:end PrintAverageData       # Save info about they average genotypes
+u 0:10:end PrintDominantData      # Save info about most abundant genotypes
+u 0:10:end PrintStatsData         # Collect satistics about entire pop.
+u 0:10:end PrintCountData         # Count organisms, genotypes, species, etc.
+u 0:10:end PrintTasksData         # Save organisms counts for each task.
+u 0:10:end PrintTimeData          # Track time conversion (generations, etc.)
+u 0:10:end PrintResourceData      # Track resource abundance.
+u 0:10:end PrintReactionData			# Track reactions.
+u 0:10:end PrintReactionExeData		# Not sure what the difference is?  Print both!
+
+# A few data files not printed by default
+# u 0:100 PrintDominantGenotype      # Save the most abundant genotypes
+# u 100:100:end PrintErrorData       # Std. Error on averages.
+# u 100:100:end PrintVarianceData    # Variance on averages.
+# u 100:100:end PrintTotalsData      # Total counts over entire run.
+# u 100:100:end PrintTasksExeData    # Num. times tasks have been executed.
+# u 100:100:end PrintTasksQualData   # Task quality information
+
+# Setup the exit time and full population data collection.
+# u 50000:50000 SavePopulation         # Save current state of population.
+# u 50000:50000 SaveHistoricPopulation # Save ancestors of current population.
+u 300 exit                        # exit

Added: development/tests/hoarding_collect_split_230u/config/instset-collect.cfg
===================================================================
--- development/tests/hoarding_collect_split_230u/config/instset-collect.cfg	                        (rev 0)
+++ development/tests/hoarding_collect_split_230u/config/instset-collect.cfg	2009-04-20 16:16:48 UTC (rev 3214)
@@ -0,0 +1,53 @@
+nop-A      1   # a
+nop-B      1   # b
+nop-C      1   # c
+if-n-equ   1   # d
+if-less    1   # e
+pop        1   # f
+push       1   # g
+swap-stk   1   # h
+swap       1   # i 
+shift-r    1   # j
+shift-l    1   # k
+inc        1   # l
+dec        1   # m
+add        1   # n
+sub        1   # o
+nand       1   # p
+IO         1   # q   Puts current contents of register and gets new.
+h-alloc    1   # r   Allocate as much memory as organism can use.
+h-divide   1   # s   Cuts off everything between the read and write heads
+h-copy     1   # t   Combine h-read and h-write
+h-search   1   # u   Search for matching template, set flow head & return info
+               #   #   if no template, move flow-head here, set size&offset=0.
+mov-head   1   # v   Move ?IP? head to flow control.
+jmp-head   1   # w   Move ?IP? head by fixed amount in CX.  Set old pos in CX.
+get-head   1   # x   Get position of specified head in CX.
+if-label   1   # y
+set-flow   1   # z   Move flow-head to address in ?CX? 
+collect    1
+
+#adv-head   1
+#jump-f     1
+#jump-b     1
+#call       1
+#return     1
+#if-bit-1   1
+#get        1
+#put        1
+#h-read     1
+#h-write    1
+#set-head   1
+#search-f   1
+#search-b   1
+
+
+# Works on multiple nops:  pop  push  inc  dec  IO  adv-head 
+
+# What if we add a new head.  Search will return the location of something,
+# and put the new head there.  Then set-head will move another head to that
+# point.  In the case of the copy loop, it only needs to be set once and
+# this will speed up the code quite a bit!
+
+# Search with no template returns current position (abs line number) in
+# genome.
\ No newline at end of file

Added: development/tests/hoarding_collect_split_230u/expected/data/average.dat
===================================================================
--- development/tests/hoarding_collect_split_230u/expected/data/average.dat	                        (rev 0)
+++ development/tests/hoarding_collect_split_230u/expected/data/average.dat	2009-04-20 16:16:48 UTC (rev 3214)
@@ -0,0 +1,42 @@
+# Avida Average Data
+# Mon Apr 20 11:52:07 2009
+#  1: Update
+#  2: Merit
+#  3: Gestation Time
+#  4: Fitness
+#  5: Repro Rate?
+#  6: Size
+#  7: Copied Size
+#  8: Executed Size
+#  9: Abundance
+# 10: Proportion of organisms that gave birth in this update
+# 11: Proportion of Breed True Organisms
+# 12: Genotype Depth
+# 13: Generation
+# 14: Neutral Metric
+# 15: Lineage Label
+# 16: True Replication Rate (based on births/update, time-averaged)
+
+0 2522.000000 385.000000 0.000000 0.000000 100.000000 100.000000 97.000000 1.000000 1.000000 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 
+10 2522 385 0 0 100 100 97 1 0 0 0 0 0 0 0 
+20 2522 385 6.55065 0 100 100 97 2 0 0 0 1 0.860071 0 0 
+30 2522 385 6.55065 0 99.75 100 97 1.33333 0 0 0.5 2 1.44433 0 0 
+40 2514.57 383.857 6.5508 0 99.7143 99.8571 96.7143 1.75 0.142857 0 0.571429 2.85714 0.800985 0 0 
+50 2514.57 383.857 6.5508 0 99.7143 99.8571 96.7143 1.75 0 0 0.571429 2.85714 0.800985 0 0 
+60 2514 383.615 6.55344 0 99.6154 99.7692 96.6923 2.6 0 0 0.615385 3.84615 0.438286 0 0 
+70 2411.76 379 6.33389 0 99.6 97.68 92.76 2.08333 0 0 0.88 4.88 0.309612 0 0 
+80 2449.2 380.35 6.4204 0 99.625 98.425 94.2 1.66667 0.05 0 1.2 5.85 0.187879 0 0 
+90 2463.62 380.755 6.45598 0 99.5849 98.6981 94.7547 1.43243 0.207547 0.0566038 1.49057 6.5283 0.42406 0 0 
+100 2468.7 380.783 6.47049 0 99.6 98.8167 94.95 1.39535 0.0333333 0.0166667 1.63333 6.96667 0.00403231 0 0 
+110 2437.34 379.183 6.40889 0 99.7195 98.4024 93.7439 1.41379 0 0 1.91463 7.84146 -0.135151 0 0 
+120 1507.79 378.701 3.97338 0 99.8131 98.2243 93.3364 1.37179 0 0 2.24299 8.79439 0.15193 0 0 
+130 1507.79 378.701 3.97338 0 99.8131 98.2243 93.3364 1.37179 0 0 2.24299 8.79439 0.15193 0 0 
+140 1479.04 378.587 3.89919 0 99.8173 98.1827 93.25 1.38667 0 0 2.25962 8.85577 0.159877 0 0 
+150 1437.58 378.39 3.79278 0 99.81 98.11 93.11 1.40845 0 0 2.27 8.9 0.0577729 0 0 
+160 1426.89 378.374 3.76474 0 99.7071 98.101 93.0808 1.41429 0 0 2.26263 8.90909 0.132184 0 0 
+170 1430.58 379.412 3.76392 0 99.7216 98.5876 94.0103 1.42647 0 0 2.27835 8.98969 0.0944601 0 0 
+180 1416.12 377.971 3.73768 0 99.7246 98.1159 92.913 1.35294 0 0 2.34783 8.98551 -0.147699 0 0 
+190 606.406 323 1.87742 0 100 75 40 1 0 0 2.5 9 2.07495 0 0 
+200 606.406 323 1.87742 0 100 75 40 1 0 0 2.5 9 2.07495 0 0 
+210 606.406 323 1.87742 0 100 75 40 1 0 0 2.5 9 2.07495 0 0 
+220 606.406 323 1.87742 0 100 75 40 1 0 0 2.5 9 2.07495 0 0 

Added: development/tests/hoarding_collect_split_230u/expected/data/count.dat
===================================================================
--- development/tests/hoarding_collect_split_230u/expected/data/count.dat	                        (rev 0)
+++ development/tests/hoarding_collect_split_230u/expected/data/count.dat	2009-04-20 16:16:48 UTC (rev 3214)
@@ -0,0 +1,42 @@
+# Avida count data
+# Mon Apr 20 11:52:07 2009
+#  1: update
+#  2: number of insts executed this update
+#  3: number of organisms
+#  4: number of different genotypes
+#  5: number of different threshold genotypes
+#  6: number of different species
+#  7: number of different threshold species
+#  8: number of different lineages
+#  9: number of births in this update
+# 10: number of deaths in this update
+# 11: number of breed true
+# 12: number of breed true organisms?
+# 13: number of no-birth organisms
+# 14: number of single-threaded organisms
+# 15: number of multi-threaded organisms
+# 16: number of modified organisms
+
+0 30 1 1 1 0 0 0 1 0 1 1 1 1 0 0 
+10 30 1 1 1 0 0 0 0 0 0 1 1 1 0 0 
+20 60 2 1 1 0 0 0 0 0 0 2 1 2 0 0 
+30 120 4 3 1 0 0 0 0 0 0 2 2 4 0 0 
+40 180 7 4 1 0 0 0 1 0 0 4 4 7 0 0 
+50 210 7 4 1 0 0 0 0 0 0 4 4 7 0 0 
+60 390 13 5 2 0 0 0 0 0 0 9 7 13 0 0 
+70 750 25 12 3 0 0 0 0 0 0 14 13 25 0 0 
+80 1140 40 24 3 0 0 0 2 0 0 18 21 40 0 0 
+90 1410 53 37 5 0 0 0 11 5 3 18 29 53 0 0 
+100 1740 60 43 5 0 0 0 2 0 1 19 33 60 0 0 
+110 2460 82 58 7 0 0 0 0 0 0 29 46 82 0 0 
+120 3210 107 78 11 0 0 0 0 0 0 41 60 107 0 0 
+130 3210 107 78 11 0 0 0 0 0 0 41 60 107 0 0 
+140 3150 104 75 11 0 0 0 0 1 0 41 57 104 0 0 
+150 3000 100 71 11 0 0 0 0 0 0 41 53 100 0 0 
+160 2970 99 70 11 0 0 0 0 0 0 41 52 99 0 0 
+170 2910 97 68 11 0 0 0 0 0 0 41 51 97 0 0 
+180 2610 69 51 10 0 0 0 0 18 0 32 39 69 0 0 
+190 60 2 2 2 0 0 0 0 0 0 0 1 2 0 0 
+200 60 2 2 2 0 0 0 0 0 0 0 1 2 0 0 
+210 60 2 2 2 0 0 0 0 0 0 0 1 2 0 0 
+220 60 2 2 2 0 0 0 0 0 0 0 1 2 0 0 

Added: development/tests/hoarding_collect_split_230u/expected/data/dominant.dat
===================================================================
--- development/tests/hoarding_collect_split_230u/expected/data/dominant.dat	                        (rev 0)
+++ development/tests/hoarding_collect_split_230u/expected/data/dominant.dat	2009-04-20 16:16:48 UTC (rev 3214)
@@ -0,0 +1,42 @@
+# Avida Dominant Data
+# Mon Apr 20 11:52:07 2009
+#  1: Update
+#  2: Average Merit of the Dominant Genotype
+#  3: Average Gestation Time of the Dominant Genotype
+#  4: Average Fitness of the Dominant Genotype
+#  5: Repro Rate?
+#  6: Size of Dominant Genotype
+#  7: Copied Size of Dominant Genotype
+#  8: Executed Size of Dominant Genotype
+#  9: Abundance of Dominant Genotype
+# 10: Number of Births
+# 11: Number of Dominant Breed True?
+# 12: Dominant Gene Depth
+# 13: Dominant Breed In
+# 14: Max Fitness?
+# 15: Genotype ID of Dominant Genotype
+# 16: Name of the Dominant Genotype
+
+0 0.000000 0.000000 0.000000 0.000000 100 0.000000 0.000000 1 0 0 0 0 0.000000 1 100-aaaaa 
+10 0 0 0 0 100 0 0 1 0 0 0 0 0 1 100-aaaaa 
+20 2522 385 6.55065 0.0025974 100 100 97 2 0 0 0 0 6.55065 1 100-aaaaa 
+30 2522 385 6.55065 0.0025974 100 100 97 2 0 0 0 0 6.55065 1 100-aaaaa 
+40 2522 385 6.55065 0.0025974 100 100 97 3 1 0 0 0 6.55118 1 100-aaaaa 
+50 2522 385 6.55065 0.0025974 100 100 97 3 0 0 0 0 6.55118 1 100-aaaaa 
+60 2522 385 6.55065 0.0025974 100 100 97 5 0 0 0 0 6.56771 1 100-aaaaa 
+70 2522 385 6.55065 0.0025974 100 100 97 7 0 0 0 0 6.56771 1 100-aaaaa 
+80 2496 381 6.55118 0.00262467 99 99.3333 96 7 0 0 1 0 6.58575 3 099-aaaaa 
+90 2496 381 6.55118 0.00262467 99 99.2667 96 6 2 1 1 0 6.58575 3 099-aaaaa 
+100 2496 381 6.55118 0.00262467 99 99.2222 96 4 0 0 1 0 6.58575 3 099-aaaaa 
+110 2522 385 6.55065 0.0025974 100 100 97 4 0 0 0 0 6.60317 1 100-aaaaa 
+120 2149.12 379 5.67051 0.00263852 99 99 96 4 0 0 2 0 6.56842 10 099-aaaab 
+130 2149.12 379 5.67051 0.00263852 99 99 96 4 0 0 2 0 6.56842 10 099-aaaab 
+140 2149.12 379 5.67051 0.00263852 99 99 96 4 0 0 2 0 6.56842 10 099-aaaab 
+150 2149.12 379 5.67051 0.00263852 99 99 96 4 0 0 2 0 6.56842 10 099-aaaab 
+160 2149.12 379 5.67051 0.00263852 99 99 96 4 0 0 2 0 3.8502 10 099-aaaab 
+170 2149.12 379 5.67051 0.00263852 99 99 96 4 0 0 2 0 3.8502 10 099-aaaab 
+180 2149.12 379 5.67051 0.00263852 99 99 96 4 0 0 2 0 3.8502 10 099-aaaab 
+190 606.406 323 1.87742 0.00309598 100 100 40 1 1 0 2 1 1.87742 70 100-no_name 
+200 606.406 323 1.87742 0.00309598 100 100 40 1 1 0 2 1 1.87742 70 100-no_name 
+210 606.406 323 1.87742 0.00309598 100 100 40 1 1 0 2 1 1.87742 70 100-no_name 
+220 606.406 323 1.87742 0.00309598 100 100 40 1 1 0 2 1 1.87742 70 100-no_name 

Added: development/tests/hoarding_collect_split_230u/expected/data/reactions.dat
===================================================================
--- development/tests/hoarding_collect_split_230u/expected/data/reactions.dat	                        (rev 0)
+++ development/tests/hoarding_collect_split_230u/expected/data/reactions.dat	2009-04-20 16:16:48 UTC (rev 3214)
@@ -0,0 +1,30 @@
+# Avida reaction data
+# Mon Apr 20 11:52:07 2009
+# First column gives the current update, all further columns give the number
+# of currently living organisms each reaction has affected.
+#  1: Update
+#  2: NAND
+
+0 0 
+10 0 
+20 2 
+30 4 
+40 7 
+50 7 
+60 13 
+70 25 
+80 40 
+90 53 
+100 60 
+110 82 
+120 107 
+130 107 
+140 104 
+150 100 
+160 99 
+170 97 
+180 69 
+190 2 
+200 2 
+210 2 
+220 2 

Added: development/tests/hoarding_collect_split_230u/expected/data/reactions_exe.dat
===================================================================
--- development/tests/hoarding_collect_split_230u/expected/data/reactions_exe.dat	                        (rev 0)
+++ development/tests/hoarding_collect_split_230u/expected/data/reactions_exe.dat	2009-04-20 16:16:48 UTC (rev 3214)
@@ -0,0 +1,30 @@
+# Avida reaction execution data
+# Mon Apr 20 11:52:07 2009
+# First column gives the current update, all further columns give the number
+# of times the particular reaction has been triggered this update.
+#  1: Update
+#  2: NAND
+
+0 0 
+10 0 
+20 2 
+30 4 
+40 7 
+50 7 
+60 13 
+70 25 
+80 40 
+90 53 
+100 60 
+110 82 
+120 107 
+130 107 
+140 104 
+150 100 
+160 99 
+170 97 
+180 69 
+190 2 
+200 2 
+210 2 
+220 2 

Added: development/tests/hoarding_collect_split_230u/expected/data/resource.dat
===================================================================
--- development/tests/hoarding_collect_split_230u/expected/data/resource.dat	                        (rev 0)
+++ development/tests/hoarding_collect_split_230u/expected/data/resource.dat	2009-04-20 16:16:48 UTC (rev 3214)
@@ -0,0 +1,31 @@
+# Avida resource data
+# Mon Apr 20 11:52:07 2009
+# First column gives the current update, all further columns give the quantity
+# of the particular resource at that update.
+#  1: Update
+#  2: resNAND
+
+-1 0.000000 
+0 0 
+10 0 
+20 0 
+30 0 
+40 0 
+50 0 
+60 0 
+70 0 
+80 0 
+90 0 
+100 0 
+110 0 
+120 0 
+130 0 
+140 0 
+150 0 
+160 0 
+170 0 
+180 0 
+190 0 
+200 0 
+210 0 
+220 0 

Added: development/tests/hoarding_collect_split_230u/expected/data/stats.dat
===================================================================
--- development/tests/hoarding_collect_split_230u/expected/data/stats.dat	                        (rev 0)
+++ development/tests/hoarding_collect_split_230u/expected/data/stats.dat	2009-04-20 16:16:48 UTC (rev 3214)
@@ -0,0 +1,38 @@
+# Generic Statistics Data
+# Mon Apr 20 11:52:07 2009
+#  1: update
+#  2: average inferiority (energy)
+#  3: ave probability of any mutations in genome
+#  4: probability of any mutations in dom genome
+#  5: log(average fidelity)
+#  6: log(dominant fidelity)
+#  7: change in number of genotypes
+#  8: genotypic entropy
+#  9: species entropy
+# 10: depth of most reacent coalescence
+# 11: Total number of resamplings this generation
+# 12: Total number of organisms that failed to resample this generation
+
+0 0.000000 0.562828 0.562828 0.827429 0.827429 1 0.000000 0.000000 0 0 0 
+10 0 0.562828 0.562828 0.827429 0.827429 0 0 0 0 0 0 
+20 0 0.562828 0.562828 0.827429 0.827429 0 0 0 0 0 0 
+30 0 0.562035 0.562828 0.825617 0.827429 0 1.03972 0 0 0 0 
+40 -2.31927e-05 0.561922 0.562828 0.825358 0.827429 1 1.27703 0 0 0 0 
+50 -2.31927e-05 0.561922 0.562828 0.825358 0.827429 0 1.27703 0 0 0 0 
+60 -0.000425528 0.561608 0.562828 0.824642 0.827429 0 1.41274 0 0 0 0 
+70 0.03365 0.561559 0.562828 0.82453 0.827429 0 2.11217 0 0 0 0 
+80 0.0201653 0.561638 0.559648 0.824711 0.820181 2 2.90456 0 0 0 0 
+90 0.0146387 0.561511 0.559648 0.824421 0.820181 6 3.42396 0 1 0 0 
+100 0.0123934 0.561559 0.559648 0.82453 0.820181 1 3.62919 0 1 0 0 
+110 0.0218781 0.561939 0.562828 0.825396 0.827429 0 3.95216 0 0 0 0 
+120 0.355664 0.562236 0.559648 0.826075 0.820181 0 4.25481 0 0 0 0 
+130 0.355664 0.562236 0.559648 0.826075 0.820181 0 4.25481 0 0 0 0 
+140 0.374512 0.562249 0.559648 0.826105 0.820181 -1 4.21431 0 0 0 0 
+150 0.40218 0.562226 0.559648 0.826052 0.820181 0 4.15789 0 0 0 0 
+160 0.4096 0.561899 0.559648 0.825306 0.820181 0 4.14332 0 0 0 0 
+170 0.40982 0.561945 0.559648 0.825412 0.820181 0 4.11359 0 0 0 0 
+180 0.416816 0.561955 0.559648 0.825434 0.820181 -13 3.82962 0 1 0 0 
+190 0 0.562828 0.562828 0.827429 0.827429 0 0.693147 0 2 0 0 
+200 0 0.562828 0.562828 0.827429 0.827429 0 0.693147 0 2 0 0 
+210 0 0.562828 0.562828 0.827429 0.827429 0 0.693147 0 2 0 0 
+220 0 0.562828 0.562828 0.827429 0.827429 0 0.693147 0 2 0 0 

Added: development/tests/hoarding_collect_split_230u/expected/data/tasks.dat
===================================================================
--- development/tests/hoarding_collect_split_230u/expected/data/tasks.dat	                        (rev 0)
+++ development/tests/hoarding_collect_split_230u/expected/data/tasks.dat	2009-04-20 16:16:48 UTC (rev 3214)
@@ -0,0 +1,30 @@
+# Avida tasks data
+# Mon Apr 20 11:52:07 2009
+# First column gives the current update, next columns give the number
+# of organisms that have the particular task as a component of their merit
+#  1: Update
+#  2: Nand
+
+0 0 
+10 0 
+20 2 
+30 4 
+40 7 
+50 7 
+60 13 
+70 25 
+80 40 
+90 53 
+100 60 
+110 82 
+120 107 
+130 107 
+140 104 
+150 100 
+160 99 
+170 97 
+180 69 
+190 2 
+200 2 
+210 2 
+220 2 

Added: development/tests/hoarding_collect_split_230u/expected/data/time.dat
===================================================================
--- development/tests/hoarding_collect_split_230u/expected/data/time.dat	                        (rev 0)
+++ development/tests/hoarding_collect_split_230u/expected/data/time.dat	2009-04-20 16:16:48 UTC (rev 3214)
@@ -0,0 +1,30 @@
+# Avida time data
+# Mon Apr 20 11:52:07 2009
+#  1: update
+#  2: avida time
+#  3: average generation
+#  4: num_executed?
+
+0 0.000000 0.000000 30 
+10 0.00396511 0 30 
+20 0.00793021 1 60 
+30 0.0118953 2 120 
+40 0.0158618 2.85714 180 
+50 0.0198386 2.85714 210 
+60 0.0238161 3.84615 390 
+70 0.0279701 4.88 750 
+80 0.0320989 5.85 1140 
+90 0.0361798 6.5283 1410 
+100 0.0402341 6.96667 1740 
+110 0.0443345 7.84146 2460 
+120 0.0497296 8.79439 3210 
+130 0.0563618 8.79439 3210 
+140 0.0630355 8.85577 3150 
+150 0.0698733 8.9 3000 
+160 0.0768764 8.90909 2970 
+170 0.0838711 8.98969 2910 
+180 0.0908641 8.98551 2610 
+190 0.101398 9 60 
+200 0.117888 9 60 
+210 0.134379 9 60 
+220 0.15087 9 60 

Added: development/tests/hoarding_collect_split_230u/test_list
===================================================================
--- development/tests/hoarding_collect_split_230u/test_list	                        (rev 0)
+++ development/tests/hoarding_collect_split_230u/test_list	2009-04-20 16:16:48 UTC (rev 3214)
@@ -0,0 +1,37 @@
+;--- Begin Test Configuration File (test_list) ---
+[main]
+; Command line arguments to pass to the application
+args = -s 100 -c avida-splittest.cfg                  
+
+app = %(default_app)s            ; Application path to test
+nonzeroexit = disallow   ; Exit code handling (disallow, allow, or require)
+                         ;  disallow - treat non-zero exit codes as failures
+                         ;  allow - all exit codes are acceptable
+                         ;  require - treat zero exit codes as failures, useful
+                         ;            for creating tests for app error checking
+createdby = blw          ; Who created the test
+email = blwalker at egr.msu.edu  ; Email address for the test's creator
+
+[consistency]
+enabled = yes            ; Is this test a consistency test?
+long = no                ; Is this test a long test?
+
+[performance]
+enabled = no             ; Is this test a performance test?
+long = no                ; Is this test a long test?
+
+; The following variables can be used in constructing setting values by calling
+; them with %(variable_name)s.  For example see 'app' above.
+;
+; builddir 
+; cpus 
+; default_app 
+; mode 
+; perf_repeat 
+; perf_user_margin 
+; perf_wall_margin 
+; svn 
+; svnmetadir 
+; svnversion 
+; testdir 
+;--- End Test Configuration File ---




More information about the Avida-cvs mailing list