[Avida-SVN] r2305 - in development: Avida.xcodeproj source/cpu source/drivers source/main source/tools tests/_exp_500u tests/_exp_500u/expected tests/_exp_500u/expected/data tests/_exp_500u/expected/data/archive

brysonda at myxo.css.msu.edu brysonda at myxo.css.msu.edu
Wed Feb 6 20:55:08 PST 2008


Author: brysonda
Date: 2008-02-06 23:55:07 -0500 (Wed, 06 Feb 2008)
New Revision: 2305

Added:
   development/tests/_exp_500u/expected/
   development/tests/_exp_500u/expected/data/
   development/tests/_exp_500u/expected/data/archive/
   development/tests/_exp_500u/expected/data/archive/098-aaaad.org
   development/tests/_exp_500u/expected/data/archive/098-aaaak.org
   development/tests/_exp_500u/expected/data/archive/100-aaaaa.org
   development/tests/_exp_500u/expected/data/archive/100-aaaba.org
   development/tests/_exp_500u/expected/data/archive/101-aaaab.org
   development/tests/_exp_500u/expected/data/archive/101-aaabf.org
   development/tests/_exp_500u/expected/data/archive/101-aaafv.org
   development/tests/_exp_500u/expected/data/archive/103-aaaaf.org
   development/tests/_exp_500u/expected/data/average.dat
   development/tests/_exp_500u/expected/data/count.dat
   development/tests/_exp_500u/expected/data/dominant.dat
   development/tests/_exp_500u/expected/data/resource.dat
   development/tests/_exp_500u/expected/data/stats.dat
   development/tests/_exp_500u/expected/data/tasks.dat
   development/tests/_exp_500u/expected/data/tasks_exe.dat
   development/tests/_exp_500u/expected/data/tasks_quality.dat
   development/tests/_exp_500u/expected/data/time.dat
Modified:
   development/Avida.xcodeproj/project.pbxproj
   development/source/cpu/cHardwareBase.h
   development/source/cpu/cHardwareCPU.cc
   development/source/cpu/cHardwareCPU.h
   development/source/cpu/cHardwareExperimental.cc
   development/source/cpu/cHardwareExperimental.h
   development/source/cpu/cHardwareGX.cc
   development/source/cpu/cHardwareGX.h
   development/source/cpu/cHardwareSMT.cc
   development/source/cpu/cHardwareSMT.h
   development/source/cpu/cHardwareTransSMT.cc
   development/source/cpu/cHardwareTransSMT.h
   development/source/cpu/cInstLibEntry.h
   development/source/cpu/cInstSet.h
   development/source/cpu/cTestCPUInterface.cc
   development/source/cpu/cTestCPUInterface.h
   development/source/drivers/cDefaultRunDriver.cc
   development/source/main/cOrgInterface.h
   development/source/main/cPhenotype.h
   development/source/main/cPopulation.cc
   development/source/main/cPopulationCell.cc
   development/source/main/cPopulationCell.h
   development/source/main/cPopulationInterface.cc
   development/source/main/cPopulationInterface.h
   development/source/main/cStats.cc
   development/source/main/cStats.h
   development/source/tools/cRandom.h
   development/tests/_exp_500u/test_list
Log:
Build initial support for speculative instruction execution.  First pass tests show that this can yield a significant performance improvement (on G5's at least).

Modified: development/Avida.xcodeproj/project.pbxproj
===================================================================
--- development/Avida.xcodeproj/project.pbxproj	2008-02-07 01:19:26 UTC (rev 2304)
+++ development/Avida.xcodeproj/project.pbxproj	2008-02-07 04:55:07 UTC (rev 2305)
@@ -1784,10 +1784,12 @@
 		DCC30C4D0762532C008F7A48 /* Project object */ = {
 			isa = PBXProject;
 			buildConfigurationList = 702442D70859E0B00059BD9B /* Build configuration list for PBXProject "Avida" */;
+			compatibilityVersion = "Xcode 2.4";
 			hasScannedForEncodings = 0;
 			mainGroup = DCC30C490762532C008F7A48;
 			productRefGroup = DCC3164E07626CF3008F7A48 /* Products */;
 			projectDirPath = "";
+			projectRoot = "";
 			targets = (
 				7023ED520C0A590200362B9C /* full-suite */,
 				DCC3164C07626CF3008F7A48 /* avida */,

Modified: development/source/cpu/cHardwareBase.h
===================================================================
--- development/source/cpu/cHardwareBase.h	2008-02-07 01:19:26 UTC (rev 2304)
+++ development/source/cpu/cHardwareBase.h	2008-02-07 04:55:07 UTC (rev 2305)
@@ -67,6 +67,9 @@
   bool m_has_costs;
   bool m_has_ft_costs;
   bool m_has_energy_costs;
+  
+  bool m_supports_speculative;
+  
 
   virtual int GetExecutedSize(const int parent_size);
   virtual int GetCopiedSize(const int parent_size, const int child_size) = 0;  
@@ -96,7 +99,7 @@
   cHardwareBase(cWorld* world, cOrganism* in_organism, cInstSet* inst_set)
     : m_world(world), organism(in_organism), m_inst_set(inst_set), m_tracer(NULL)
     , m_has_costs(inst_set->HasCosts()), m_has_ft_costs(inst_set->HasFTCosts())
-    , m_has_energy_costs(m_inst_set->HasEnergyCosts())
+    , m_has_energy_costs(m_inst_set->HasEnergyCosts()), m_supports_speculative(false)
   {
     m_has_any_costs = (m_has_costs | m_has_ft_costs | m_has_energy_costs);
     assert(organism != NULL);
@@ -110,13 +113,15 @@
   
   // --------  Core Functionality  --------
   virtual void Reset() = 0;
-  virtual void SingleProcess(cAvidaContext& ctx) = 0;
+  virtual bool SingleProcess(cAvidaContext& ctx, bool speculative = false) = 0;
   virtual void ProcessBonusInst(cAvidaContext& ctx, const cInstruction& inst) = 0;
 
   unsigned Divide_DoMutations(cAvidaContext& ctx, double mut_multiplier = 1.0, const int maxmut = INT_MAX);
   bool Divide_TestFitnessMeasures(cAvidaContext& ctx);
   
+  inline bool SupportsSpeculative() const { return m_supports_speculative; }
   
+  
   // --------  Helper methods  --------
   virtual int GetType() const = 0;
   virtual bool OK() = 0;

Modified: development/source/cpu/cHardwareCPU.cc
===================================================================
--- development/source/cpu/cHardwareCPU.cc	2008-02-07 01:19:26 UTC (rev 2304)
+++ development/source/cpu/cHardwareCPU.cc	2008-02-07 04:55:07 UTC (rev 2305)
@@ -507,7 +507,7 @@
 // This function processes the very next command in the genome, and is made
 // to be as optimized as possible.  This is the heart of avida.
 
-void cHardwareCPU::SingleProcess(cAvidaContext& ctx)
+bool cHardwareCPU::SingleProcess(cAvidaContext& ctx, bool speculative)
 {
 
   int last_IP_pos = IP().GetPosition();
@@ -616,6 +616,8 @@
   CheckImplicitRepro(ctx, last_IP_pos > IP().GetPosition());
   
   organism->SetRunning(false);
+  
+  return true;
 }
 
 // This method will handle the actual execution of an instruction

Modified: development/source/cpu/cHardwareCPU.h
===================================================================
--- development/source/cpu/cHardwareCPU.h	2008-02-07 01:19:26 UTC (rev 2304)
+++ development/source/cpu/cHardwareCPU.h	2008-02-07 04:55:07 UTC (rev 2305)
@@ -230,7 +230,7 @@
   static cString GetDefaultInstFilename() { return "instset-classic.cfg"; }
 
   void Reset();
-  void SingleProcess(cAvidaContext& ctx);
+  bool SingleProcess(cAvidaContext& ctx, bool speculative = false);
   void ProcessBonusInst(cAvidaContext& ctx, const cInstruction& inst);
 
   

Modified: development/source/cpu/cHardwareExperimental.cc
===================================================================
--- development/source/cpu/cHardwareExperimental.cc	2008-02-07 01:19:26 UTC (rev 2304)
+++ development/source/cpu/cHardwareExperimental.cc	2008-02-07 04:55:07 UTC (rev 2305)
@@ -121,7 +121,7 @@
     tInstLibEntry<tMethod>("sub", &cHardwareExperimental::Inst_Sub, nInstFlag::DEFAULT, "Subtract CX from BX and place the result in ?BX?"),
     tInstLibEntry<tMethod>("nand", &cHardwareExperimental::Inst_Nand, nInstFlag::DEFAULT, "Nand BX by CX and place the result in ?BX?"),
     
-    tInstLibEntry<tMethod>("IO", &cHardwareExperimental::Inst_TaskIO, nInstFlag::DEFAULT, "Output ?BX?, and input new number back into ?BX?"),
+    tInstLibEntry<tMethod>("IO", &cHardwareExperimental::Inst_TaskIO, (nInstFlag::DEFAULT | nInstFlag::STALL), "Output ?BX?, and input new number back into ?BX?"),
     
     tInstLibEntry<tMethod>("mult", &cHardwareExperimental::Inst_Mult, 0, "Multiple BX by CX and place the result in ?BX?"),
     tInstLibEntry<tMethod>("div", &cHardwareExperimental::Inst_Div, 0, "Divide BX by CX and place the result in ?BX?"),
@@ -142,14 +142,14 @@
     
     // Replication Instructions
     tInstLibEntry<tMethod>("h-alloc", &cHardwareExperimental::Inst_HeadAlloc, nInstFlag::DEFAULT, "Allocate maximum allowed space"),
-    tInstLibEntry<tMethod>("h-divide", &cHardwareExperimental::Inst_HeadDivide, nInstFlag::DEFAULT, "Divide code between read and write heads."),
-    tInstLibEntry<tMethod>("h-copy", &cHardwareExperimental::Inst_HeadCopy, nInstFlag::DEFAULT, "Copy from read-head to write-head; advance both"),
+    tInstLibEntry<tMethod>("h-divide", &cHardwareExperimental::Inst_HeadDivide, (nInstFlag::DEFAULT | nInstFlag::STALL), "Divide code between read and write heads."),
+    tInstLibEntry<tMethod>("h-copy", &cHardwareExperimental::Inst_HeadCopy, (nInstFlag::DEFAULT | nInstFlag::STALL), "Copy from read-head to write-head; advance both"),
     tInstLibEntry<tMethod>("if-label", &cHardwareExperimental::Inst_IfLabel, nInstFlag::DEFAULT, "Execute next if we copied complement of attached label"),
 
-    tInstLibEntry<tMethod>("h-read", &cHardwareExperimental::Inst_HeadRead, 0, "Read from the read-head, place into ?BX?, advance read-head"),
+    tInstLibEntry<tMethod>("h-read", &cHardwareExperimental::Inst_HeadRead, nInstFlag::STALL, "Read from the read-head, place into ?BX?, advance read-head"),
     tInstLibEntry<tMethod>("h-write", &cHardwareExperimental::Inst_HeadWrite, 0, "Write from ?BX? to the write head, advance write-head"),
     
-    tInstLibEntry<tMethod>("repro", &cHardwareExperimental::Inst_Repro, 0, "Instantly reproduces the organism"),
+    tInstLibEntry<tMethod>("repro", &cHardwareExperimental::Inst_Repro, nInstFlag::STALL, "Instantly reproduces the organism"),
 
     
     // Goto Variants
@@ -202,6 +202,10 @@
   /* FIXME:  reorganize storage of m_functions.  -- kgn */
   m_functions = s_inst_slib->GetFunctions();
   /**/
+  
+  m_supports_speculative = true;
+  m_spec_die = false;
+
   m_memory = in_organism->GetGenome();  // Initialize memory...
   Reset();                            // Setup the rest of the hardware...
 }
@@ -295,11 +299,19 @@
 // This function processes the very next command in the genome, and is made
 // to be as optimized as possible.  This is the heart of avida.
 
-void cHardwareExperimental::SingleProcess(cAvidaContext& ctx)
+bool cHardwareExperimental::SingleProcess(cAvidaContext& ctx, bool speculative)
 {
+  assert(!speculative || (speculative && m_world->GetConfig().THREAD_SLICING_METHOD.Get() != 1));
+  
   // Mark this organism as running...
   organism->SetRunning(true);
   
+  if (!speculative && m_spec_die) {
+    organism->Die();
+    organism->SetRunning(false);
+    return false;
+  }
+  
   cPhenotype& phenotype = organism->GetPhenotype();
 
   // First instruction - check whether we should be starting at a promoter, when enabled.
@@ -312,12 +324,11 @@
   
   // If we have threads turned on and we executed each thread in a single
   // timestep, adjust the number of instructions executed accordingly.
-  const int num_inst_exec = (m_world->GetConfig().THREAD_SLICING_METHOD.Get() == 1) ?
-num_threads : 1;
+  const int num_inst_exec = (m_world->GetConfig().THREAD_SLICING_METHOD.Get() == 1) ? num_threads : 1;
   
   for (int i = 0; i < num_inst_exec; i++) {
     // Setup the hardware for the next instruction to be executed.
-    m_cur_thread++;
+    int last_thread = m_cur_thread++;
     if (m_cur_thread >= num_threads) m_cur_thread = 0;
     
     m_advance_ip = true;
@@ -335,6 +346,15 @@
     // Find the instruction to be executed
     const cInstruction& cur_inst = IP().GetInst();
     
+    if (speculative && (m_spec_die || m_inst_set->ShouldStall(cur_inst))) {
+      // Speculative instruction reject, flush and return
+      m_cur_thread = last_thread;
+      phenotype.DecCPUCyclesUsed();
+      if (!m_world->GetConfig().NO_CPU_CYCLE_TIME.Get()) phenotype.IncTimeUsed(-1);
+      organism->SetRunning(false);
+      return false;
+    }
+    
     // Test if costs have been paid and it is okay to execute this now...
     bool exec = true;
     if (m_has_any_costs) exec = SingleProcess_PayCosts(ctx, cur_inst);
@@ -394,13 +414,16 @@
   
   // Kill creatures who have reached their max num of instructions executed
   const int max_executed = organism->GetMaxExecuted();
-  if ((max_executed > 0 && phenotype.GetTimeUsed() >= max_executed)
-      || phenotype.GetToDie() == true) {
-    organism->Die();
+  if ((max_executed > 0 && phenotype.GetTimeUsed() >= max_executed) || phenotype.GetToDie() == true) {
+    if (speculative) m_spec_die = true;
+    else organism->Die();
   }
+  if (!speculative && phenotype.GetToDelete()) m_spec_die = true;
   
   organism->SetRunning(false);
   CheckImplicitRepro(ctx);
+        
+  return !m_spec_die;
 }
 
 // This method will handle the actuall execution of an instruction
@@ -1240,20 +1263,17 @@
   
   const int head_id = FindModifiedHead(nHardware::HEAD_READ);
   GetHead(head_id).Adjust();
-//  sCPUStats & cpu_stats = organism->CPUStats();
   
   // Mutations only occur on the read, for the moment.
   int read_inst = 0;
   if (organism->TestCopyMut(ctx)) {
     read_inst = m_inst_set->GetRandomInst(ctx).GetOp();
-//    cpu_stats.mut_stats.copy_mut_count++;  // @CAO, hope this is good!
   } else {
     read_inst = GetHead(head_id).GetInst().GetOp();
   }
   GetRegister(dst) = read_inst;
   ReadInst(read_inst);
   
-//  cpu_stats.mut_stats.copies_exec++;  // @CAO, this too..
   GetHead(head_id).Advance();
   return true;
 }

Modified: development/source/cpu/cHardwareExperimental.h
===================================================================
--- development/source/cpu/cHardwareExperimental.h	2008-02-07 01:19:26 UTC (rev 2304)
+++ development/source/cpu/cHardwareExperimental.h	2008-02-07 04:55:07 UTC (rev 2305)
@@ -145,6 +145,7 @@
   bool m_mal_active;         // Has an allocate occured since last divide?
   bool m_advance_ip;         // Should the IP advance after this instruction?
   bool m_executedmatchstrings;	// Have we already executed the match strings instruction?
+  bool m_spec_die;
 
 
   
@@ -233,7 +234,7 @@
   static cString GetDefaultInstFilename() { return "instset-experimental.cfg"; }
 
   void Reset();
-  void SingleProcess(cAvidaContext& ctx);
+  bool SingleProcess(cAvidaContext& ctx, bool speculative = false);
   void ProcessBonusInst(cAvidaContext& ctx, const cInstruction& inst);
 
   

Modified: development/source/cpu/cHardwareGX.cc
===================================================================
--- development/source/cpu/cHardwareGX.cc	2008-02-07 01:19:26 UTC (rev 2304)
+++ development/source/cpu/cHardwareGX.cc	2008-02-07 04:55:07 UTC (rev 2305)
@@ -412,7 +412,7 @@
 /*! In cHardwareGX, SingleProcess is something of a misnomer.  Each time this method
   is called, each cProgramid executes a single instruction.
   */
-void cHardwareGX::SingleProcess(cAvidaContext& ctx)
+bool cHardwareGX::SingleProcess(cAvidaContext& ctx, bool speculative)
 {
   cPhenotype& phenotype = organism->GetPhenotype();
 
@@ -510,6 +510,8 @@
   
   organism->SetRunning(false);
   CheckImplicitRepro(ctx);
+  
+  return true;
 }
 
 //  const int num_threads = GetNumThreads();

Modified: development/source/cpu/cHardwareGX.h
===================================================================
--- development/source/cpu/cHardwareGX.h	2008-02-07 01:19:26 UTC (rev 2304)
+++ development/source/cpu/cHardwareGX.h	2008-02-07 04:55:07 UTC (rev 2305)
@@ -310,7 +310,7 @@
   static cString GetDefaultInstFilename() { return "instset-gx.cfg"; }
 
   void Reset();
-  void SingleProcess(cAvidaContext& ctx);
+  bool SingleProcess(cAvidaContext& ctx, bool speculative = false);
   void ProcessBonusInst(cAvidaContext& ctx, const cInstruction& inst);
 
   

Modified: development/source/cpu/cHardwareSMT.cc
===================================================================
--- development/source/cpu/cHardwareSMT.cc	2008-02-07 01:19:26 UTC (rev 2304)
+++ development/source/cpu/cHardwareSMT.cc	2008-02-07 04:55:07 UTC (rev 2305)
@@ -188,7 +188,7 @@
 
 // This function processes the very next command in the genome, and is made
 // to be as optimized as possible.  This is the heart of avida.
-void cHardwareSMT::SingleProcess(cAvidaContext& ctx)
+bool cHardwareSMT::SingleProcess(cAvidaContext& ctx, bool speculative)
 {
   // Mark this organism as running...
   organism->SetRunning(true);
@@ -246,6 +246,8 @@
   
   organism->SetRunning(false);
   CheckImplicitRepro(ctx);
+  
+  return true;
 }
 
 // This method will handle the actual execution of an instruction

Modified: development/source/cpu/cHardwareSMT.h
===================================================================
--- development/source/cpu/cHardwareSMT.h	2008-02-07 01:19:26 UTC (rev 2304)
+++ development/source/cpu/cHardwareSMT.h	2008-02-07 04:55:07 UTC (rev 2305)
@@ -202,7 +202,7 @@
   static cString GetDefaultInstFilename() { return "instset-smt.cfg"; }
 	
   void Reset();
-  void SingleProcess(cAvidaContext& ctx);
+  bool SingleProcess(cAvidaContext& ctx, bool speculative = false);
   void ProcessBonusInst(cAvidaContext& ctx, const cInstruction& inst);
 	
   // --------  Helper methods  --------

Modified: development/source/cpu/cHardwareTransSMT.cc
===================================================================
--- development/source/cpu/cHardwareTransSMT.cc	2008-02-07 01:19:26 UTC (rev 2304)
+++ development/source/cpu/cHardwareTransSMT.cc	2008-02-07 04:55:07 UTC (rev 2305)
@@ -186,7 +186,7 @@
 
 // This function processes the very next command in the genome, and is made
 // to be as optimized as possible.  This is the heart of avida.
-void cHardwareTransSMT::SingleProcess(cAvidaContext& ctx)
+bool cHardwareTransSMT::SingleProcess(cAvidaContext& ctx, bool speculative)
 {
   // Mark this organism as running...
   organism->SetRunning(true);
@@ -243,6 +243,8 @@
   
   organism->SetRunning(false);
   CheckImplicitRepro(ctx);
+  
+  return true;
 }
 
 // This method will handle the actual execution of an instruction

Modified: development/source/cpu/cHardwareTransSMT.h
===================================================================
--- development/source/cpu/cHardwareTransSMT.h	2008-02-07 01:19:26 UTC (rev 2304)
+++ development/source/cpu/cHardwareTransSMT.h	2008-02-07 04:55:07 UTC (rev 2305)
@@ -201,7 +201,7 @@
   static cString GetDefaultInstFilename() { return "instset-transsmt.cfg"; }
 	
   void Reset();
-  void SingleProcess(cAvidaContext& ctx);
+  bool SingleProcess(cAvidaContext& ctx, bool speculative = false);
   void ProcessBonusInst(cAvidaContext& ctx, const cInstruction& inst);
 	
   // --------  Helper methods  --------

Modified: development/source/cpu/cInstLibEntry.h
===================================================================
--- development/source/cpu/cInstLibEntry.h	2008-02-07 01:19:26 UTC (rev 2304)
+++ development/source/cpu/cInstLibEntry.h	2008-02-07 04:55:07 UTC (rev 2305)
@@ -31,6 +31,7 @@
   const unsigned int NOP = 0x2;
   const unsigned int LABEL = 0x4;
   const unsigned int PROMOTER = 0x8;
+  const unsigned int STALL = 0x10;
 }
 
 class cInstLibEntry
@@ -48,11 +49,12 @@
   const cString& GetName() const { return m_name; }
   const cString& GetDescription() const { return m_desc; }
   
-  unsigned int GetFlags() const { return m_flags; }
-  bool IsDefault() const { return (m_flags & nInstFlag::DEFAULT); }
-  bool IsNop() const { return (m_flags & nInstFlag::NOP); }
-  bool IsLabel() const { return (m_flags & nInstFlag::LABEL); }
-  bool IsPromoter() const { return (m_flags & nInstFlag::PROMOTER); }
+  inline unsigned int GetFlags() const { return m_flags; }
+  inline bool IsDefault() const { return (m_flags & nInstFlag::DEFAULT); }
+  inline bool IsNop() const { return (m_flags & nInstFlag::NOP); }
+  inline bool IsLabel() const { return (m_flags & nInstFlag::LABEL); }
+  inline bool IsPromoter() const { return (m_flags & nInstFlag::PROMOTER); }
+  inline bool ShouldStall() const { return (m_flags & nInstFlag::STALL); }
 };
 
 #endif

Modified: development/source/cpu/cInstSet.h
===================================================================
--- development/source/cpu/cInstSet.h	2008-02-07 01:19:26 UTC (rev 2304)
+++ development/source/cpu/cInstSet.h	2008-02-07 04:55:07 UTC (rev 2305)
@@ -132,6 +132,7 @@
   int IsNop(const cInstruction& inst) const { return (inst.GetOp() < m_lib_nopmod_map.GetSize()); }
   bool IsLabel(const cInstruction& inst) const { return m_inst_lib->Get(GetLibFunctionIndex(inst)).IsLabel(); }
   bool IsPromoter(const cInstruction& inst) const { return m_inst_lib->Get(GetLibFunctionIndex(inst)).IsPromoter(); }
+  bool ShouldStall(const cInstruction& inst) const { return m_inst_lib->Get(GetLibFunctionIndex(inst)).ShouldStall(); }
   
   unsigned int GetFlags(const cInstruction& inst) const { return m_inst_lib->Get(GetLibFunctionIndex(inst)).GetFlags(); }
 

Modified: development/source/cpu/cTestCPUInterface.cc
===================================================================
--- development/source/cpu/cTestCPUInterface.cc	2008-02-07 01:19:26 UTC (rev 2304)
+++ development/source/cpu/cTestCPUInterface.cc	2008-02-07 04:55:07 UTC (rev 2305)
@@ -123,3 +123,4 @@
 {
   return false;
 }
+

Modified: development/source/cpu/cTestCPUInterface.h
===================================================================
--- development/source/cpu/cTestCPUInterface.h	2008-02-07 01:19:26 UTC (rev 2304)
+++ development/source/cpu/cTestCPUInterface.h	2008-02-07 04:55:07 UTC (rev 2305)
@@ -75,6 +75,7 @@
   bool TestOnDivide() { return false; }
   int GetFacing() { return 0; }
   bool SendMessage(cOrgMessage& msg) { return false; }
+  
 };
 
 

Modified: development/source/drivers/cDefaultRunDriver.cc
===================================================================
--- development/source/drivers/cDefaultRunDriver.cc	2008-02-07 01:19:26 UTC (rev 2304)
+++ development/source/drivers/cDefaultRunDriver.cc	2008-02-07 04:55:07 UTC (rev 2305)
@@ -123,8 +123,10 @@
       //  << "Energy: " << setw(9) << setprecision(7) << stats.GetAveEnergy() << "  "
 //        << "Merit: " << setw(9) << setprecision(7) << stats.GetAveMerit() << "  "
         << "Orgs: " << setw(6) << population.GetNumOrganisms() << "  "
-        << "Thrd: " << setw(6) << stats.GetNumThreads() << "  "
-        << "Para: " << stats.GetNumParasites()
+//        << "Spec: " << setw(6) << setprecision(4) << stats.GetAveSpeculative() << "  "
+//        << "SWst: " << setw(6) << setprecision(4) << (((double)stats.GetSpeculativeWaste() / (double)UD_size) * 100.0) << "%"
+//        << "Thrd: " << setw(6) << stats.GetNumThreads() << "  "
+//        << "Para: " << stats.GetNumParasites()
         << endl;
     }
     

Modified: development/source/main/cOrgInterface.h
===================================================================
--- development/source/main/cOrgInterface.h	2008-02-07 01:19:26 UTC (rev 2304)
+++ development/source/main/cOrgInterface.h	2008-02-07 04:55:07 UTC (rev 2305)
@@ -84,6 +84,7 @@
   virtual bool UpdateMerit(double new_merit) = 0;
   virtual bool TestOnDivide() = 0;
   virtual bool SendMessage(cOrgMessage& msg) = 0;
+  
 };
 
 #endif

Modified: development/source/main/cPhenotype.h
===================================================================
--- development/source/main/cPhenotype.h	2008-02-07 01:19:26 UTC (rev 2304)
+++ development/source/main/cPhenotype.h	2008-02-07 04:55:07 UTC (rev 2305)
@@ -432,6 +432,7 @@
 
   void IncAge()      { assert(initialized == true); age++; }
   void IncCPUCyclesUsed() { assert(initialized == true); cpu_cycles_used++; trial_cpu_cycles_used++; }
+  void DecCPUCyclesUsed() { assert(initialized == true); cpu_cycles_used--; trial_cpu_cycles_used--; }
   void IncTimeUsed(int i=1) { assert(initialized == true); time_used+=i; trial_time_used+=i; }
   void IncErrors()   { assert(initialized == true); cur_num_errors++; }
   void IncDonates()   { assert(initialized == true); cur_num_donates++; }

Modified: development/source/main/cPopulation.cc
===================================================================
--- development/source/main/cPopulation.cc	2008-02-07 01:19:26 UTC (rev 2304)
+++ development/source/main/cPopulation.cc	2008-02-07 04:55:07 UTC (rev 2305)
@@ -2143,7 +2143,31 @@
   cPopulationCell& cell = GetCell(cell_id);
   assert(cell.IsOccupied()); // Unoccupied cell getting processor time!
   cOrganism* cur_org = cell.GetOrganism();
-  cell.GetHardware()->SingleProcess(ctx);
+
+  cHardwareBase* hw = cell.GetHardware();
+  
+  if (hw->SupportsSpeculative()) {
+    if (cell.GetSpeculativeState()) {
+      // We have already executed this instruction, just decrement the counter
+      cell.DecSpeculative();
+    } else {
+      // Execute the actual instruction
+      if (hw->SingleProcess(ctx)) {      
+        // Speculatively execute additional instructions
+        int spec_count = 0;
+        while (spec_count < 32) {
+          if (hw->SingleProcess(ctx, true)) spec_count++;
+          else break;
+        }
+        cell.SetSpeculativeState(spec_count);
+        m_world->GetStats().AddSpeculative(spec_count);
+      }
+    }
+  } else {
+    // Just execute the instruction
+    hw->SingleProcess(ctx);    
+  }
+  
   if (cur_org->GetPhenotype().GetToDelete() == true) {
     delete cur_org;
   }

Modified: development/source/main/cPopulationCell.cc
===================================================================
--- development/source/main/cPopulationCell.cc	2008-02-07 01:19:26 UTC (rev 2304)
+++ development/source/main/cPopulationCell.cc	2008-02-07 04:55:07 UTC (rev 2305)
@@ -44,8 +44,8 @@
   , m_inputs(in_cell.m_inputs)
   , m_cell_id(in_cell.m_cell_id)
   , m_deme_id(in_cell.m_deme_id)
-  , m_organism_count(in_cell.m_organism_count)
   , m_cell_data(in_cell.m_cell_data)
+  , m_spec_state(in_cell.m_spec_state)
 {
   // Copy the mutation rates into a new structure
   m_mut_rates = new cMutationRates(*in_cell.m_mut_rates);
@@ -64,8 +64,8 @@
   m_inputs = in_cell.m_inputs;
   m_cell_id = in_cell.m_cell_id;
   m_deme_id = in_cell.m_deme_id;
-  m_organism_count = in_cell.m_organism_count;
   m_cell_data = in_cell.m_cell_data;
+  m_spec_state = in_cell.m_spec_state;
 
   // Copy the mutation rates, constructing the structure as necessary
   if (m_mut_rates == NULL)
@@ -87,6 +87,7 @@
   m_y = y;
   m_deme_id = -1;
   m_cell_data = 0;
+  m_spec_state = 0;
   
   if (m_mut_rates == NULL)
     m_mut_rates = new cMutationRates(in_rates);
@@ -172,7 +173,8 @@
   // Adjust this cell's attributes to account for the new organism.
   m_organism = new_org;
   m_hardware = &new_org->GetHardware();
-  m_organism_count++;
+  m_world->GetStats().AddSpeculativeWaste(m_spec_state);
+  m_spec_state = 0;
 
   // Adjust the organism's attributes to match this cell.
   m_organism->GetOrgInterface().SetCellID(m_cell_id);

Modified: development/source/main/cPopulationCell.h
===================================================================
--- development/source/main/cPopulationCell.h	2008-02-07 01:19:26 UTC (rev 2304)
+++ development/source/main/cPopulationCell.h	2008-02-07 04:55:07 UTC (rev 2305)
@@ -50,16 +50,18 @@
 
 private:
   cWorld* m_world;
+  
   cOrganism* m_organism;                    // The occupent of this cell.
   cHardwareBase* m_hardware;
+  
   tList<cPopulationCell> m_connections;  // A list of neighboring cells.
   cMutationRates* m_mut_rates;           // Mutation rates at this cell.
   tArray<int> m_inputs;                 // Environmental Inputs...
 
   int m_cell_id;           // Unique id for position of cell in population.
   int m_deme_id;           // ID of the deme that this cell is part of.
-  int m_organism_count;    // Total number of orgs to ever inhabit this cell.
   int m_cell_data;         // "data" that is local to the cell and can be retrieaved by the org.
+  int m_spec_state;
 
   // location in population
   int m_x; //!< The x-coordinate of the position of this cell in the environment.
@@ -71,7 +73,7 @@
 
   
 public:
-  cPopulationCell() : m_world(NULL), m_organism(NULL), m_hardware(NULL), m_mut_rates(NULL), m_organism_count(0) { ; }
+  cPopulationCell() : m_world(NULL), m_organism(NULL), m_hardware(NULL), m_mut_rates(NULL) { ; }
   cPopulationCell(const cPopulationCell& in_cell);
   ~cPopulationCell() { delete m_mut_rates; }
 
@@ -98,9 +100,12 @@
 
   inline int GetID() const { return m_cell_id; }
   inline int GetDemeID() const { return m_deme_id; }
-  inline int GetOrganismCount() const { return m_organism_count; }
   inline int GetCellData() const { return m_cell_data; }
   void SetCellData(const int data) { m_cell_data = data; }
+  
+  inline int GetSpeculativeState() const { return m_spec_state; }
+  inline void SetSpeculativeState(int count) { m_spec_state = count; }
+  inline void DecSpeculative() { m_spec_state--; }
 
   inline bool IsOccupied() const { return m_organism != NULL; }
 

Modified: development/source/main/cPopulationInterface.cc
===================================================================
--- development/source/main/cPopulationInterface.cc	2008-02-07 01:19:26 UTC (rev 2304)
+++ development/source/main/cPopulationInterface.cc	2008-02-07 04:55:07 UTC (rev 2305)
@@ -252,3 +252,4 @@
   recvr->ReceiveMessage(msg);
   return true;
 }
+

Modified: development/source/main/cPopulationInterface.h
===================================================================
--- development/source/main/cPopulationInterface.h	2008-02-07 01:19:26 UTC (rev 2304)
+++ development/source/main/cPopulationInterface.h	2008-02-07 04:55:07 UTC (rev 2305)
@@ -87,6 +87,7 @@
   bool TestOnDivide();
   //! Send a message to the faced organism.
   bool SendMessage(cOrgMessage& msg);
+  
 };
 
 

Modified: development/source/main/cStats.cc
===================================================================
--- development/source/main/cStats.cc	2008-02-07 01:19:26 UTC (rev 2304)
+++ development/source/main/cStats.cc	2008-02-07 04:55:07 UTC (rev 2305)
@@ -120,6 +120,9 @@
   , sense_size(0)
   , avg_competition_fitness(0)
   , num_orgs_replicated(0)
+  , m_spec_total(0)
+  , m_spec_num(0)
+  , m_spec_waste(0)
 {
   const cEnvironment& env = m_world->GetEnvironment();
   const int num_tasks = env.GetNumTasks();
@@ -486,6 +489,9 @@
   num_resamplings = 0;
   num_failedResamplings = 0;
 
+  m_spec_total = 0;
+  m_spec_num = 0;
+  m_spec_waste = 0;
 }
 
 void cStats::RemoveLineage(int id_num, int parent_id, int update_born, double generation_born, int total_CPUs,

Modified: development/source/main/cStats.h
===================================================================
--- development/source/main/cStats.h	2008-02-07 01:19:26 UTC (rev 2304)
+++ development/source/main/cStats.h	2008-02-07 04:55:07 UTC (rev 2305)
@@ -259,6 +259,12 @@
   int num_orgs_replicated;
 
   tArray<int> numAsleep;
+  
+  // Speculative Execution Stats
+  int m_spec_total;
+  int m_spec_num;
+  int m_spec_waste;
+  
 
   cStats(); // @not_implemented
   cStats(const cStats&); // @not_implemented
@@ -495,6 +501,10 @@
   void AddMarketItemSold() { num_sold++; }
   void AddMarketItemUsed() { num_used++; }
   void AddMarketOwnItemUsed() { num_own_used++; }
+  
+  
+  void AddSpeculative(int spec) { m_spec_total += spec; m_spec_num++; }
+  void AddSpeculativeWaste(int waste) { m_spec_waste += waste; }
 
   // Information retrieval section...
 
@@ -591,6 +601,9 @@
   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; }
+
   // this value gets recorded when a creature with the particular
   // fitness value gets born. It will never change to a smaller value,
   // i.e., when the maximum fitness in the population drops, this value will

Modified: development/source/tools/cRandom.h
===================================================================
--- development/source/tools/cRandom.h	2008-02-07 01:19:26 UTC (rev 2304)
+++ development/source/tools/cRandom.h	2008-02-07 04:55:07 UTC (rev 2305)
@@ -36,9 +36,7 @@
 #if USE_tMemTrack
   tMemTrack<cRandom> mt;
 #endif
-// FIXME at kaben : must switch back to protected. 3 Nov 2007.
-public:
-//protected:
+protected:
   // Internal members
   int seed;
   int original_seed;

Added: development/tests/_exp_500u/expected/data/archive/098-aaaad.org
===================================================================
--- development/tests/_exp_500u/expected/data/archive/098-aaaad.org	                        (rev 0)
+++ development/tests/_exp_500u/expected/data/archive/098-aaaad.org	2008-02-07 04:55:07 UTC (rev 2305)
@@ -0,0 +1,132 @@
+# Tue Feb  5 18:36:45 2008
+# Filename........: archive/098-aaaad.org
+# Update Output...: 300
+# Is Viable.......: 1
+# Repro Cycle Size: 0
+# Depth to Viable.: 0
+# Update Created..: 201
+# Genotype ID.....: 613
+# Parent Gen ID...: 292
+# Tree Depth......: 6
+# Parent Distance.: 1
+# 
+# Generation: 0
+# Merit...........: 94.000000
+# Gestation Time..: 370
+# Fitness.........: 0.254054
+# Errors..........: 0
+# Genome Size.....: 98
+# Copied Size.....: 98
+# Executed Size...: 94
+# Offspring.......: SELF
+# 
+# Tasks Performed:
+# not 0 (0.000000)
+# nand 0 (0.000000)
+# and 0 (0.000000)
+# orn 0 (0.000000)
+# or 0 (0.000000)
+# andn 0 (0.000000)
+# nor 0 (0.000000)
+# xor 0 (0.000000)
+# equ 0 (0.000000)
+
+
+h-alloc
+h-search
+nop-D
+nop-A
+mov-head
+nop-C
+add
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+shift-l
+nop-C
+nop-C
+nop-C
+nop-C
+inc
+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
+get-head
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+push
+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
+swap-stk
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+h-search
+h-copy
+if-label
+nop-D
+nop-A
+h-divide
+mov-head
+nop-A
+add
+label
+nop-A
+nop-B

Added: development/tests/_exp_500u/expected/data/archive/098-aaaak.org
===================================================================
--- development/tests/_exp_500u/expected/data/archive/098-aaaak.org	                        (rev 0)
+++ development/tests/_exp_500u/expected/data/archive/098-aaaak.org	2008-02-07 04:55:07 UTC (rev 2305)
@@ -0,0 +1,132 @@
+# Tue Feb  5 18:36:54 2008
+# Filename........: archive/098-aaaak.org
+# Update Output...: 400
+# Is Viable.......: 1
+# Repro Cycle Size: 0
+# Depth to Viable.: 0
+# Update Created..: 274
+# Genotype ID.....: 1876
+# Parent Gen ID...: 1601
+# Tree Depth......: 8
+# Parent Distance.: 3
+# 
+# Generation: 0
+# Merit...........: 91.000000
+# Gestation Time..: 365
+# Fitness.........: 0.249315
+# Errors..........: 0
+# Genome Size.....: 98
+# Copied Size.....: 98
+# Executed Size...: 91
+# Offspring.......: SELF
+# 
+# Tasks Performed:
+# not 0 (0.000000)
+# nand 0 (0.000000)
+# and 0 (0.000000)
+# orn 0 (0.000000)
+# or 0 (0.000000)
+# andn 0 (0.000000)
+# nor 0 (0.000000)
+# xor 0 (0.000000)
+# equ 0 (0.000000)
+
+
+h-alloc
+h-search
+nop-D
+nop-A
+mov-head
+nop-C
+if-less
+nop-C
+nop-C
+nop-C
+pop
+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
+if-less
+nop-C
+nop-C
+pop
+nop-C
+nop-C
+nop-C
+nop-C
+get-head
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+mov-head
+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
+swap-stk
+nop-C
+nop-C
+dec
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+inc
+nop-C
+nop-C
+h-search
+h-copy
+if-label
+nop-D
+nop-A
+h-divide
+mov-head
+pop
+add
+label
+nop-A
+nop-B

Added: development/tests/_exp_500u/expected/data/archive/100-aaaaa.org
===================================================================
--- development/tests/_exp_500u/expected/data/archive/100-aaaaa.org	                        (rev 0)
+++ development/tests/_exp_500u/expected/data/archive/100-aaaaa.org	2008-02-07 04:55:07 UTC (rev 2305)
@@ -0,0 +1,134 @@
+# Tue Feb  5 18:36:41 2008
+# Filename........: archive/100-aaaaa.org
+# Update Output...: 150
+# Is Viable.......: 1
+# Repro Cycle Size: 0
+# Depth to Viable.: 0
+# Update Created..: -1
+# Genotype ID.....: 1
+# Parent Gen ID...: -1
+# Tree Depth......: 0
+# Parent Distance.: -1
+# 
+# Generation: 0
+# Merit...........: 96.000000
+# Gestation Time..: 383
+# Fitness.........: 0.250653
+# Errors..........: 0
+# Genome Size.....: 100
+# Copied Size.....: 100
+# Executed Size...: 96
+# Offspring.......: SELF
+# 
+# Tasks Performed:
+# not 0 (0.000000)
+# nand 0 (0.000000)
+# and 0 (0.000000)
+# orn 0 (0.000000)
+# or 0 (0.000000)
+# andn 0 (0.000000)
+# nor 0 (0.000000)
+# xor 0 (0.000000)
+# equ 0 (0.000000)
+
+
+h-alloc
+h-search
+nop-D
+nop-A
+mov-head
+nop-C
+add
+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
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+h-search
+h-copy
+if-label
+nop-D
+nop-A
+h-divide
+mov-head
+nop-A
+add
+label
+nop-A
+nop-B

Added: development/tests/_exp_500u/expected/data/archive/100-aaaba.org
===================================================================
--- development/tests/_exp_500u/expected/data/archive/100-aaaba.org	                        (rev 0)
+++ development/tests/_exp_500u/expected/data/archive/100-aaaba.org	2008-02-07 04:55:07 UTC (rev 2305)
@@ -0,0 +1,134 @@
+# Tue Feb  5 18:36:43 2008
+# Filename........: archive/100-aaaba.org
+# Update Output...: 250
+# Is Viable.......: 1
+# Repro Cycle Size: 0
+# Depth to Viable.: 0
+# Update Created..: 151
+# Genotype ID.....: 195
+# Parent Gen ID...: 93
+# Tree Depth......: 5
+# Parent Distance.: 2
+# 
+# Generation: 0
+# Merit...........: 96.000000
+# Gestation Time..: 374
+# Fitness.........: 0.256684
+# Errors..........: 0
+# Genome Size.....: 100
+# Copied Size.....: 100
+# Executed Size...: 96
+# Offspring.......: SELF
+# 
+# Tasks Performed:
+# not 0 (0.000000)
+# nand 0 (0.000000)
+# and 0 (0.000000)
+# orn 0 (0.000000)
+# or 0 (0.000000)
+# andn 0 (0.000000)
+# nor 0 (0.000000)
+# xor 0 (0.000000)
+# equ 0 (0.000000)
+
+
+h-alloc
+h-search
+nop-D
+nop-A
+mov-head
+nop-C
+add
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+shift-l
+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
+nop-C
+dec
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+get-head
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-A
+nop-C
+nop-C
+nop-C
+h-copy
+nop-C
+nop-C
+nop-C
+IO
+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
+h-copy
+if-label
+nop-D
+nop-A
+h-divide
+mov-head
+nop-A
+add
+label
+nop-A
+nop-B

Added: development/tests/_exp_500u/expected/data/archive/101-aaaab.org
===================================================================
--- development/tests/_exp_500u/expected/data/archive/101-aaaab.org	                        (rev 0)
+++ development/tests/_exp_500u/expected/data/archive/101-aaaab.org	2008-02-07 04:55:07 UTC (rev 2305)
@@ -0,0 +1,135 @@
+# Tue Feb  5 18:36:42 2008
+# Filename........: archive/101-aaaab.org
+# Update Output...: 200
+# Is Viable.......: 1
+# Repro Cycle Size: 0
+# Depth to Viable.: 0
+# Update Created..: 66
+# Genotype ID.....: 11
+# Parent Gen ID...: 4
+# Tree Depth......: 2
+# Parent Distance.: 1
+# 
+# Generation: 0
+# Merit...........: 97.000000
+# Gestation Time..: 385
+# Fitness.........: 0.251948
+# Errors..........: 0
+# Genome Size.....: 101
+# Copied Size.....: 101
+# Executed Size...: 97
+# Offspring.......: SELF
+# 
+# Tasks Performed:
+# not 0 (0.000000)
+# nand 0 (0.000000)
+# and 0 (0.000000)
+# orn 0 (0.000000)
+# or 0 (0.000000)
+# andn 0 (0.000000)
+# nor 0 (0.000000)
+# xor 0 (0.000000)
+# equ 0 (0.000000)
+
+
+h-alloc
+h-search
+nop-D
+nop-A
+mov-head
+nop-C
+add
+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
+swap
+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-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-B
+nop-C
+h-search
+h-copy
+if-label
+nop-D
+nop-A
+h-divide
+mov-head
+nop-A
+add
+label
+nop-A
+nop-B

Added: development/tests/_exp_500u/expected/data/archive/101-aaabf.org
===================================================================
--- development/tests/_exp_500u/expected/data/archive/101-aaabf.org	                        (rev 0)
+++ development/tests/_exp_500u/expected/data/archive/101-aaabf.org	2008-02-07 04:55:07 UTC (rev 2305)
@@ -0,0 +1,135 @@
+# Tue Feb  5 18:36:48 2008
+# Filename........: archive/101-aaabf.org
+# Update Output...: 350
+# Is Viable.......: 1
+# Repro Cycle Size: 0
+# Depth to Viable.: 0
+# Update Created..: 291
+# Genotype ID.....: 2327
+# Parent Gen ID...: 1692
+# Tree Depth......: 7
+# Parent Distance.: 3
+# 
+# Generation: 0
+# Merit...........: 97.000000
+# Gestation Time..: 375
+# Fitness.........: 0.258667
+# Errors..........: 0
+# Genome Size.....: 101
+# Copied Size.....: 101
+# Executed Size...: 97
+# Offspring.......: SELF
+# 
+# Tasks Performed:
+# not 0 (0.000000)
+# nand 0 (0.000000)
+# and 0 (0.000000)
+# orn 0 (0.000000)
+# or 0 (0.000000)
+# andn 0 (0.000000)
+# nor 0 (0.000000)
+# xor 0 (0.000000)
+# equ 0 (0.000000)
+
+
+h-alloc
+h-search
+nop-D
+nop-A
+mov-head
+nop-C
+add
+nop-C
+nop-C
+nop-C
+get-head
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+shift-r
+shift-l
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nand
+nop-C
+nop-C
+nop-C
+dec
+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-A
+nop-C
+h-copy
+nop-C
+nop-C
+nop-C
+shift-l
+nop-C
+nop-C
+nop-C
+dec
+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
+dec
+h-search
+h-copy
+if-label
+nop-D
+nop-A
+h-divide
+mov-head
+nop-A
+add
+label
+nop-A
+nop-B

Added: development/tests/_exp_500u/expected/data/archive/101-aaafv.org
===================================================================
--- development/tests/_exp_500u/expected/data/archive/101-aaafv.org	                        (rev 0)
+++ development/tests/_exp_500u/expected/data/archive/101-aaafv.org	2008-02-07 04:55:07 UTC (rev 2305)
@@ -0,0 +1,135 @@
+# Tue Feb  5 18:37:12 2008
+# Filename........: archive/101-aaafv.org
+# Update Output...: 500
+# Is Viable.......: 1
+# Repro Cycle Size: 0
+# Depth to Viable.: 0
+# Update Created..: 450
+# Genotype ID.....: 10276
+# Parent Gen ID...: 8461
+# Tree Depth......: 11
+# Parent Distance.: 1
+# 
+# Generation: 0
+# Merit...........: 88.000000
+# Gestation Time..: 361
+# Fitness.........: 0.243767
+# Errors..........: 1
+# Genome Size.....: 101
+# Copied Size.....: 101
+# Executed Size...: 88
+# Offspring.......: SELF
+# 
+# Tasks Performed:
+# not 0 (0.000000)
+# nand 0 (0.000000)
+# and 0 (0.000000)
+# orn 0 (0.000000)
+# or 0 (0.000000)
+# andn 0 (0.000000)
+# nor 0 (0.000000)
+# xor 0 (0.000000)
+# equ 0 (0.000000)
+
+
+h-alloc
+h-search
+nop-D
+nop-A
+mov-head
+nop-C
+add
+nop-C
+nop-C
+nand
+nop-C
+nop-C
+nop-C
+nop-C
+shift-l
+nop-C
+nop-C
+nop-C
+nand
+nop-C
+nop-C
+nop-C
+nop-C
+pop
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+IO
+nop-C
+nop-C
+h-search
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+sub
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+get-head
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-A
+nop-C
+nop-C
+nop-C
+h-copy
+nop-C
+h-divide
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+swap-stk
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-B
+nop-C
+nop-C
+nop-C
+h-search
+h-copy
+if-label
+nop-D
+nop-A
+h-divide
+mov-head
+nop-A
+add
+label
+nop-A
+nop-B

Added: development/tests/_exp_500u/expected/data/archive/103-aaaaf.org
===================================================================
--- development/tests/_exp_500u/expected/data/archive/103-aaaaf.org	                        (rev 0)
+++ development/tests/_exp_500u/expected/data/archive/103-aaaaf.org	2008-02-07 04:55:07 UTC (rev 2305)
@@ -0,0 +1,137 @@
+# Tue Feb  5 18:37:01 2008
+# Filename........: archive/103-aaaaf.org
+# Update Output...: 450
+# Is Viable.......: 1
+# Repro Cycle Size: 0
+# Depth to Viable.: 0
+# Update Created..: 381
+# Genotype ID.....: 5916
+# Parent Gen ID...: 5189
+# Tree Depth......: 12
+# Parent Distance.: 4
+# 
+# Generation: 0
+# Merit...........: 92.000000
+# Gestation Time..: 376
+# Fitness.........: 0.244681
+# Errors..........: 0
+# Genome Size.....: 103
+# Copied Size.....: 103
+# Executed Size...: 92
+# Offspring.......: SELF
+# 
+# Tasks Performed:
+# not 0 (0.000000)
+# nand 0 (0.000000)
+# and 0 (0.000000)
+# orn 0 (0.000000)
+# or 0 (0.000000)
+# andn 0 (0.000000)
+# nor 0 (0.000000)
+# xor 0 (0.000000)
+# equ 0 (0.000000)
+
+
+h-alloc
+h-search
+nop-D
+nop-A
+mov-head
+nop-C
+add
+nop-C
+nop-C
+nop-C
+if-n-equ
+nop-C
+IO
+shift-l
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+if-label
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+h-divide
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+if-less
+nop-C
+nand
+nand
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+if-label
+nop-C
+if-label
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+IO
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-D
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-C
+nop-D
+nop-C
+nop-B
+nop-C
+inc
+nop-C
+swap
+nop-C
+nop-C
+nop-C
+h-search
+h-copy
+if-label
+nop-D
+nop-A
+h-divide
+mov-head
+nop-A
+dec
+label
+nop-A
+nop-B

Added: development/tests/_exp_500u/expected/data/average.dat
===================================================================
--- development/tests/_exp_500u/expected/data/average.dat	                        (rev 0)
+++ development/tests/_exp_500u/expected/data/average.dat	2008-02-07 04:55:07 UTC (rev 2305)
@@ -0,0 +1,70 @@
+# Avida Average Data
+# Tue Feb  5 18:36:41 2008
+#  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 96.000000 383.000000 0.000000 0.000000 100.000000 100.000000 96.000000 1.000000 1.000000 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000 
+10 96 383 0 0 100 100 96 1 0 0 0 0 0 0 0 
+20 96 383 0.250653 0 100 100 96 2 0 0 0 1 0.762496 0 0 
+30 96 383 0.250653 0 100 100 96 2 0 0 0.25 2 0.865887 0 0 
+40 96 383 0.250653 0 100.143 100 96 1.75 0 0 0.428571 2.85714 1.34223 0 0 
+50 96 383 0.250653 0 100.125 100 96 2 0.125 0.125 0.375 3.125 2.14822 0 0 
+60 96.1667 383.667 0.250652 0 100.167 100.083 96.1667 2 0 0 0.5 3.75 1.62047 0 0 
+70 96.1 383.3 0.250718 0 100.15 100.1 96.1 2 0 0 0.6 4.7 1.53246 0 0 
+80 95.5882 382.294 0.250013 0 100.118 100.088 95.5882 2 0 0 0.764706 5.79412 2.22574 0 0 
+90 95.1702 381.468 0.249444 0 100.085 100.106 95.1702 2.04348 0.191489 0.106383 0.93617 6.53191 2.57097 0 0 
+100 95.4386 381.614 0.250067 0 100.088 100.105 95.4386 1.9 0.0175439 0 1.01754 6.92982 2.39452 0 0 
+110 95.2025 380.924 0.249895 0 100.114 100.076 95.2025 1.64583 0 0 1.3038 7.91139 2.19579 0 0 
+120 94.8824 380.402 0.249388 0 100.088 100.059 94.8824 1.56923 0.0196078 0 1.55882 8.85294 2.26522 0 0 
+130 94.907 380.078 0.249664 0 100.062 100.062 94.907 1.6125 0.0852713 0.0620155 1.82946 9.67442 2.5118 0 0 
+140 94.6577 379.564 0.249338 0 100.067 100.04 94.6577 1.56842 0.0805369 0.0201342 1.93289 10.2282 2.66166 0 0 
+150 94.5085 379.119 0.249234 0 100.136 100.045 94.5085 1.42742 0.039548 0.00564972 2.19209 10.904 2.62774 0 0 
+160 93.9213 378.727 0.247924 0 100.255 100.097 93.9213 1.4026 0.00462963 0.00462963 2.44907 11.8241 2.66467 0 0 
+170 93.2656 377.41 0.246805 0 100.484 100.023 93.2812 1.39891 0.0625 0.0351562 2.79688 12.7656 2.80652 0 0 
+180 92.481 375.595 0.245603 0 100.464 99.5156 92.4948 1.29596 0.0761246 0.0242215 3.08997 13.526 3.08107 0 0 
+190 92.1468 375.434 0.244923 0 100.535 99.4954 92.1774 1.308 0.0703364 0.030581 3.4159 14.1957 2.9181 0 0 
+200 92.1979 375.714 0.244824 0 100.738 99.7326 92.2433 1.30769 0.040107 0.0213904 3.60695 14.9332 2.8577 0 0 
+210 92.0442 377.084 0.243637 0 101.258 99.8326 92.1395 1.31902 0.0162791 0.00232558 3.9 15.8372 2.6022 0 0 
+220 91.8557 376.967 0.243094 0 101.631 99.6515 91.9567 1.33978 0.0350515 0.0103093 4.22268 16.6948 2.70913 0 0 
+230 91.9216 377.25 0.243081 0 101.817 99.7481 92.0373 1.33666 0.0559701 0.0186567 4.55224 17.5187 2.83846 0 0 
+240 92.1672 377.633 0.243397 0 102.316 100.238 92.2669 1.33634 0.0523649 0.0287162 4.81081 18.2162 2.78612 0 0 
+250 93.0746 381.292 0.243937 0 103.405 101.253 93.5099 1.3246 0.042618 0.0167428 5.17199 18.9985 2.58761 0 0 
+260 93.9764 383.203 0.245159 0 103.444 101.672 94.2708 1.34831 0.0444444 0.0152778 5.45694 19.8319 2.43358 0 0 
+270 94.3617 384.598 0.245485 0 104.263 102.173 94.7589 1.35395 0.0406091 0.0114213 5.8033 20.6485 2.52448 0 0 
+280 94.724 384.562 0.24632 0 104.263 102.381 94.9827 1.36809 0.0427252 0.017321 6.05196 21.4838 2.51778 0 0 
+290 94.8791 385.743 0.246045 0 104.795 102.73 95.1809 1.31354 0.0494217 0.022082 6.33754 22.2734 2.47606 0 0 
+300 94.1515 383.897 0.245101 0 104.912 102.431 94.434 1.3303 0.0557185 0.0244379 6.64027 23.0362 2.28213 0 0 
+310 94.6858 386.163 0.245184 0 105.282 102.947 95.0511 1.32246 0.0484018 0.0173516 6.90228 23.7909 2.15777 0 0 
+320 94.8269 387.062 0.245249 0 105.544 103.178 95.318 1.31208 0.0323956 0.0136402 7.13811 24.5908 2.18371 0 0 
+330 94.8831 387.798 0.245001 0 105.867 103.337 95.4834 1.28921 0.0473934 0.0110585 7.45024 25.4352 2.39559 0 0 
+340 94.7351 387.356 0.244969 0 106.374 103.517 95.403 1.32195 0.0560886 0.0228782 7.72399 26.2214 2.47925 0 0 
+350 94.874 387.683 0.245166 0 106.431 103.658 95.5262 1.31165 0.0426997 0.0227273 7.99931 26.9821 2.26799 0 0 
+360 95.15 389.86 0.244871 0 107.093 104.149 96.0659 1.29915 0.0691455 0.0228311 8.3379 27.758 2.19826 0 0 
+370 95.4257 391.343 0.244879 0 107.609 104.642 96.4269 1.28391 0.0374693 0.014742 8.60504 28.5283 2.13647 0 0 
+380 95.2612 390.35 0.245156 0 107.993 104.734 96.2491 1.28277 0.0568312 0.0235362 8.92365 29.3726 2.15959 0 0 
+390 95.5775 391.764 0.245293 0 108.283 104.917 96.6246 1.27223 0.0455038 0.0167931 9.24215 30.1371 2.15939 0 0 
+400 96.2226 393.549 0.245749 0 108.75 105.396 97.169 1.29228 0.0510046 0.0211231 9.56208 30.9155 2.06541 0 0 
+410 96.4638 395.148 0.245939 0 109.287 105.721 97.7278 1.28966 0.0568789 0.0199319 9.81624 31.7025 1.90776 0 0 
+420 96.1596 391.94 0.246577 0 107.924 105.144 97.0649 1.30115 0.0519481 0.0134508 10.0167 32.4569 1.86669 0 0 
+430 96.6263 395.082 0.246381 0 109.079 105.838 97.8388 1.2915 0.0419611 0.0167845 10.3626 33.2504 1.71048 0 0 
+440 96.8267 394.625 0.247045 0 109.023 105.977 97.8593 1.28833 0.0475992 0.0204593 10.6965 34.0714 1.61466 0 0 
+450 97.0662 394.84 0.247598 0 109.279 106.174 98.1005 1.29479 0.0466507 0.01874 10.9932 34.8604 1.52669 0 0 
+460 96.5885 391.581 0.24805 0 108.178 105.573 97.3637 1.28937 0.0469466 0.0167939 11.2729 35.6187 1.59251 0 0 
+470 96.8006 393.172 0.247974 0 108.701 105.865 97.7562 1.28591 0.0422125 0.0163755 11.5873 36.4057 1.60049 0 0 
+480 96.9072 393.504 0.248079 0 108.697 106.164 97.797 1.3024 0.0469239 0.018422 11.8756 37.203 1.63388 0 0 
+490 96.6929 391.504 0.24832 0 108.102 105.864 97.3689 1.29849 0.0552229 0.0196274 12.2156 38.0256 1.59858 0 0 
+500 96.3886 390.031 0.248408 0 107.759 105.564 96.975 1.28038 0.0477717 0.0195576 12.5329 38.8102 1.63683 0 0.153476 

Added: development/tests/_exp_500u/expected/data/count.dat
===================================================================
--- development/tests/_exp_500u/expected/data/count.dat	                        (rev 0)
+++ development/tests/_exp_500u/expected/data/count.dat	2008-02-07 04:55:07 UTC (rev 2305)
@@ -0,0 +1,70 @@
+# Avida count data
+# Tue Feb  5 18:36:41 2008
+#  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 2 1 0 0 0 0 0 0 3 2 4 0 0 
+40 210 7 4 1 0 0 0 0 0 0 4 4 7 0 0 
+50 210 8 4 1 0 0 0 1 0 1 5 5 8 0 0 
+60 360 12 6 1 0 0 0 0 0 0 7 7 12 0 0 
+70 600 20 10 1 0 0 0 0 0 0 11 12 20 0 0 
+80 1020 34 17 2 0 0 0 0 0 0 18 18 34 0 0 
+90 1230 47 23 3 0 0 0 9 3 5 26 27 47 0 0 
+100 1680 57 30 3 0 0 0 1 0 0 29 31 57 0 0 
+110 2370 79 48 5 0 0 0 0 0 0 36 47 79 0 0 
+120 3060 102 65 8 0 0 0 2 2 0 49 57 102 0 0 
+130 3720 129 80 15 0 0 0 11 6 8 62 74 129 0 0 
+140 4200 149 95 15 0 0 0 12 3 3 70 82 149 0 0 
+150 5220 177 124 20 0 0 0 7 4 1 75 98 177 0 0 
+160 6480 216 154 23 0 0 0 1 1 1 95 125 216 0 0 
+170 7590 256 183 28 0 0 0 16 13 9 106 142 256 0 0 
+180 8550 289 223 30 0 0 0 22 18 7 106 166 289 0 0 
+190 9600 327 250 35 0 0 0 23 16 10 122 181 327 0 0 
+200 11040 374 286 42 0 0 0 15 9 8 140 209 374 0 0 
+210 12840 430 326 50 0 0 0 7 5 1 159 233 430 0 0 
+220 14430 485 362 61 0 0 0 17 13 5 178 272 485 0 0 
+230 15870 536 401 74 0 0 0 30 23 10 198 304 536 0 0 
+240 17640 592 443 82 0 0 0 31 27 17 220 342 592 0 0 
+250 19620 657 496 98 0 0 0 28 25 11 242 376 657 0 0 
+260 21420 720 534 113 0 0 0 32 26 11 269 399 720 0 0 
+270 23460 788 582 125 0 0 0 32 26 9 303 451 788 0 0 
+280 25920 866 633 133 0 0 0 37 35 15 337 484 866 0 0 
+290 28350 951 724 152 0 0 0 47 41 21 348 536 951 0 0 
+300 30420 1023 769 169 0 0 0 57 48 25 382 585 1023 0 0 
+310 32550 1095 828 181 0 0 0 53 43 19 414 608 1095 0 0 
+320 35010 1173 894 195 0 0 0 38 32 16 429 649 1173 0 0 
+330 37770 1266 982 214 0 0 0 60 53 14 455 712 1266 0 0 
+340 40350 1355 1025 240 0 0 0 76 66 31 520 773 1355 0 0 
+350 43260 1452 1107 267 0 0 0 62 52 33 549 816 1452 0 0 
+360 45690 1533 1180 292 0 0 0 106 96 35 579 861 1533 0 0 
+370 48690 1628 1268 316 0 0 0 61 56 24 611 922 1628 0 0 
+380 51810 1742 1358 342 0 0 0 99 84 41 644 977 1742 0 0 
+390 55050 1846 1451 359 0 0 0 84 73 31 655 1042 1846 0 0 
+400 57900 1941 1502 393 0 0 0 99 88 41 693 1111 1941 0 0 
+410 61290 2057 1595 426 0 0 0 117 103 41 736 1170 2057 0 0 
+420 64200 2156 1657 456 0 0 0 112 96 29 798 1218 2156 0 0 
+430 67770 2264 1753 484 0 0 0 95 90 38 834 1282 2264 0 0 
+440 71430 2395 1859 510 0 0 0 114 100 49 873 1343 2395 0 0 
+450 74790 2508 1937 553 0 0 0 117 102 47 923 1418 2508 0 0 
+460 78300 2620 2032 586 0 0 0 123 113 44 959 1487 2620 0 0 
+470 82110 2748 2137 635 0 0 0 116 105 45 1012 1552 2748 0 0 
+480 86040 2877 2209 685 0 0 0 135 126 53 1078 1607 2877 0 0 
+490 89700 3006 2315 716 0 0 0 166 150 59 1129 1676 3006 0 0 
+500 93330 3119 2436 760 0 0 0 149 141 61 1139 1765 3119 0 0 

Added: development/tests/_exp_500u/expected/data/dominant.dat
===================================================================
--- development/tests/_exp_500u/expected/data/dominant.dat	                        (rev 0)
+++ development/tests/_exp_500u/expected/data/dominant.dat	2008-02-07 04:55:07 UTC (rev 2305)
@@ -0,0 +1,70 @@
+# Avida Dominant Data
+# Tue Feb  5 18:36:41 2008
+#  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 96 383 0.250653 0.00261097 100 100 96 2 0 0 0 0 0.250653 1 100-aaaaa 
+30 96 383 0.250653 0.00261097 100 100 96 3 0 0 0 0 0.250653 1 100-aaaaa 
+40 96 383 0.250653 0.00261097 100 100 96 4 0 0 0 0 0.250653 1 100-aaaaa 
+50 96 383 0.250653 0.00261097 100 100 96 5 1 1 0 0 0.250653 1 100-aaaaa 
+60 96 383 0.250653 0.00261097 100 100 96 7 0 0 0 0 0.250653 1 100-aaaaa 
+70 96 383 0.250653 0.00261097 100 100 96 10 0 0 0 0 0.251309 1 100-aaaaa 
+80 96 383 0.250653 0.00261097 100 100 96 14 0 0 0 0 0.251969 1 100-aaaaa 
+90 96 383 0.250653 0.00261097 100 100 96 15 1 0 0 0 0.252632 1 100-aaaaa 
+100 96 383 0.250653 0.00261097 100 100 96 17 0 0 0 0 0.252632 1 100-aaaaa 
+110 96 383 0.250653 0.00261097 100 100 96 16 0 0 0 0 0.254011 1 100-aaaaa 
+120 96 383 0.250653 0.00261097 100 100 96 13 1 0 0 0 0.254642 1 100-aaaaa 
+130 96 383 0.250653 0.00261097 100 100 96 11 2 1 0 0 0.254642 1 100-aaaaa 
+140 96 383 0.250653 0.00261097 100 100 96 14 0 0 0 0 0.255319 1 100-aaaaa 
+150 96 383 0.250653 0.00261097 100 100 96 13 0 0 0 0 0.256 1 100-aaaaa 
+160 96 383 0.250653 0.00261097 100 100 96 13 0 0 0 0 0.256 1 100-aaaaa 
+170 96 383 0.250653 0.00261097 100 100 96 14 2 2 0 0 0.256684 1 100-aaaaa 
+180 96 383 0.250653 0.00261097 100 100 96 15 3 2 0 0 0.256684 1 100-aaaaa 
+190 96 383 0.250653 0.00261097 100 100 96 10 0 0 0 0 0.256684 1 100-aaaaa 
+200 97 385 0.251948 0.0025974 101 101 97 6 0 0 2 0 0.256906 11 101-aaaab 
+210 97 385 0.251948 0.0025974 101 101 97 6 0 0 2 0 0.256906 11 101-aaaab 
+220 95 376 0.25266 0.00265957 100 100 95 6 0 0 3 0 0.257373 289 100-aaabe 
+230 95 376 0.25266 0.00265957 100 100 95 6 0 0 3 0 0.257373 289 100-aaabe 
+240 96 374 0.256684 0.0026738 100 100 96 7 0 0 5 0 0.258065 195 100-aaaba 
+250 96 374 0.256684 0.0026738 100 100 96 10 0 0 5 0 0.258667 195 100-aaaba 
+260 96 374 0.256684 0.0026738 100 100 96 9 3 1 5 0 0.260163 195 100-aaaba 
+270 94 370 0.254054 0.0027027 98 98.3077 94 9 0 0 6 0 0.260163 613 098-aaaad 
+280 94 370 0.254054 0.0027027 98 98.1905 94 10 0 0 6 0 0.262295 613 098-aaaad 
+290 94 370 0.254054 0.0027027 98 98.1333 94 11 1 0 6 0 0.263014 613 098-aaaad 
+300 94 370 0.254054 0.0027027 98 98.1176 94 9 3 1 6 0 0.263014 613 098-aaaad 
+310 96 375 0.256 0.00266667 101 100.848 96 9 0 0 7 0 0.262295 739 101-aaaai 
+320 96 376 0.255319 0.00265957 102 101.7 96 9 0 0 8 0 0.263736 1216 102-aaaac 
+330 96 376 0.255319 0.00265957 102 101.76 96 7 0 0 8 0 0.263736 1216 102-aaaac 
+340 96 376 0.255319 0.00265957 102 101.793 96 8 2 0 8 0 0.263736 1216 102-aaaac 
+350 97 375 0.258667 0.00266667 101 101 97 8 1 1 7 0 0.263736 2327 101-aaabf 
+360 97 375 0.258667 0.00266667 101 101 97 7 0 0 7 0 0.263736 2327 101-aaabf 
+370 88 364 0.241758 0.00274725 101 101 88 10 2 1 8 0 0.263736 968 101-aaaak 
+380 88 364 0.241758 0.00274725 101 101 88 10 1 0 8 0 0.263736 968 101-aaaak 
+390 91 365 0.249315 0.00273973 98 98 91 12 1 1 8 0 0.263736 1876 098-aaaak 
+400 91 365 0.249315 0.00273973 98 98 91 12 2 0 8 0 0.340278 1876 098-aaaak 
+410 97 372 0.260753 0.00268817 101 101 97 11 2 0 11 0 0.340278 3330 101-aaabw 
+420 97 372 0.260753 0.00268817 101 101 97 12 1 1 11 0 0.340278 3330 101-aaabw 
+430 97 372 0.260753 0.00268817 101 101 97 12 3 2 11 0 0.340278 3330 101-aaabw 
+440 97 372 0.260753 0.00268817 101 101 97 9 1 0 11 0 0.34386 3330 101-aaabw 
+450 92 376 0.244681 0.00265957 103 103 92 10 1 1 12 0 0.34386 5916 103-aaaaf 
+460 97 372 0.260753 0.00268817 101 101 97 12 0 0 11 0 0.347518 3330 101-aaabw 
+470 92 376 0.244681 0.00265957 103 103 92 8 0 0 12 0 0.347518 5916 103-aaaaf 
+480 92 376 0.244681 0.00265957 103 103 92 8 0 0 12 0 0.347518 5916 103-aaaaf 
+490 92 376 0.244681 0.00265957 103 103 92 8 2 0 12 0 0.347518 5916 103-aaaaf 
+500 88 361 0.243767 0.00277008 101 101 88 7 0 0 11 0 0.347518 10276 101-aaafv 

Added: development/tests/_exp_500u/expected/data/resource.dat
===================================================================
--- development/tests/_exp_500u/expected/data/resource.dat	                        (rev 0)
+++ development/tests/_exp_500u/expected/data/resource.dat	2008-02-07 04:55:07 UTC (rev 2305)
@@ -0,0 +1,57 @@
+# Avida resource data
+# Tue Feb  5 18:36:41 2008
+# First column gives the current update, all further columns give the quantity
+# of the particular resource at that update.
+#  1: Update
+
+0 
+10 
+20 
+30 
+40 
+50 
+60 
+70 
+80 
+90 
+100 
+110 
+120 
+130 
+140 
+150 
+160 
+170 
+180 
+190 
+200 
+210 
+220 
+230 
+240 
+250 
+260 
+270 
+280 
+290 
+300 
+310 
+320 
+330 
+340 
+350 
+360 
+370 
+380 
+390 
+400 
+410 
+420 
+430 
+440 
+450 
+460 
+470 
+480 
+490 
+500 

Added: development/tests/_exp_500u/expected/data/stats.dat
===================================================================
--- development/tests/_exp_500u/expected/data/stats.dat	                        (rev 0)
+++ development/tests/_exp_500u/expected/data/stats.dat	2008-02-07 04:55:07 UTC (rev 2305)
@@ -0,0 +1,66 @@
+# Generic Statistics Data
+# Tue Feb  5 18:36:41 2008
+#  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.562828 0.562828 0.827429 0.827429 0 0.562335 0 0 0 0 
+40 0 0.563281 0.562828 0.828465 0.827429 0 1.15374 0 0 0 0 
+50 0 0.563224 0.562828 0.828336 0.827429 0 1.07354 0 0 0 0 
+60 4.48609e-06 0.563356 0.562828 0.828638 0.827429 0 1.34979 0 0 0 0 
+70 -0.000259055 0.563303 0.562828 0.828517 0.827429 0 1.77513 0 0 0 0 
+80 0.00255526 0.563201 0.562828 0.828282 0.827429 0 2.23582 0 0 0 0 
+90 0.0048341 0.563098 0.562828 0.828046 0.827429 4 2.65029 0 0 0 0 
+100 0.0023381 0.563106 0.562828 0.828065 0.827429 1 2.89703 0 0 0 0 
+110 0.00302723 0.563189 0.562828 0.828255 0.827429 0 3.49205 0 0 0 0 
+120 0.00505813 0.563108 0.562828 0.828069 0.827429 0 3.90145 0 0 0 0 
+130 0.00395377 0.563025 0.562828 0.827879 0.827429 -2 4.12342 0 0 0 0 
+140 0.00525821 0.563041 0.562828 0.827916 0.827429 8 4.28967 0 0 0 0 
+150 0.00567541 0.563258 0.562828 0.828412 0.827429 6 4.6128 0 0 0 0 
+160 0.0109451 0.563635 0.562828 0.829275 0.827429 0 4.84696 0 0 0 0 
+170 0.0154718 0.564361 0.562828 0.83094 0.827429 -2 5.00815 0 0 0 0 
+180 0.0203529 0.564295 0.562828 0.83079 0.827429 8 5.24135 0 0 0 0 
+190 0.0231232 0.564521 0.562828 0.831309 0.827429 5 5.38119 0 0 0 0 
+200 0.0286841 0.565161 0.565986 0.832779 0.834678 2 5.53333 0 2 0 0 
+210 0.0335449 0.566797 0.565986 0.836549 0.834678 3 5.67367 0 2 0 0 
+220 0.0385934 0.567966 0.562828 0.839251 0.827429 3 5.77411 0 2 0 0 
+230 0.0386467 0.568549 0.562828 0.840601 0.827429 6 5.87461 0 2 0 0 
+240 0.0531555 0.570106 0.562828 0.844216 0.827429 0 5.96658 0 2 0 0 
+250 0.0509386 0.573486 0.562828 0.852109 0.827429 6 6.08225 0 2 0 0 
+260 0.0459418 0.573608 0.562828 0.852396 0.827429 4 6.14957 0 2 0 0 
+270 0.0343122 0.576129 0.556445 0.858327 0.812933 10 6.22493 0 2 0 0 
+280 0.0309147 0.576131 0.556445 0.858332 0.812933 1 6.31058 0 2 0 0 
+290 0.0320343 0.577762 0.556445 0.862185 0.812933 5 6.45398 0 2 0 0 
+300 0.0358769 0.57812 0.556445 0.863034 0.812933 7 6.50339 0 2 0 0 
+310 0.043169 0.57925 0.565986 0.865717 0.834678 8 6.58439 0 2 0 0 
+320 0.040242 0.580048 0.56912 0.867614 0.841926 0 6.66925 0 2 0 0 
+330 0.0412537 0.581031 0.56912 0.869958 0.841926 16 6.77808 0 2 0 0 
+340 0.0413821 0.582567 0.56912 0.873632 0.841926 3 6.81933 0 2 0 0 
+350 0.0536062 0.58274 0.565986 0.874045 0.834678 0 6.8913 0 2 0 0 
+360 0.0548082 0.584736 0.565986 0.87884 0.834678 9 6.95945 0 2 0 0 
+370 -0.0128272 0.586286 0.565986 0.882581 0.834678 -3 7.0322 0 2 0 0 
+380 -0.0139558 0.587436 0.565986 0.885363 0.834678 5 7.097 0 2 0 0 
+390 0.0162643 0.588303 0.556445 0.887467 0.812933 11 7.1712 0 2 0 0 
+400 0.0144048 0.589693 0.556445 0.89085 0.812933 8 7.20016 0 2 0 0 
+410 0.0584876 0.591289 0.565986 0.894748 0.834678 21 7.2665 0 2 0 0 
+420 0.0558965 0.587232 0.565986 0.884869 0.834678 21 7.29681 0 2 0 0 
+430 0.056695 0.590671 0.565986 0.893235 0.834678 1 7.35332 0 2 0 0 
+440 0.0540006 0.590505 0.565986 0.892832 0.834678 -1 7.4174 0 2 0 0 
+450 -0.0118503 0.591264 0.572232 0.894686 0.849175 4 7.4536 0 2 0 0 
+460 0.0499401 0.587991 0.565986 0.886709 0.834678 7 7.50716 0 2 0 0 
+470 -0.0133682 0.589549 0.572232 0.8905 0.849175 14 7.55788 0 2 0 0 
+480 -0.0137929 0.589536 0.572232 0.890466 0.849175 7 7.58934 0 2 0 0 
+490 -0.014763 0.587764 0.572232 0.88616 0.849175 13 7.6361 0 2 0 0 
+500 -0.0188602 0.586737 0.565986 0.883672 0.834678 13 7.69268 0 2 0 0 

Added: development/tests/_exp_500u/expected/data/tasks.dat
===================================================================
--- development/tests/_exp_500u/expected/data/tasks.dat	                        (rev 0)
+++ development/tests/_exp_500u/expected/data/tasks.dat	2008-02-07 04:55:07 UTC (rev 2305)
@@ -0,0 +1,66 @@
+# Avida tasks data
+# Tue Feb  5 18:36:41 2008
+# 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: Not
+#  3: Nand
+#  4: And
+#  5: OrNot
+#  6: Or
+#  7: AndNot
+#  8: Nor
+#  9: Xor
+# 10: Equals
+
+0 0 0 0 0 0 0 0 0 0 
+10 0 0 0 0 0 0 0 0 0 
+20 0 0 0 0 0 0 0 0 0 
+30 0 0 0 0 0 0 0 0 0 
+40 0 0 0 0 0 0 0 0 0 
+50 0 0 0 0 0 0 0 0 0 
+60 0 0 0 0 0 0 0 0 0 
+70 0 0 0 0 0 0 0 0 0 
+80 0 0 0 0 0 0 0 0 0 
+90 0 0 0 0 0 0 0 0 0 
+100 0 0 0 0 0 0 0 0 0 
+110 0 0 0 0 0 0 0 0 0 
+120 0 0 0 0 0 0 0 0 0 
+130 0 0 0 0 0 0 0 0 0 
+140 0 0 0 0 0 0 0 0 0 
+150 0 0 0 0 0 0 0 0 0 
+160 0 0 0 0 0 0 0 0 0 
+170 0 0 0 0 0 0 0 0 0 
+180 0 0 0 0 0 0 0 0 0 
+190 0 0 0 0 0 0 0 0 0 
+200 0 0 0 0 0 0 0 0 0 
+210 0 0 0 0 0 0 0 0 0 
+220 0 0 0 0 0 0 0 0 0 
+230 0 0 0 0 0 0 0 0 0 
+240 0 0 0 0 0 0 0 0 0 
+250 0 0 0 0 0 0 0 0 0 
+260 0 0 0 0 0 0 0 0 0 
+270 0 0 0 0 0 0 0 0 0 
+280 0 0 0 0 0 0 0 0 0 
+290 0 0 0 0 0 0 0 0 0 
+300 0 0 0 0 0 0 0 0 0 
+310 0 0 0 0 0 0 0 0 0 
+320 0 0 0 0 0 0 0 0 0 
+330 0 0 0 0 0 0 0 0 0 
+340 0 0 0 0 0 0 0 0 0 
+350 0 0 0 0 0 0 0 0 0 
+360 0 0 0 0 0 0 0 0 0 
+370 0 0 0 0 0 0 0 0 0 
+380 0 0 0 0 0 0 0 0 0 
+390 0 0 0 0 0 0 0 0 0 
+400 0 0 0 0 0 0 0 0 0 
+410 0 0 0 0 0 0 0 0 0 
+420 0 0 0 0 0 0 0 0 0 
+430 0 0 0 0 0 0 0 0 0 
+440 0 0 0 0 0 0 0 0 0 
+450 0 0 0 0 0 0 0 0 0 
+460 0 0 0 0 0 0 0 0 0 
+470 0 0 0 0 0 0 0 0 0 
+480 0 0 0 0 0 0 0 0 0 
+490 0 0 0 0 0 0 0 0 0 
+500 0 0 0 0 0 0 0 0 0 

Added: development/tests/_exp_500u/expected/data/tasks_exe.dat
===================================================================
--- development/tests/_exp_500u/expected/data/tasks_exe.dat	                        (rev 0)
+++ development/tests/_exp_500u/expected/data/tasks_exe.dat	2008-02-07 04:55:07 UTC (rev 2305)
@@ -0,0 +1,66 @@
+# Avida tasks execution data
+# Tue Feb  5 18:36:41 2008
+# First column gives the current update, all further columns give the number
+# of times the particular task has been executed this update.
+#  1: Update
+#  2: Not
+#  3: Nand
+#  4: And
+#  5: OrNot
+#  6: Or
+#  7: AndNot
+#  8: Nor
+#  9: Xor
+# 10: Equals
+
+0 0 0 0 0 0 0 0 0 0 
+10 0 0 0 0 0 0 0 0 0 
+20 0 0 0 0 0 0 0 0 0 
+30 0 0 0 0 0 0 0 0 0 
+40 0 0 0 0 0 0 0 0 0 
+50 0 0 0 0 0 0 0 0 0 
+60 0 0 0 0 0 0 0 0 0 
+70 0 0 0 0 0 0 0 0 0 
+80 0 0 0 0 0 0 0 0 0 
+90 0 0 0 0 0 0 0 0 0 
+100 0 0 0 0 0 0 0 0 0 
+110 0 0 0 0 0 0 0 0 0 
+120 0 0 0 0 0 0 0 0 0 
+130 0 0 0 0 0 0 0 0 0 
+140 0 0 0 0 0 0 0 0 0 
+150 0 0 0 0 0 0 0 0 0 
+160 0 0 0 0 0 0 0 0 0 
+170 0 0 0 0 0 0 0 0 0 
+180 0 0 0 0 0 0 0 0 0 
+190 0 0 0 0 0 0 0 0 0 
+200 0 0 0 0 0 0 0 0 0 
+210 0 0 0 0 0 0 0 0 0 
+220 0 0 0 0 0 0 0 0 0 
+230 0 0 0 0 0 0 0 0 0 
+240 0 0 0 0 0 0 0 0 0 
+250 0 0 0 0 0 0 0 0 0 
+260 0 0 0 0 0 0 0 0 0 
+270 0 0 0 0 0 0 0 0 0 
+280 0 0 0 0 0 0 0 0 0 
+290 0 0 0 0 0 0 0 0 0 
+300 0 0 0 0 0 0 0 0 0 
+310 0 0 0 0 0 0 0 0 0 
+320 0 0 0 0 0 0 0 0 0 
+330 0 0 0 0 0 0 0 0 0 
+340 0 0 0 0 0 0 0 0 0 
+350 0 0 0 0 0 0 0 0 0 
+360 0 0 0 0 0 0 0 0 0 
+370 0 0 0 0 0 0 0 0 0 
+380 0 0 0 0 0 0 0 0 0 
+390 0 0 0 0 0 0 0 0 0 
+400 0 0 0 0 0 0 0 0 0 
+410 0 0 0 0 0 0 0 0 0 
+420 0 0 0 0 0 0 0 0 0 
+430 0 0 0 0 0 0 0 0 0 
+440 0 0 0 0 0 0 0 0 0 
+450 0 0 0 0 0 0 0 0 0 
+460 0 0 0 0 0 0 0 0 0 
+470 0 0 0 0 0 0 0 0 0 
+480 0 0 0 0 0 0 0 0 0 
+490 0 0 0 0 0 0 0 0 0 
+500 0 0 0 0 0 0 0 0 0 

Added: development/tests/_exp_500u/expected/data/tasks_quality.dat
===================================================================
--- development/tests/_exp_500u/expected/data/tasks_quality.dat	                        (rev 0)
+++ development/tests/_exp_500u/expected/data/tasks_quality.dat	2008-02-07 04:55:07 UTC (rev 2305)
@@ -0,0 +1,74 @@
+# Avida tasks quality data
+# Tue Feb  5 18:36:41 2008
+# First column gives the current update, rest give average and max task quality
+#  1: Update
+#  2: Not Average
+#  3: Not Max
+#  4: Nand Average
+#  5: Nand Max
+#  6: And Average
+#  7: And Max
+#  8: OrNot Average
+#  9: OrNot Max
+# 10: Or Average
+# 11: Or Max
+# 12: AndNot Average
+# 13: AndNot Max
+# 14: Nor Average
+# 15: Nor Max
+# 16: Xor Average
+# 17: Xor Max
+# 18: Equals Average
+# 19: Equals Max
+
+0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 
+10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+50 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+60 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+70 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+90 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+110 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+120 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+130 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+140 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+150 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+160 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+170 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+180 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+190 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+200 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+210 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+220 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+230 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+240 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+260 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+270 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+280 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+290 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+300 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+310 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+320 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+330 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+340 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+350 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+360 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+370 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+380 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+390 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+400 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+410 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+420 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+430 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+440 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+450 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+460 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+470 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+480 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+490 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
+500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

Added: development/tests/_exp_500u/expected/data/time.dat
===================================================================
--- development/tests/_exp_500u/expected/data/time.dat	                        (rev 0)
+++ development/tests/_exp_500u/expected/data/time.dat	2008-02-07 04:55:07 UTC (rev 2305)
@@ -0,0 +1,58 @@
+# Avida time data
+# Tue Feb  5 18:36:41 2008
+#  1: update
+#  2: avida time
+#  3: average generation
+#  4: num_executed?
+
+0 0.000000 0.000000 30 
+10 0.104167 0 30 
+20 0.208333 1 60 
+30 0.3125 2 120 
+40 0.416667 2.85714 210 
+50 0.520833 3.125 210 
+60 0.624874 3.75 360 
+70 0.728902 4.7 600 
+80 0.83315 5.79412 1020 
+90 0.937755 6.53191 1230 
+100 1.04258 6.92982 1680 
+110 1.14748 7.91139 2370 
+120 1.2527 8.85294 3060 
+130 1.35813 9.67442 3720 
+140 1.46359 10.2282 4200 
+150 1.56924 10.904 5220 
+160 1.67546 11.8241 6480 
+170 1.7825 12.7656 7590 
+180 1.88991 13.526 8550 
+190 1.9981 14.1957 9600 
+200 2.10591 14.9332 11040 
+210 2.21433 15.8372 12840 
+220 2.32317 16.6948 14430 
+230 2.43207 17.5187 15870 
+240 2.54062 18.2162 17640 
+250 2.64859 18.9985 19620 
+260 2.75557 19.8319 21420 
+270 2.86167 20.6485 23460 
+280 2.96736 21.4838 25920 
+290 3.07289 22.2734 28350 
+300 3.17862 23.0362 30420 
+310 3.28449 23.7909 32550 
+320 3.39012 24.5908 35010 
+330 3.49547 25.4352 37770 
+340 3.60089 26.2214 40350 
+350 3.70631 26.9821 43260 
+360 3.81164 27.758 45690 
+370 3.91661 28.5283 48690 
+380 4.02137 29.3726 51810 
+390 4.12603 30.1371 55050 
+400 4.23057 30.9155 57900 
+410 4.33473 31.7025 61290 
+420 4.43863 32.4569 64200 
+430 4.54225 33.2504 67770 
+440 4.64568 34.0714 71430 
+450 4.74914 34.8604 74790 
+460 4.8523 35.6187 78300 
+470 4.9556 36.4057 82110 
+480 5.05901 37.203 86040 
+490 5.16223 38.0256 89700 
+500 5.26573 38.8102 93330 

Modified: development/tests/_exp_500u/test_list
===================================================================
--- development/tests/_exp_500u/test_list	2008-02-07 01:19:26 UTC (rev 2304)
+++ development/tests/_exp_500u/test_list	2008-02-07 04:55:07 UTC (rev 2305)
@@ -12,7 +12,7 @@
 email = brysonda at egr.msu.edu ; Email address for the test's creator
 
 [consistency]
-enabled = no             ; Is this test a consistency test?
+enabled = yes             ; Is this test a consistency test?
 long = yes               ; Is this test a long test?
 
 [performance]




More information about the Avida-cvs mailing list