[Avida-SVN] r2965 - development/source/main
beckma24 at myxo.css.msu.edu
beckma24 at myxo.css.msu.edu
Mon Nov 24 11:32:46 PST 2008
Author: beckma24
Date: 2008-11-24 14:32:46 -0500 (Mon, 24 Nov 2008)
New Revision: 2965
Modified:
development/source/main/cPopulation.cc
Log:
reordered deme resource resetting and replaced test
Modified: development/source/main/cPopulation.cc
===================================================================
--- development/source/main/cPopulation.cc 2008-11-24 13:17:15 UTC (rev 2964)
+++ development/source/main/cPopulation.cc 2008-11-24 19:32:46 UTC (rev 2965)
@@ -1403,6 +1403,40 @@
bool target_successfully_seeded = true;
+
+ bool source_deme_resource_reset(true), target_deme_resource_reset(true);
+ switch(m_world->GetConfig().DEMES_RESET_RESOURCES.Get()) {
+ case 0:
+ // reset resource in both demes
+ source_deme_resource_reset = target_deme_resource_reset = true;
+ break;
+ case 1:
+ // reset resource only in target deme
+ source_deme_resource_reset = false;
+ target_deme_resource_reset = true;
+ break;
+ case 2:
+ // do not reset either deme resource
+ source_deme_resource_reset = target_deme_resource_reset = false;
+ break;
+ default:
+ cout << "Undefined value " << m_world->GetConfig().DEMES_RESET_RESOURCES.Get() << " for DEMES_RESET_RESOURCES\n";
+ exit(1);
+ }
+
+ // Reset both demes, in case they have any cleanup work to do.
+ // Must reset target first for stats to be correctly updated!
+ if(m_world->GetConfig().ENERGY_ENABLED.Get()) {
+ // Transfer energy from source to target if we're using the energy model.
+ if (target_successfully_seeded) target_deme.DivideReset(source_deme, target_deme_resource_reset, offspring_deme_energy);
+ source_deme.DivideReset(source_deme, source_deme_resource_reset, parent_deme_energy);
+ } else {
+ // Default; reset both source and target.
+ if (target_successfully_seeded) target_deme.DivideReset(source_deme, target_deme_resource_reset);
+ source_deme.DivideReset(source_deme, source_deme_resource_reset);
+ }
+
+
// Are we using germlines? If so, we need to mutate the germline to get the
// genome that we're going to seed the target with.
if(m_world->GetConfig().DEMES_USE_GERMLINE.Get() == 1) {
@@ -1498,7 +1532,7 @@
// to rotate its heritable merit to its current merit.
if (target_successfully_seeded) target_deme.UpdateDemeMerit(source_deme);
source_deme.UpdateDemeMerit();
-
+ /*
bool source_deme_resource_reset(true), target_deme_resource_reset(true);
switch(m_world->GetConfig().DEMES_RESET_RESOURCES.Get()) {
case 0:
@@ -1518,7 +1552,7 @@
cout << "Undefined value " << m_world->GetConfig().DEMES_RESET_RESOURCES.Get() << " for DEMES_RESET_RESOURCES\n";
exit(1);
}
-
+
// Reset both demes, in case they have any cleanup work to do.
// Must reset target first for stats to be correctly updated!
if(m_world->GetConfig().ENERGY_ENABLED.Get()) {
@@ -1530,8 +1564,8 @@
if (target_successfully_seeded) target_deme.DivideReset(source_deme, target_deme_resource_reset);
source_deme.DivideReset(source_deme, source_deme_resource_reset);
}
+ */
-
// do our post-replication stats tracking.
m_world->GetStats().DemePostReplication(source_deme, target_deme);
}
More information about the Avida-cvs
mailing list