[Avida-SVN] r3091 - in branches/hjg-dev/source: cpu main
hjg at myxo.css.msu.edu
hjg at myxo.css.msu.edu
Mon Jan 5 09:10:47 PST 2009
Author: hjg
Date: 2009-01-05 12:10:47 -0500 (Mon, 05 Jan 2009)
New Revision: 3091
Modified:
branches/hjg-dev/source/cpu/cHardwareCPU.cc
branches/hjg-dev/source/main/cOrganism.cc
branches/hjg-dev/source/main/cTaskLib.cc
branches/hjg-dev/source/main/cTaskLib.h
Log:
Modified: branches/hjg-dev/source/cpu/cHardwareCPU.cc
===================================================================
--- branches/hjg-dev/source/cpu/cHardwareCPU.cc 2009-01-05 00:15:12 UTC (rev 3090)
+++ branches/hjg-dev/source/cpu/cHardwareCPU.cc 2009-01-05 17:10:47 UTC (rev 3091)
@@ -7456,7 +7456,7 @@
organism->AddSelfRawMaterials(1);
// Clear buffer if the organism has received credit for the string
- //if (val) organism->SetOutputNegative1();
+ if (val) organism->SetOutputNegative1();
}
/*
Modified: branches/hjg-dev/source/main/cOrganism.cc
===================================================================
--- branches/hjg-dev/source/main/cOrganism.cc 2009-01-05 00:15:12 UTC (rev 3090)
+++ branches/hjg-dev/source/main/cOrganism.cc 2009-01-05 17:10:47 UTC (rev 3091)
@@ -889,11 +889,14 @@
of bits is > than the old tag, update.*/
void cOrganism::UpdateTag(int new_tag, int bits)
{
+ unsigned int rand_int = m_world->GetRandom().GetUInt(0, 2);
if ((m_tag.first == -1) ||
(m_tag.first == new_tag) ||
(m_tag.second < bits)) {
m_tag = make_pair(new_tag, bits);
- }
+ } else if ((m_tag.second == bits) && rand_int){
+ m_tag = make_pair(new_tag, bits);
+ }
}
Modified: branches/hjg-dev/source/main/cTaskLib.cc
===================================================================
--- branches/hjg-dev/source/main/cTaskLib.cc 2009-01-05 00:15:12 UTC (rev 3090)
+++ branches/hjg-dev/source/main/cTaskLib.cc 2009-01-05 17:10:47 UTC (rev 3091)
@@ -433,12 +433,11 @@
NewTask(name, "Produce and store strings", &cTaskLib::Task_StoreStrings);
else if(name == "perfect_strings")
NewTask(name, "Produce and store perfect strings", &cTaskLib::Task_CreatePerfectStrings);
- if (name == "prodstr")
- Load_ProduceStr(name, info, envreqs, errors);
+
// event tasks
if(name == "move_to_event")
NewTask(name, "Moved into cell containing event", &cTaskLib::Task_MoveToEvent);
@@ -3241,14 +3240,14 @@
// Bonus for creating perfect strings!
bonus = min;
-/* // Add in some value for just creating stuff
+ // Add in some value for just creating stuff
for (unsigned int i = 0; i<m_strings.size(); i++) {
temp = ctx.GetOrganism()->GetNumberStringsOnHand(i);
if (temp > min) {
bonus += (temp - min);
}
- } */
+ }
// Update stats
m_world->GetStats().IncPerfectMatch(min);
@@ -3256,51 +3255,3 @@
return bonus;
}
-
-void cTaskLib::Load_ProduceStr(const cString& name, const cString& argstr, cEnvReqs& envreqs, tList<cString>* errors)
-{
- cArgSchema schema;
- schema.AddEntry("tag",0,-1);
- cArgContainer* args = cArgContainer::Load(argstr, schema, errors);
- if (args) NewTask(name, "ProduceString", &cTaskLib::Task_ProduceStr, 0, args);
-}
-
-/* Note that this string requires a CAP.*/
-double cTaskLib::Task_ProduceStr(cTaskContext& ctx) const {
- double bonus = 0.0;
- int temp = 0;
- int tag = ctx.GetTaskEntry()->GetArguments().GetInt(0);
-
-/* for (unsigned int i = 0; i<m_strings.size(); i++) {
- temp = ctx.GetOrganism()->GetNumberStringsOnHand(i);
-
- // Figure out what the minimum amount of a string is.
- if ((min == -1) || (temp < min)){
- min = temp;
- }
- }
-
- // Double bonus for creating perfect strings!
- //bonus = min * 4;
-
- // Add in some value for just creating stuff
- for (unsigned int i = 0; i<m_strings.size(); i++) {
- temp = ctx.GetOrganism()->GetNumberStringsOnHand(i);
-
- if (temp > min) {
- bonus += (temp - min);
- }
- }
-
- // Update stats
- /*m_world->GetStats().IncPerfectMatch(min);
- if (min > 0) m_world->GetStats().IncPerfectMatchOrg(); */
-
- temp = ctx.GetOrganism()->GetNumberStringsProduced(tag);
-/* if (temp > m_world->GetConfig().STRING_AMOUNT_CAP.Get()) {
- temp = m_world->GetConfig().STRING_AMOUNT_CAP.Get();
- }*/
- bonus = (double)temp / m_world->GetConfig().STRING_AMOUNT_CAP.Get();
-
- return bonus;
-}
\ No newline at end of file
Modified: branches/hjg-dev/source/main/cTaskLib.h
===================================================================
--- branches/hjg-dev/source/main/cTaskLib.h 2009-01-05 00:15:12 UTC (rev 3090)
+++ branches/hjg-dev/source/main/cTaskLib.h 2009-01-05 17:10:47 UTC (rev 3091)
@@ -315,8 +315,7 @@
double Task_SaveRawMaterials(cTaskContext& ctx) const;
double Task_StoreStrings(cTaskContext& ctx) const;
double Task_CreatePerfectStrings(cTaskContext& ctx) const;
- void Load_ProduceStr(const cString& name, const cString& argstr, cEnvReqs& envreqs, tList<cString>* errors);
- double Task_ProduceStr(cTaskContext& ctx) const;
+
};
More information about the Avida-cvs
mailing list