[Avida-SVN] r1360 - in branches/energy/source: cpu main

beckma24 at myxo.css.msu.edu beckma24 at myxo.css.msu.edu
Wed Feb 21 07:18:37 PST 2007


Author: beckma24
Date: 2007-02-21 10:18:36 -0500 (Wed, 21 Feb 2007)
New Revision: 1360

Modified:
   branches/energy/source/cpu/cHardwareCPU.cc
   branches/energy/source/main/cEnvironment.cc
   branches/energy/source/main/cPhenotype.cc
   branches/energy/source/main/cPhenotype.h
Log:
Missed some files. Energy is adjusted when required.  Still don't know how to adjust the merit.

Modified: branches/energy/source/cpu/cHardwareCPU.cc
===================================================================
--- branches/energy/source/cpu/cHardwareCPU.cc	2007-02-21 15:16:02 UTC (rev 1359)
+++ branches/energy/source/cpu/cHardwareCPU.cc	2007-02-21 15:18:36 UTC (rev 1360)
@@ -518,13 +518,16 @@
 #if INSTRUCTION_COSTS
   assert(cur_inst.GetOp() < inst_cost.GetSize());
   
-  // check energy first
-  if(m_inst_set->GetEnergyCost(cur_inst) > 0) {
-    //TODO:
-    if(enough energy) {
-      subtract energy used from current energy.
-    } else
-      return false;  // not enough energy
+  // check avaliable energy first
+  int energy_req = m_inst_set->GetEnergyCost(cur_inst);
+  if(energy_req > 0) {
+    if(organism->GetPhenotype().GetStoredEnergy() >= energy_req) {
+      //subtract energy used from current energy.
+      organism->GetPhenotype().ReduceEnergy(energy_req);
+    } else {
+      // not enough energy
+      return false;
+    }
   }
   
   

Modified: branches/energy/source/main/cEnvironment.cc
===================================================================
--- branches/energy/source/main/cEnvironment.cc	2007-02-21 15:16:02 UTC (rev 1359)
+++ branches/energy/source/main/cEnvironment.cc	2007-02-21 15:18:36 UTC (rev 1360)
@@ -974,7 +974,7 @@
         result.AddBonus( bonus * task_count);
         break;
       case nReaction::PROCTYPE_ENERGY:
-        result.AddEnergy( bonus * task_count);
+        result.AddEnergy(bonus);
         break;
         
       default:

Modified: branches/energy/source/main/cPhenotype.cc
===================================================================
--- branches/energy/source/main/cPhenotype.cc	2007-02-21 15:16:02 UTC (rev 1359)
+++ branches/energy/source/main/cPhenotype.cc	2007-02-21 15:18:36 UTC (rev 1360)
@@ -289,11 +289,12 @@
     merit = cur_merit_base * cur_bonus;
   }
   
-  double init_energy_give = m_world->GetConfig().INITITAL_ENERGY_GIVEN.Get()
+/*  double init_energy_give = m_world->GetConfig().INITITAL_ENERGY_GIVEN.Get()
   if(init_energy_give >= 0.0) {  
-    // adjust energy and merit
-    energy_store = cur_energy + init_energy_give;
-  }
+    // adjust energy
+    TODO : offspring energy depends on config file.
+    energy_store = cur_energy_bonus + init_energy_give;
+  }*/
   
   genome_length   = _length;
   (void) copied_size;          // Unchanged
@@ -305,7 +306,7 @@
   // Lock in cur values as last values.
   last_merit_base     = cur_merit_base;
   last_bonus          = cur_bonus;
-  last_energy         = cur_energy;
+  last_energy         = cur_energy_bonus;
   last_num_errors     = cur_num_errors;
   last_num_donates    = cur_num_donates;
   last_task_count     = cur_task_count;
@@ -316,7 +317,7 @@
 
   // Reset cur values.
   cur_bonus       = m_world->GetConfig().DEFAULT_BONUS.Get();
-  cur_energy      = 0.0;
+  cur_energy_bonus = 0.0;
   cur_num_errors  = 0;
   cur_num_donates  = 0;
   cur_task_count.SetAll(0);
@@ -599,7 +600,7 @@
   cur_bonus += result.GetAddBonus();
   
   // Update the energy bonus
-  cur_energy += result.GetAddEnergy()
+  cur_energy_bonus += result.GetAddEnergy()
   
   // Denote consumed resources...
   for (int i = 0; i < res_in.GetSize(); i++) {

Modified: branches/energy/source/main/cPhenotype.h
===================================================================
--- branches/energy/source/main/cPhenotype.h	2007-02-21 15:16:02 UTC (rev 1359)
+++ branches/energy/source/main/cPhenotype.h	2007-02-21 15:18:36 UTC (rev 1360)
@@ -99,7 +99,7 @@
 
   // 2. These are "in progress" variables, updated as the organism operates
   double cur_bonus;               // Current Bonus
-  double cur_energy;              // Current energy bonus
+  double cur_energy_bonus;              // Current energy bonus
   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
@@ -114,7 +114,7 @@
   // 3. These mark the status of "in progess" variables at the last divide.
   double last_merit_base;         // Either constant or based on genome length.
   double last_bonus;
-  double last_energy;
+  double last_energy_bonus;
   int last_num_errors;
   int last_num_donates;
   tArray<int> last_task_count;
@@ -219,6 +219,8 @@
 
   double GetCurBonus() const { assert(initialized == true); return cur_bonus; }
   double GetCurMeritBase() const { assert(initialized == true); return CalcSizeMerit(); }
+  double GetStoredEnergy() const { assert(initialized == true); return energy_store; }
+  
   bool GetToDie() const { assert(initialized == true); return to_die; }
   bool GetToDelete() const { assert(initialized == true); return to_delete; }
   int GetCurNumErrors() const { assert(initialized == true); return cur_num_errors; }
@@ -276,6 +278,7 @@
 
   ////////////////////  Accessors -- Modifying  ///////////////////
   void SetMerit(const cMerit& in_merit) { merit = in_merit; }
+  void ReduceEnergy(const int cost) { energy_store -= cost; }
   void SetGestationTime(int in_time) { gestation_time = in_time; }
   void SetTimeUsed(int in_time) { time_used = in_time; }
   void SetFault(const cString& in_fault) { fault_desc = in_fault; }




More information about the Avida-cvs mailing list