[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