[Avida-SVN] r1470 - in branches/collect/source: actions analyze cpu main

blwalker at myxo.css.msu.edu blwalker at myxo.css.msu.edu
Sat Apr 7 06:56:25 PDT 2007


Author: blwalker
Date: 2007-04-07 09:56:24 -0400 (Sat, 07 Apr 2007)
New Revision: 1470

Modified:
   branches/collect/source/actions/PrintActions.cc
   branches/collect/source/analyze/cAnalyze.cc
   branches/collect/source/analyze/cAnalyzeGenotype.cc
   branches/collect/source/analyze/cAnalyzeGenotype.h
   branches/collect/source/cpu/cHardwareCPU.cc
   branches/collect/source/cpu/cTestCPU.cc
   branches/collect/source/main/cEnvironment.cc
   branches/collect/source/main/cOrganism.cc
   branches/collect/source/main/cOrganism.h
   branches/collect/source/main/cPhenotype.cc
Log:

Print Actions for tasks-done-with-internal-resources and their quality implemented.

Some structure for reporting individual data also implemented; no output at this time.


Modified: branches/collect/source/actions/PrintActions.cc
===================================================================
--- branches/collect/source/actions/PrintActions.cc	2007-04-07 00:46:26 UTC (rev 1469)
+++ branches/collect/source/actions/PrintActions.cc	2007-04-07 13:56:24 UTC (rev 1470)
@@ -86,6 +86,8 @@
 STATS_OUT_FILE(PrintMarketData,             market.dat          );
 STATS_OUT_FILE(PrintSenseData,              sense.dat           );
 STATS_OUT_FILE(PrintSenseExeData,           sense_exe.dat       );
+STATS_OUT_FILE(PrintInternalTasksData,      in_tasks.dat        );
+STATS_OUT_FILE(PrintInternalTasksQualData,  in_tasks_quality.dat);
 
 
 #define POP_OUT_FILE(METHOD, DEFAULT)                                                     /*  1 */ \
@@ -1772,6 +1774,8 @@
   action_lib->Register<cActionPrintMarketData>("PrintMarketData");
   action_lib->Register<cActionPrintSenseData>("PrintSenseData");
   action_lib->Register<cActionPrintSenseExeData>("PrintSenseExeData");
+  action_lib->Register<cActionPrintInternalTasksData>("PrintInternalTasksData");
+  action_lib->Register<cActionPrintInternalTasksQualData>("PrintInternalTasksQualData");
 
   // Population Out Files
   action_lib->Register<cActionPrintPhenotypeData>("PrintPhenotypeData");

Modified: branches/collect/source/analyze/cAnalyze.cc
===================================================================
--- branches/collect/source/analyze/cAnalyze.cc	2007-04-07 00:46:26 UTC (rev 1469)
+++ branches/collect/source/analyze/cAnalyze.cc	2007-04-07 13:56:24 UTC (rev 1470)
@@ -1675,7 +1675,7 @@
     cHardwareStatusPrinter trace_printer(trace_fp);
     
     // Build the test info for printing.
-    cCPUTestInfo test_info;
+    cCPUTestInfo test_info;  
     test_info.SetTraceExecution(&trace_printer);
     test_info.UseRandomInputs(useRandomInputs==1); 
     

Modified: branches/collect/source/analyze/cAnalyzeGenotype.cc
===================================================================
--- branches/collect/source/analyze/cAnalyzeGenotype.cc	2007-04-07 00:46:26 UTC (rev 1469)
+++ branches/collect/source/analyze/cAnalyzeGenotype.cc	2007-04-07 13:56:24 UTC (rev 1470)
@@ -65,6 +65,10 @@
   , errors(0)
   , task_counts(0)
   , task_qualities(0)
+  , internal_task_counts(0)
+  , internal_task_qualities(0)
+  , rbins_total(0)
+  , rbins_avail(0)
   , fitness_ratio(0.0)
   , efficiency_ratio(0.0)
   , comp_merit_ratio(0.0)
@@ -111,6 +115,10 @@
   , errors(0)
   , task_counts(0)
   , task_qualities(0)
+  , internal_task_counts(0)
+  , internal_task_qualities(0)
+  , rbins_total(0)
+  , rbins_avail(0)
   , fitness_ratio(0.0)
   , efficiency_ratio(0.0)
   , comp_merit_ratio(0.0)
@@ -147,6 +155,10 @@
   , errors(_gen.errors)
   , task_counts(_gen.task_counts)
   , task_qualities(_gen.task_qualities)
+  , internal_task_counts(_gen.internal_task_counts)
+  , internal_task_qualities(_gen.internal_task_qualities)
+  , rbins_total(_gen.rbins_total)
+  , rbins_avail(_gen.rbins_avail)
   , fitness_ratio(_gen.fitness_ratio)
   , efficiency_ratio(_gen.efficiency_ratio)
   , comp_merit_ratio(_gen.comp_merit_ratio)
@@ -404,6 +416,10 @@
   mate_id = test_phenotype.MateSelectID();
   task_counts = test_phenotype.GetLastTaskCount();
   task_qualities = test_phenotype.GetLastTaskQuality();
+  internal_task_counts = test_phenotype.GetLastInternalTaskCount();
+  internal_task_qualities = test_phenotype.GetLastInternalTaskQuality();
+  rbins_total = test_phenotype.GetLastRBinsTotal();
+  rbins_avail = test_phenotype.GetLastRBinsAvail();
 
   // Setup a new parent stats if we have a parent to work with.
   if (parent_genotype != NULL) {
@@ -438,6 +454,24 @@
   }
 }
 
+void cAnalyzeGenotype::PrintInternalTasks(ofstream& fp, int min_task, int max_task)
+{
+  if (max_task == -1) max_task = internal_task_counts.GetSize();
+
+  for (int i = min_task; i < max_task; i++) {
+    fp << internal_task_counts[i] << " ";
+  }
+}
+
+void cAnalyzeGenotype::PrintInternalTasksQuality(ofstream& fp, int min_task, int max_task)
+{
+  if (max_task == -1) max_task = internal_task_counts.GetSize();
+
+  for (int i = min_task; i < max_task; i++) {
+    fp << internal_task_qualities[i] << " ";
+  }
+}
+
 void cAnalyzeGenotype::SetSequence(cString _sequence)
 {
   cGenome new_genome(_sequence);

Modified: branches/collect/source/analyze/cAnalyzeGenotype.h
===================================================================
--- branches/collect/source/analyze/cAnalyzeGenotype.h	2007-04-07 00:46:26 UTC (rev 1469)
+++ branches/collect/source/analyze/cAnalyzeGenotype.h	2007-04-07 13:56:24 UTC (rev 1470)
@@ -130,6 +130,10 @@
   cString executed_flags; // converted into a string
   tArray<int> task_counts;
   tArray<double> task_qualities;
+  tArray<int> internal_task_counts;
+  tArray<double> internal_task_qualities;
+  tArray<double> rbins_total;
+  tArray<double> rbins_avail;
 
   // Group 3 : Stats requiring parental genotype (Also from test CPUs)
   double fitness_ratio;
@@ -212,6 +216,8 @@
   void Recalculate(cAvidaContext& ctx, cTestCPU* testcpu, cAnalyzeGenotype* parent_genotype = NULL, cCPUTestInfo* test_info = NULL);
   void PrintTasks(std::ofstream& fp, int min_task = 0, int max_task = -1);
   void PrintTasksQuality(std::ofstream& fp, int min_task = 0, int max_task = -1);
+  void PrintInternalTasks(std::ofstream& fp, int min_task = 0, int max_task = -1);
+  void PrintInternalTasksQuality(std::ofstream& fp, int min_task = 0, int max_task = -1);
   void CalcLandscape(cAvidaContext& ctx);
 
   // Set...

Modified: branches/collect/source/cpu/cHardwareCPU.cc
===================================================================
--- branches/collect/source/cpu/cHardwareCPU.cc	2007-04-07 00:46:26 UTC (rev 1469)
+++ branches/collect/source/cpu/cHardwareCPU.cc	2007-04-07 13:56:24 UTC (rev 1470)
@@ -3090,7 +3090,7 @@
   {
     res_change[bin_used] = -1 * (res_count[bin_used] * m_world->GetConfig().ABSORB_RESOURCE_FRACTION.Get());
     organism->AddToRBin(bin_used, -1 * res_change[bin_used]);
-//cout << "bin" << bin_used << ": " << organism->m_rbins[bin_used] << endl;
+//cout << "bin" << bin_used << ": " << organism->GetRBin(bin_used) << endl;
   }
   else
   {
@@ -3099,7 +3099,7 @@
     {
       res_change[i] = -1 * (res_count[bin_used] * m_world->GetConfig().ABSORB_RESOURCE_FRACTION.Get() / num_bins);
       organism->AddToRBin(i, -1 * res_change[i]);    
-//cout << "multibin" << i << ": " << organism->m_rbins[i] << endl;
+//cout << "multibin" << i << ": " << organism->GetRBin(i) << endl;
     }
   }
   

Modified: branches/collect/source/cpu/cTestCPU.cc
===================================================================
--- branches/collect/source/cpu/cTestCPU.cc	2007-04-07 00:46:26 UTC (rev 1469)
+++ branches/collect/source/cpu/cTestCPU.cc	2007-04-07 13:56:24 UTC (rev 1470)
@@ -465,6 +465,29 @@
     df.WriteComment(c.Set("%s %d (%f)", static_cast<const char*>(env.GetTask(i).GetName()),
                           task_count[i], task_qual[i]));
   }
+  
+  // if resource bins are being used, print relevant information
+  if(m_world->GetConfig().USE_RESOURCE_BINS.Get())  {
+  	df.WriteComment("Tasks Performed Using Internal Resources:");
+  	
+  	const tArray<int>& internal_task_count = test_info.GetTestPhenotype().GetLastInternalTaskCount();
+  	const tArray<double>& internal_task_qual = test_info.GetTestPhenotype().GetLastInternalTaskQuality();
+  	
+  	for (int i = 0; i < task_count.GetSize(); i++) {
+  		df.WriteComment(c.Set("%s %d (%f)", static_cast<const char*>(env.GetTask(i).GetName()),
+  		                      internal_task_count[i], internal_task_qual[i]));
+  	}
+  	
+  	const tArray<double>& rbins_total = test_info.GetTestPhenotype().GetLastRBinsTotal();
+  	const tArray<double>& rbins_avail = test_info.GetTestPhenotype().GetLastRBinsAvail();
+  	
+  	df.WriteComment(        "Resources Collected: Name\t\tTotal\t\tAvailable");
+  	for (int i = 0; i < rbins_total.GetSize(); i++) {
+  		df.WriteComment(c.Set("                %d : %s\t\t%f\t\t%f\t\t", i,
+  		                      static_cast<const char*>(env.GetResourceLib().GetResource(i)->GetName()),
+  		                      rbins_total[i], rbins_avail[i]));
+  	}
+  }
 
   df.Endl();
   

Modified: branches/collect/source/main/cEnvironment.cc
===================================================================
--- branches/collect/source/main/cEnvironment.cc	2007-04-07 00:46:26 UTC (rev 1469)
+++ branches/collect/source/main/cEnvironment.cc	2007-04-07 13:56:24 UTC (rev 1470)
@@ -798,7 +798,7 @@
                               cTaskContext& taskctx, const tArray<int>& task_count,
                               const tArray<int>& reaction_count, 
                               const tArray<double>& resource_count, 
-                              tArray<double>& rbin_count) const
+                              tArray<double>& rbins_count) const
 {
   // Do setup for reaction tests...
   m_tasklib.SetupTests(taskctx);
@@ -835,7 +835,7 @@
     result.MarkTask(task_id, task_quality);
 
     // And let's process it!
-    DoProcesses(ctx, cur_reaction->GetProcesses(), resource_count, rbin_count, task_quality, task_cnt, i, result);
+    DoProcesses(ctx, cur_reaction->GetProcesses(), resource_count, rbins_count, task_quality, task_cnt, i, result);
     
     // Mark this reaction as occuring...
     result.MarkReaction(cur_reaction->GetID());
@@ -937,7 +937,7 @@
       bool using_rbins = false;  //default: not using resource bins
       
       //check to see if we do want to use this resource from a bin instead of the environment
-      if (may_use_rbins && rbins_count[res_id] > consumed)
+      if (may_use_rbins && rbins_count[res_id] > consumed && rbins_count[res_id] > 0)
       {
         consumed = rbins_count[res_id];
         using_rbins = true;
@@ -1011,7 +1011,7 @@
     }
     
     result.Lethal(cur_process->GetLethal());    
-    }
+    } 
 }
 
 double cEnvironment::GetReactionValue(int& reaction_id)

Modified: branches/collect/source/main/cOrganism.cc
===================================================================
--- branches/collect/source/main/cOrganism.cc	2007-04-07 00:46:26 UTC (rev 1469)
+++ branches/collect/source/main/cOrganism.cc	2007-04-07 13:56:24 UTC (rev 1470)
@@ -85,10 +85,14 @@
     // m_max_executed must be positive or an organism will not die!
     if (m_max_executed < 1) m_max_executed = 1;
   }
-  
+
   // Ensure all those nice new resource bins are set to 0
   m_rbins.Resize(m_world->GetNumResources(), 0.0);
   
+	//since they're *not* actually set to zero due to some really wierd stuff...
+	for(int i = 0; i < m_rbins.GetSize(); i++)
+	{m_rbins[i] = 0.0;}
+
   if (m_world->GetConfig().NET_ENABLED.Get()) m_net = new cNetSupport();
   m_id = m_world->GetStats().GetTotCreatures();
 }
@@ -232,7 +236,9 @@
   if (!m_world->GetConfig().SAVE_RECEIVED.Get()) received_messages_point = NULL;
   
   cTaskContext taskctx(m_interface, m_input_buf, m_output_buf, other_input_list, other_output_list, net_valid, 0, on_divide, received_messages_point);
+
   m_phenotype.TestOutput(ctx, taskctx, resource_count, m_rbins, res_change, insts_triggered);
+
   m_interface->UpdateResources(res_change);
 
   for (int i = 0; i < insts_triggered.GetSize(); i++) {

Modified: branches/collect/source/main/cOrganism.h
===================================================================
--- branches/collect/source/main/cOrganism.h	2007-04-07 00:46:26 UTC (rev 1469)
+++ branches/collect/source/main/cOrganism.h	2007-04-07 13:56:24 UTC (rev 1470)
@@ -163,6 +163,7 @@
   
   const tArray<double>& GetRBins() const { return m_rbins; }
   tArray<double>& GetRBins() { return m_rbins; }
+  double GetRBin(int index) { return m_rbins[index]; }
   void SetRBins(const tArray<double>& rbins_in);
   void SetRBin(const int index, const double value);
   void AddToRBin(const int index, const double value);

Modified: branches/collect/source/main/cPhenotype.cc
===================================================================
--- branches/collect/source/main/cPhenotype.cc	2007-04-07 00:46:26 UTC (rev 1469)
+++ branches/collect/source/main/cPhenotype.cc	2007-04-07 13:56:24 UTC (rev 1470)
@@ -900,6 +900,22 @@
     fp << " " << cur_task_count[i] << " (" << cur_task_quality[i] << ")";
   fp << endl;
   
+ 	// if using resoruce bins, print the relevant stats
+ 	if (m_world->GetConfig().USE_RESOURCE_BINS.Get())
+ 	{
+ 		fp << "  Used-Internal-Resources Task Count (Quality):";
+ 		for (int i = 0; i < cur_internal_task_count.GetSize(); i++) {
+ 			fp << " " << cur_internal_task_count[i] << " (" << cur_internal_task_quality[i] << ")";
+ 		}
+ 		fp << endl;
+ 		
+ 		fp << "  Available Internal Resource Bin Contents (Total Ever Collected):";
+ 		for(int i = 0; i < cur_rbins_avail.GetSize(); i++) {
+ 			fp << " " << cur_rbins_avail[i] << " (" << cur_rbins_total[i] << ")";
+ 		}
+ 		fp << endl;
+ 	}
+  
   if (m_world->GetConfig().PROMOTERS_ENABLED.Get() == 1)
   {
     fp << "Promoters:     ";




More information about the Avida-cvs mailing list