[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