[Avida-cvs] [avida-svn] r470 - trunk/source/main

goingssh@myxo.css.msu.edu goingssh at myxo.css.msu.edu
Thu Feb 9 12:35:11 PST 2006


Author: goingssh
Date: 2006-02-09 15:35:11 -0500 (Thu, 09 Feb 2006)
New Revision: 470

Modified:
   trunk/source/main/cStats.cc
   trunk/source/main/cStats.h
Log:
Added output for max task quality and average task quality to taskquality.dat

Modified: trunk/source/main/cStats.cc
===================================================================
--- trunk/source/main/cStats.cc	2006-02-07 16:56:44 UTC (rev 469)
+++ trunk/source/main/cStats.cc	2006-02-09 20:35:11 UTC (rev 470)
@@ -13,6 +13,7 @@
 #include "cStringUtil.h"
 #include "tDataEntry.h"
 
+#include <iostream>
 #include <math.h>
 
 using namespace std;
@@ -103,11 +104,15 @@
   task_last_count.Resize( cConfig::GetNumTasks() );
   task_cur_quality.Resize( cConfig::GetNumTasks() );
   task_last_quality.Resize( cConfig::GetNumTasks() );
+  task_cur_max_quality.Resize( cConfig::GetNumTasks() );
+  task_last_max_quality.Resize( cConfig::GetNumTasks() );
   task_exe_count.Resize( cConfig::GetNumTasks() );
   task_cur_count.SetAll(0);
   task_last_count.SetAll(0);
   task_cur_quality.SetAll(0);
   task_last_quality.SetAll(0);
+  task_cur_max_quality.SetAll(0);
+  task_last_max_quality.SetAll(0);
   task_exe_count.SetAll(0);
 
 #ifdef INSTRUCTION_COUNT
@@ -241,6 +246,8 @@
     task_last_count[i] = 0;
 	task_cur_quality[i] = 0;
     task_last_quality[i] = 0;
+	task_last_max_quality[i] = 0;
+	task_cur_max_quality[i] = 0;
   }
 }
 
@@ -400,6 +407,8 @@
   task_last_count.SetAll(0);
   task_cur_quality.SetAll(0);
   task_last_quality.SetAll(0);
+  task_cur_max_quality.SetAll(0);
+  task_last_max_quality.SetAll(0);
   task_exe_count.SetAll(0);
 
   dom_merit = 0;
@@ -655,24 +664,37 @@
 
 void cStats::PrintTasksData(const cString & filename)
 {
-  cDataFile & df = GetDataFile(filename);
+	cString file = filename;
 
-  df.WriteComment( "Avida tasks data" );
-  df.WriteTimeStamp();
-  df.WriteComment( "First column gives the current update, next columns give the number" );
-  df.WriteComment( "of organisms that have the particular task as a component of their merit" );
-  //df.WriteComment( "and the total task quality of all those orgs performing it" );
+	// flag to print both tasks.dat and taskquality.dat
+	if (filename == "tasksq.dat")
+	{
+		file = "tasks.dat";
+		cDataFile & df2 = GetDataFile("taskquality.dat");
+		df2.WriteComment( "First column gives the current update, rest give average and max task quality" );
+		df2.Write( GetUpdate(), "Update");
+		for(int i = 0; i < task_last_count.GetSize(); i++) {
+			double qual=0;
+			if (task_last_count[i] > 0)
+				qual = task_last_quality[i]/(double)task_last_count[i];
+			df2.Write( qual, task_names[i] );
+			df2.Write( task_last_max_quality[i], "Max" );
+		}
+		df2.Endl();
+	}
 
+	// print tasks.dat
+	cDataFile & df = GetDataFile(file);
+	df.WriteComment( "Avida tasks data" );
+	df.WriteTimeStamp();
+	df.WriteComment( "First column gives the current update, next columns give the number" );
+	df.WriteComment( "of organisms that have the particular task as a component of their merit" );
 
-  df.Write( GetUpdate(),   "Update");
-  for(int i = 0; i < task_last_count.GetSize(); i++) {
-    df.Write( task_last_count[i], task_names[i] );
-	double qual=0;
-	if (task_last_count[i] > 0)
-		qual = task_last_quality[i]/(double)task_last_count[i];
-	//df.Write( qual, "quality" );
-  }
-  df.Endl();
+	df.Write( GetUpdate(),   "Update");
+	for(int i = 0; i < task_last_count.GetSize(); i++) {
+		df.Write( task_last_count[i], task_names[i] );
+	}
+	df.Endl();
 }
 
 

Modified: trunk/source/main/cStats.h
===================================================================
--- trunk/source/main/cStats.h	2006-02-07 16:56:44 UTC (rev 469)
+++ trunk/source/main/cStats.h	2006-02-09 20:35:11 UTC (rev 470)
@@ -179,6 +179,7 @@
   int dom_gene_depth;
   cString dom_sequence;
   int coal_depth;
+  
 
   // Dominant Parasite
   cInjectGenotype * dom_inj_genotype;
@@ -223,6 +224,8 @@
   tArray<int> task_last_count;
   tArray<double> task_cur_quality;
   tArray<double> task_last_quality;
+  tArray<double> task_cur_max_quality;
+  tArray<double> task_last_max_quality;
   tArray<int> task_exe_count;
 
   tArray<double> reaction_count;
@@ -446,9 +449,17 @@
   void IncExecuted() { num_executed++; }
 
   void AddCurTask(int task_num) { task_cur_count[task_num]++; }
-  void AddCurTaskQuality(int task_num, double quality) { task_cur_quality[task_num] += quality; }
+  void AddCurTaskQuality(int task_num, double quality) 
+  { task_cur_quality[task_num] += quality;
+	if (quality > task_cur_max_quality[task_num])
+		task_cur_max_quality[task_num] = quality;
+  }
   void AddLastTask(int task_num) { task_last_count[task_num]++; }
-  void AddLastTaskQuality(int task_num, double quality) { task_last_quality[task_num] += quality; }
+  void AddLastTaskQuality(int task_num, double quality) 
+  { task_last_quality[task_num] += quality;
+	if (quality > task_last_max_quality[task_num])
+		task_last_max_quality[task_num] = quality;
+  }
   void IncTaskExeCount(int task_num, int task_count) 
     { task_exe_count[task_num] += task_count; }
   void ZeroTasks();
@@ -496,8 +507,10 @@
 
   int GetTaskCurCount(int task_num) const { return task_cur_count[task_num]; }
   int GetTaskLastCount(int task_num) const {return task_last_count[task_num];}
-  int GetTaskCurQuality(int task_num) const { return task_cur_quality[task_num]; }
-  int GetTaskLastQuality(int task_num) const {return task_last_quality[task_num];}
+  double GetTaskCurQuality(int task_num) const { return task_cur_quality[task_num]/(double)task_cur_count[task_num]; }
+  double GetTaskLastQuality(int task_num) const {return task_last_quality[task_num]/(double)task_last_count[task_num];}
+  double GetTaskMaxCurQuality(int task_num) const { return task_cur_max_quality[task_num];}
+  double GetTaskMaxLastQuality(int task_num) const { return task_last_max_quality[task_num];}
   int GetTaskExeCount(int task_num) const { return task_exe_count[task_num]; }
 
   const tArray<double> & GetReactions() const { return reaction_count; }




More information about the Avida-cvs mailing list