[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