[Avida-cvs] [avida-svn] r897 - in development/source: cpu main
ofria at myxo.css.msu.edu
ofria at myxo.css.msu.edu
Fri Aug 25 13:39:41 PDT 2006
Author: ofria
Date: 2006-08-25 16:39:41 -0400 (Fri, 25 Aug 2006)
New Revision: 897
Modified:
development/source/cpu/cHardwareCPU.cc
development/source/cpu/cHardwareCPU.h
development/source/cpu/cTestCPUInterface.cc
development/source/cpu/cTestCPUInterface.h
development/source/main/cOrgInterface.h
development/source/main/cOrganism.h
development/source/main/cPopulation.cc
development/source/main/cPopulation.h
development/source/main/cPopulationInterface.cc
development/source/main/cPopulationInterface.h
Log:
Cleaned up kazi/kaboom code.
Modified: development/source/cpu/cHardwareCPU.cc
===================================================================
--- development/source/cpu/cHardwareCPU.cc 2006-08-25 18:45:59 UTC (rev 896)
+++ development/source/cpu/cHardwareCPU.cc 2006-08-25 20:39:41 UTC (rev 897)
@@ -329,6 +329,7 @@
// Suicide
cInstEntryCPU("kazi", &cHardwareCPU::Inst_Kazi),
+ cInstEntryCPU("kazi5", &cHardwareCPU::Inst_Kazi5),
cInstEntryCPU("die", &cHardwareCPU::Inst_Die),
@@ -2101,20 +2102,20 @@
bool cHardwareCPU::Inst_Kazi(cAvidaContext& ctx)
{
- const int reg_used = FindModifiedRegister(nHardwareCPU::REG_AX);
- int percentProb = GetRegister(reg_used) % 100;
- int random = abs(rand()) % 100;
- if (random >= percentProb)
- {
- return true;
- }
- else
- {
- organism->Kaboom();
- return true;
- }
+ const int reg_used = FindModifiedRegister(nHardwareCPU::REG_AX);
+ double percentProb = ((double) (GetRegister(reg_used) % 100)) / 100.0;
+ if ( ctx.GetRandom().P(percentProb) ) organism->Kaboom(0);
+ return true;
}
+bool cHardwareCPU::Inst_Kazi5(cAvidaContext& ctx)
+{
+ const int reg_used = FindModifiedRegister(nHardwareCPU::REG_AX);
+ double percentProb = ((double) (GetRegister(reg_used) % 100)) / 100.0;
+ if ( ctx.GetRandom().P(percentProb) ) organism->Kaboom(0);
+ return true;
+}
+
bool cHardwareCPU::Inst_Die(cAvidaContext& ctx)
{
const double die_prob = m_world->GetConfig().DIE_PROB.Get();
Modified: development/source/cpu/cHardwareCPU.h
===================================================================
--- development/source/cpu/cHardwareCPU.h 2006-08-25 18:45:59 UTC (rev 896)
+++ development/source/cpu/cHardwareCPU.h 2006-08-25 20:39:41 UTC (rev 897)
@@ -336,6 +336,7 @@
bool Inst_InjectThread(cAvidaContext& ctx);
bool Inst_Repro(cAvidaContext& ctx);
bool Inst_Kazi(cAvidaContext& ctx);
+ bool Inst_Kazi5(cAvidaContext& ctx);
bool Inst_Die(cAvidaContext& ctx);
// I/O and Sensory
Modified: development/source/cpu/cTestCPUInterface.cc
===================================================================
--- development/source/cpu/cTestCPUInterface.cc 2006-08-25 18:45:59 UTC (rev 896)
+++ development/source/cpu/cTestCPUInterface.cc 2006-08-25 20:39:41 UTC (rev 897)
@@ -64,8 +64,11 @@
{
}
-void cTestCPUInterface::Kaboom()
+void cTestCPUInterface::Kaboom(int distance)
{
+ (void) distance;
+ // @CAO We should keep a note that the organism tried to explode, and
+ // record the probability it used.
}
bool cTestCPUInterface::SendMessage(cOrgMessage& mess)
Modified: development/source/cpu/cTestCPUInterface.h
===================================================================
--- development/source/cpu/cTestCPUInterface.h 2006-08-25 18:45:59 UTC (rev 896)
+++ development/source/cpu/cTestCPUInterface.h 2006-08-25 20:39:41 UTC (rev 897)
@@ -43,7 +43,7 @@
const tArray<double>& GetResources();
void UpdateResources(const tArray<double>& res_change);
void Die();
- void Kaboom();
+ void Kaboom(int distance);
bool SendMessage(cOrgMessage& mess);
cOrgSinkMessage* NetReceive() { return NULL; } // @DMB - todo: receive message
bool NetRemoteValidate(cAvidaContext& ctx, cOrgSinkMessage* msg) { return false; } // @DMB - todo: validate message
Modified: development/source/main/cOrgInterface.h
===================================================================
--- development/source/main/cOrgInterface.h 2006-08-25 18:45:59 UTC (rev 896)
+++ development/source/main/cOrgInterface.h 2006-08-25 20:39:41 UTC (rev 897)
@@ -43,7 +43,7 @@
virtual const tArray<double>& GetResources() = 0;
virtual void UpdateResources(const tArray<double>& res_change) = 0;
virtual void Die() = 0;
- virtual void Kaboom() = 0;
+ virtual void Kaboom(int distance) = 0;
virtual bool SendMessage(cOrgMessage& mess) = 0;
virtual cOrgSinkMessage* NetReceive() = 0;
virtual bool NetRemoteValidate(cAvidaContext& ctx, cOrgSinkMessage* msg) = 0;
Modified: development/source/main/cOrganism.h
===================================================================
--- development/source/main/cOrganism.h 2006-08-25 18:45:59 UTC (rev 896)
+++ development/source/main/cOrganism.h 2006-08-25 20:39:41 UTC (rev 897)
@@ -141,7 +141,7 @@
void DoBreakpoint() { assert(m_interface); m_interface->Breakpoint(); }
int GetNextInput() { assert(m_interface); return m_interface->GetInputAt(input_pointer); }
void Die() { assert(m_interface); m_interface->Die(); }
- void Kaboom() { assert(m_interface); m_interface->Kaboom();}
+ void Kaboom(int dist) { assert(m_interface); m_interface->Kaboom(dist);}
int GetCellID() { assert(m_interface); return m_interface->GetCellID(); }
int GetDebugInfo() { assert(m_interface); return m_interface->Debug(); }
Modified: development/source/main/cPopulation.cc
===================================================================
--- development/source/main/cPopulation.cc 2006-08-25 18:45:59 UTC (rev 896)
+++ development/source/main/cPopulation.cc 2006-08-25 20:39:41 UTC (rev 897)
@@ -481,15 +481,14 @@
m_world->GetClassificationManager().AdjustGenotype(*genotype);
}
-void cPopulation::Kaboom(cPopulationCell & in_cell)
+void cPopulation::Kaboom(cPopulationCell & in_cell, int distance)
{
cOrganism * organism = in_cell.GetOrganism();
cGenotype * genotype = organism->GetGenotype();
cGenome genome = genotype->GetGenome();
int id = genotype->GetID();
- int radius = 2;
- int distance = 0;
+ int radius = 1;
int count = 0;
for (int i=-1*radius; i<=radius; i++) {
Modified: development/source/main/cPopulation.h
===================================================================
--- development/source/main/cPopulation.h 2006-08-25 18:45:59 UTC (rev 896)
+++ development/source/main/cPopulation.h 2006-08-25 20:39:41 UTC (rev 897)
@@ -128,7 +128,7 @@
// Deactivate an organism in the population (required for deactivations)
void KillOrganism(cPopulationCell& in_cell);
- void Kaboom(cPopulationCell& in_cell);
+ void Kaboom(cPopulationCell& in_cell, int distance=0);
// Deme-related methods
void CompeteDemes(int competition_type);
Modified: development/source/main/cPopulationInterface.cc
===================================================================
--- development/source/main/cPopulationInterface.cc 2006-08-25 18:45:59 UTC (rev 896)
+++ development/source/main/cPopulationInterface.cc 2006-08-25 20:39:41 UTC (rev 897)
@@ -96,10 +96,10 @@
m_world->GetPopulation().KillOrganism(cell);
}
-void cPopulationInterface::Kaboom()
+void cPopulationInterface::Kaboom(int distance)
{
cPopulationCell & cell = m_world->GetPopulation().GetCell(m_cell_id);
- m_world->GetPopulation().Kaboom(cell);
+ m_world->GetPopulation().Kaboom(cell, distance);
}
bool cPopulationInterface::SendMessage(cOrgMessage & mess)
Modified: development/source/main/cPopulationInterface.h
===================================================================
--- development/source/main/cPopulationInterface.h 2006-08-25 18:45:59 UTC (rev 896)
+++ development/source/main/cPopulationInterface.h 2006-08-25 20:39:41 UTC (rev 897)
@@ -52,7 +52,7 @@
const tArray<double>& GetResources();
void UpdateResources(const tArray<double>& res_change);
void Die();
- void Kaboom();
+ void Kaboom(int distance);
bool SendMessage(cOrgMessage& mess);
cOrgSinkMessage* NetReceive();
bool NetRemoteValidate(cAvidaContext& ctx, cOrgSinkMessage* msg);
More information about the Avida-cvs
mailing list