[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