[Avida-cvs] [avida-svn] r469 - trunk/source/main
goingssh@myxo.css.msu.edu
goingssh at myxo.css.msu.edu
Tue Feb 7 08:56:45 PST 2006
Author: goingssh
Date: 2006-02-07 11:56:44 -0500 (Tue, 07 Feb 2006)
New Revision: 469
Modified:
trunk/source/main/cEnvironment.cc
trunk/source/main/cPhenotype.cc
trunk/source/main/cPhenotype.h
trunk/source/main/cPopulation.cc
trunk/source/main/cReactionResult.cc
trunk/source/main/cReactionResult.h
trunk/source/main/cStats.cc
trunk/source/main/cStats.h
trunk/source/main/cTaskLib.cc
Log:
Added ability to report average task quality in tasks.dat file instead of just how many organsims are performing a given task
Modified: trunk/source/main/cEnvironment.cc
===================================================================
--- trunk/source/main/cEnvironment.cc 2006-02-06 20:18:42 UTC (rev 468)
+++ trunk/source/main/cEnvironment.cc 2006-02-07 16:56:44 UTC (rev 469)
@@ -46,6 +46,7 @@
#include "cTools.h"
#endif
+#include <iostream>
using namespace std;
cEnvironment::cEnvironment()
@@ -760,7 +761,6 @@
// If this task wasn't performed, move on to the next one.
if (task_quality == 0.0) continue;
-
// Examine requisites on this reaction
if (TestRequisites(cur_reaction->GetRequisites(), task_count[task_id],
reaction_count) == false) continue;
Modified: trunk/source/main/cPhenotype.cc
===================================================================
--- trunk/source/main/cPhenotype.cc 2006-02-06 20:18:42 UTC (rev 468)
+++ trunk/source/main/cPhenotype.cc 2006-02-07 16:56:44 UTC (rev 469)
@@ -31,10 +31,12 @@
: environment(_environment)
, initialized(false)
, cur_task_count(environment.GetTaskLib().GetSize())
+ , cur_task_quality(environment.GetTaskLib().GetSize())
, cur_reaction_count(environment.GetReactionLib().GetSize())
, cur_inst_count(environment.GetInstSet().GetSize())
, sensed_resources(environment.GetResourceLib().GetSize())
, last_task_count(environment.GetTaskLib().GetSize())
+ , last_task_quality(environment.GetTaskLib().GetSize())
, last_reaction_count(environment.GetReactionLib().GetSize())
, last_inst_count(environment.GetInstSet().GetSize())
{
@@ -104,6 +106,7 @@
cur_num_errors = 0;
cur_num_donates = 0;
cur_task_count.SetAll(0);
+ cur_task_quality.SetAll(0);
cur_reaction_count.SetAll(0);
cur_inst_count.SetAll(0);
for (int j = 0; j < sensed_resources.GetSize(); j++)
@@ -116,6 +119,7 @@
last_num_errors = parent_phenotype.last_num_errors;
last_num_donates = parent_phenotype.last_num_donates;
last_task_count = parent_phenotype.last_task_count;
+ last_task_quality = parent_phenotype.last_task_quality;
last_reaction_count = parent_phenotype.last_reaction_count;
last_inst_count = parent_phenotype.last_inst_count;
last_fitness = last_merit_base * last_bonus / gestation_time;
@@ -196,6 +200,7 @@
last_num_errors = 0;
last_num_donates = 0;
last_task_count.SetAll(0);
+ last_task_quality.SetAll(0);
last_reaction_count.SetAll(0);
last_inst_count.SetAll(0);
@@ -264,6 +269,7 @@
last_num_errors = cur_num_errors;
last_num_donates = cur_num_donates;
last_task_count = cur_task_count;
+ last_task_quality = cur_task_quality;
last_reaction_count = cur_reaction_count;
last_inst_count = cur_inst_count;
@@ -272,6 +278,7 @@
cur_num_errors = 0;
cur_num_donates = 0;
cur_task_count.SetAll(0);
+ cur_task_quality.SetAll(0);
cur_reaction_count.SetAll(0);
cur_inst_count.SetAll(0);
@@ -349,6 +356,7 @@
last_num_errors = cur_num_errors;
last_num_donates = cur_num_donates;
last_task_count = cur_task_count;
+ last_task_quality = cur_task_quality;
last_reaction_count = cur_reaction_count;
last_inst_count = cur_inst_count;
@@ -357,6 +365,7 @@
cur_num_errors = 0;
cur_num_donates = 0;
cur_task_count.SetAll(0);
+ cur_task_quality.SetAll(0);
cur_reaction_count.SetAll(0);
cur_inst_count.SetAll(0);
sensed_resources.SetAll(-1.0);
@@ -526,6 +535,9 @@
for (int i = 0; i < num_tasks; i++) {
if (result.TaskDone(i) == true) cur_task_count[i]++;
}
+ for (int i = 0; i < num_tasks; i++) {
+ if (result.TaskQuality(i) > 0) cur_task_quality[i]+= result.TaskQuality(i);
+ }
for (int i = 0; i < num_reactions; i++) {
if (result.ReactionTriggered(i) == true) cur_reaction_count[i]++;
}
Modified: trunk/source/main/cPhenotype.h
===================================================================
--- trunk/source/main/cPhenotype.h 2006-02-06 20:18:42 UTC (rev 468)
+++ trunk/source/main/cPhenotype.h 2006-02-07 16:56:44 UTC (rev 469)
@@ -74,6 +74,7 @@
int cur_num_errors; // Total instructions executed illeagally.
int cur_num_donates; // Number of donations so far
tArray<int> cur_task_count; // Total times each task was performed
+ tArray<double> cur_task_quality; // Average (total?) quality with which each task was performed
tArray<int> cur_reaction_count; // Total times each reaction was triggered.
tArray<int> cur_inst_count; // Intruction exection counter
tArray<double> sensed_resources; // Resources of which the organism is explictly aware
@@ -84,6 +85,7 @@
int last_num_errors;
int last_num_donates;
tArray<int> last_task_count;
+ tArray<double> last_task_quality;
tArray<int> last_reaction_count;
tArray<int> last_inst_count; // Intruction exection counter
double last_fitness; // Used to determine sterilization.
@@ -203,6 +205,8 @@
{ assert(initialized == true); return cur_num_donates; }
const tArray<int> & GetCurTaskCount() const
{ assert(initialized == true); return cur_task_count; }
+ const tArray<double> & GetCurTaskQuality() const
+ { assert(initialized == true); return cur_task_quality; }
const tArray<int> & GetCurReactionCount() const
{ assert(initialized == true); return cur_reaction_count;}
const tArray<int> & GetCurInstCount() const
@@ -223,6 +227,8 @@
{ assert(initialized == true); return last_num_donates; }
const tArray<int> & GetLastTaskCount() const
{ assert(initialized == true); return last_task_count; }
+ const tArray<double> & GetLastTaskQuality() const
+ { assert(initialized == true); return last_task_quality; }
const tArray<int> & GetLastReactionCount() const
{ assert(initialized == true); return last_reaction_count; }
const tArray<int> & GetLastInstCount() const
Modified: trunk/source/main/cPopulation.cc
===================================================================
--- trunk/source/main/cPopulation.cc 2006-02-06 20:18:42 UTC (rev 468)
+++ trunk/source/main/cPopulation.cc 2006-02-07 16:56:44 UTC (rev 469)
@@ -1238,9 +1238,18 @@
// Test what tasks this creatures has completed.
for (int j=0; j < phenotype.GetEnvironment().GetTaskLib().GetSize(); j++) {
- if (phenotype.GetCurTaskCount()[j] > 0) stats.AddCurTask(j);
- if (phenotype.GetLastTaskCount()[j] > 0) stats.AddLastTask(j);
+ if (phenotype.GetCurTaskCount()[j] > 0)
+ {
+ stats.AddCurTask(j);
+ stats.AddCurTaskQuality(j, phenotype.GetCurTaskQuality()[j]);
+ }
+
if (phenotype.GetLastTaskCount()[j] > 0)
+ {
+ stats.AddLastTask(j);
+ stats.AddLastTaskQuality(j, phenotype.GetLastTaskQuality()[j]);
+ }
+ if (phenotype.GetLastTaskCount()[j] > 0)
stats.IncTaskExeCount(j, phenotype.GetLastTaskCount()[j]);
}
Modified: trunk/source/main/cReactionResult.cc
===================================================================
--- trunk/source/main/cReactionResult.cc 2006-02-06 20:18:42 UTC (rev 468)
+++ trunk/source/main/cReactionResult.cc 2006-02-07 16:56:44 UTC (rev 469)
@@ -6,6 +6,8 @@
//////////////////////////////////////////////////////////////////////////////
#include "cReactionResult.h"
+#include <iostream>
+using namespace std;
cReactionResult::cReactionResult(const int num_resources,
@@ -78,11 +80,11 @@
lethal = flag;
}
-void cReactionResult::MarkTask(int id, const double quality)
+void cReactionResult::MarkTask(int id, double quality)
{
ActivateReaction();
tasks_done[id] = true;
- tasks_quality[id]+=quality;
+ tasks_quality[id] = quality;
}
@@ -164,7 +166,7 @@
double cReactionResult::TaskQuality(int id)
{
- if (GetActive() == false) return false;
+ if (GetActive() == false) return 0;
return tasks_quality[id];
}
Modified: trunk/source/main/cReactionResult.h
===================================================================
--- trunk/source/main/cReactionResult.h 2006-02-06 20:18:42 UTC (rev 468)
+++ trunk/source/main/cReactionResult.h 2006-02-07 16:56:44 UTC (rev 469)
@@ -20,7 +20,7 @@
tArray<double> resources_produced;
tArray<double> resources_detected; //Initialize to -1.0
tArray<bool> tasks_done;
- tArray<bool> tasks_quality;
+ tArray<double> tasks_quality;
tArray<bool> receive_tasks_done;
tArray<bool> send_tasks_done;
tArray<bool> reactions_triggered;
@@ -42,7 +42,7 @@
void Produce(int id, double num);
void Detect(int id, double num);
void Lethal(bool flag);
- void MarkTask(int id, const double quality=1);
+ void MarkTask(int id, double quality=1);
void MarkReceiveTask(int id);
void MarkSendTask(int id);
void MarkReaction(int id);
Modified: trunk/source/main/cStats.cc
===================================================================
--- trunk/source/main/cStats.cc 2006-02-06 20:18:42 UTC (rev 468)
+++ trunk/source/main/cStats.cc 2006-02-07 16:56:44 UTC (rev 469)
@@ -101,9 +101,13 @@
task_cur_count.Resize( cConfig::GetNumTasks() );
task_last_count.Resize( cConfig::GetNumTasks() );
+ task_cur_quality.Resize( cConfig::GetNumTasks() );
+ task_last_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_exe_count.SetAll(0);
#ifdef INSTRUCTION_COUNT
@@ -235,6 +239,8 @@
for( int i=0; i < task_cur_count.GetSize(); i++ ){
task_cur_count[i] = 0;
task_last_count[i] = 0;
+ task_cur_quality[i] = 0;
+ task_last_quality[i] = 0;
}
}
@@ -392,6 +398,8 @@
task_cur_count.SetAll(0);
task_last_count.SetAll(0);
+ task_cur_quality.SetAll(0);
+ task_last_quality.SetAll(0);
task_exe_count.SetAll(0);
dom_merit = 0;
@@ -651,13 +659,18 @@
df.WriteComment( "Avida tasks data" );
df.WriteTimeStamp();
- df.WriteComment( "First column gives the current update, all further columns give the number" );
- df.WriteComment( "of organisms that have the particular task as a component of the merit." );
+ 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" );
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();
}
Modified: trunk/source/main/cStats.h
===================================================================
--- trunk/source/main/cStats.h 2006-02-06 20:18:42 UTC (rev 468)
+++ trunk/source/main/cStats.h 2006-02-07 16:56:44 UTC (rev 469)
@@ -221,6 +221,8 @@
tArray<int> task_cur_count;
tArray<int> task_last_count;
+ tArray<double> task_cur_quality;
+ tArray<double> task_last_quality;
tArray<int> task_exe_count;
tArray<double> reaction_count;
@@ -444,7 +446,9 @@
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 AddLastTask(int task_num) { task_last_count[task_num]++; }
+ void AddLastTaskQuality(int task_num, double quality) { task_last_quality[task_num] += quality; }
void IncTaskExeCount(int task_num, int task_count)
{ task_exe_count[task_num] += task_count; }
void ZeroTasks();
@@ -492,6 +496,8 @@
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];}
int GetTaskExeCount(int task_num) const { return task_exe_count[task_num]; }
const tArray<double> & GetReactions() const { return reaction_count; }
Modified: trunk/source/main/cTaskLib.cc
===================================================================
--- trunk/source/main/cTaskLib.cc 2006-02-06 20:18:42 UTC (rev 468)
+++ trunk/source/main/cTaskLib.cc 2006-02-07 16:56:44 UTC (rev 469)
@@ -1699,13 +1699,12 @@
if (num_matched > max_num_matched)
max_num_matched = num_matched;
//}
+ output_buffer.Add(1234);
- // return # of bits matched over the expected 50% that would match just by chance
- // this value is multiplied into the bonus
- int bonus = max_num_matched - string_to_match.GetSize()/2;
- if (bonus < 0)
- bonus = 0;
- return (double) bonus;
+
+ // return value between 0 & 1 representing the percentage of string that was matched
+ double bonus = pow((double(max_num_matched*2)/(double)string_to_match.GetSize()),2);
+ return bonus;
}
double cTaskLib::Task_CommEcho() const
More information about the Avida-cvs
mailing list