[Avida-SVN] r3158 - in development/source: cpu main

connel42 at myxo.css.msu.edu connel42 at myxo.css.msu.edu
Mon Feb 23 07:56:48 PST 2009


Author: connel42
Date: 2009-02-23 10:56:48 -0500 (Mon, 23 Feb 2009)
New Revision: 3158

Modified:
   development/source/cpu/cHardwareCPU.cc
   development/source/main/cAvidaConfig.h
Log:
added logging for energy donations

Modified: development/source/cpu/cHardwareCPU.cc
===================================================================
--- development/source/cpu/cHardwareCPU.cc	2009-02-23 02:18:40 UTC (rev 3157)
+++ development/source/cpu/cHardwareCPU.cc	2009-02-23 15:56:48 UTC (rev 3158)
@@ -3693,6 +3693,7 @@
   
   const int update_metabolic = m_world->GetConfig().ENERGY_SHARING_UPDATE_METABOLIC.Get();
   double energy_given = min(m_organism->GetPhenotype().GetStoredEnergy(), amount);
+  double energy_received;
   
   //update energy store and merit of donor
   m_organism->GetPhenotype().ReduceEnergy(energy_given);
@@ -3708,11 +3709,11 @@
   }
   
   //apply loss in transfer
-  energy_given *= (1 - losspct);
+  energy_received = energy_given * (1 - losspct);
   
   //place energy into receiver's incoming energy buffer
-  to_org->GetPhenotype().ReceiveDonatedEnergy(energy_given);
-  to_org->GetDeme()->IncreaseEnergyReceived(energy_given);   // Harder for phenotype to get the deme, so it's done here
+  to_org->GetPhenotype().ReceiveDonatedEnergy(energy_received);
+  to_org->GetDeme()->IncreaseEnergyReceived(energy_received);   // Harder for phenotype to get the deme, so it's done here
   
   //if we are using the push energy method, pass the new energy into the receiver's energy store and recalculate merit
   if(m_world->GetConfig().ENERGY_SHARING_METHOD.Get() == 1) {
@@ -3724,6 +3725,24 @@
 	  }
   }
   
+  
+  if(m_world->GetConfig().LOG_ENERGY_SHARING.Get() == 1) {    
+    cString tmpfilename = cStringUtil::Stringf("energy_sharing_log.dat");
+    cDataFile& df = m_world->GetDataFile(tmpfilename);
+    
+    cString UpdateStr = cStringUtil::Stringf("%d,%d,%d,%f,%f,%d,%f,%f", 
+                                             m_world->GetStats().GetUpdate(),
+                                             m_world->GetConfig().ENERGY_SHARING_METHOD.Get(),
+                                             m_organism->GetID(),
+                                             energy_given,
+                                             m_organism->GetPhenotype().GetStoredEnergy(),
+                                             to_org->GetID(),
+                                             energy_received,
+                                             to_org->GetPhenotype().GetStoredEnergy());
+    df.WriteRaw(UpdateStr);
+    
+  }
+  
 } //End DoEnergyDonateAmount()
 
 

Modified: development/source/main/cAvidaConfig.h
===================================================================
--- development/source/main/cAvidaConfig.h	2009-02-23 02:18:40 UTC (rev 3157)
+++ development/source/main/cAvidaConfig.h	2009-02-23 15:56:48 UTC (rev 3158)
@@ -537,6 +537,7 @@
   CONFIG_ADD_VAR(ENERGY_SHARING_INCREMENT, double, 0.01, "Amount to change percent energy shared");
   CONFIG_ADD_VAR(ENERGY_SHARING_LOSS, double, 0.0, "Percent of shared energy lost in transfer");
   CONFIG_ADD_VAR(ENERGY_SHARING_UPDATE_METABOLIC, bool, 0, "0/1 (off/on) - Whether to update an organism's metabolic rate on donate or reception/application of energy");
+  CONFIG_ADD_VAR(LOG_ENERGY_SHARING, bool, 0, "Whether or not to log energy shares.  0/1 (off/on)");
   
   CONFIG_ADD_GROUP(SECOND_PASS_GROUP, "Tracking metrics known after the running experiment previously");
   CONFIG_ADD_VAR(TRACK_CCLADES, int, 0, "Enable tracking of coalescence clades");




More information about the Avida-cvs mailing list