[Avida-SVN] r1830 - branches/energy_dev/source/main
beckma24 at myxo.css.msu.edu
beckma24 at myxo.css.msu.edu
Thu Jul 19 13:25:54 PDT 2007
Author: beckma24
Date: 2007-07-19 16:25:54 -0400 (Thu, 19 Jul 2007)
New Revision: 1830
Modified:
branches/energy_dev/source/main/cBirthChamber.cc
Log:
Added energy model to sexual reproduction
Modified: branches/energy_dev/source/main/cBirthChamber.cc
===================================================================
--- branches/energy_dev/source/main/cBirthChamber.cc 2007-07-19 20:11:11 UTC (rev 1829)
+++ branches/energy_dev/source/main/cBirthChamber.cc 2007-07-19 20:25:54 UTC (rev 1830)
@@ -229,7 +229,12 @@
cGenotype * parent_genotype = parent.GetGenotype();
parent_genotype->IncDeferAdjust();
size_wait_entry[child_length].genome = child_genome;
- size_wait_entry[child_length].merit = parent.GetPhenotype().GetMerit();
+ if(m_world->GetConfig().ENERGY_ENABLED.Get() == 1) {
+ size_wait_entry[child_length].energy4Offspring = parent.GetPhenotype().ExtractParentEnergy();
+ size_wait_entry[child_length].merit.EnergyToMerit(size_wait_entry[child_length].energy4Offspring, m_world);
+ } else {
+ size_wait_entry[child_length].merit = parent.GetPhenotype().GetMerit();
+ }
size_wait_entry[child_length].parent_genotype = parent_genotype;
size_wait_entry[child_length].update_in = m_world->GetStats().GetUpdate();
return NULL;
@@ -253,7 +258,12 @@
cGenotype * parent_genotype = parent.GetGenotype();
parent_genotype->IncDeferAdjust();
mate_select_wait_entry[mate_id].genome = child_genome;
- mate_select_wait_entry[mate_id].merit = parent.GetPhenotype().GetMerit();
+ if(m_world->GetConfig().ENERGY_ENABLED.Get() == 1) {
+ mate_select_wait_entry[mate_id].energy4Offspring = parent.GetPhenotype().ExtractParentEnergy();
+ mate_select_wait_entry[mate_id].merit.EnergyToMerit(mate_select_wait_entry[mate_id].energy4Offspring, m_world);
+ } else {
+ mate_select_wait_entry[mate_id].merit = parent.GetPhenotype().GetMerit();
+ }
mate_select_wait_entry[mate_id].parent_genotype = parent_genotype;
mate_select_wait_entry[mate_id].update_in = m_world->GetStats().GetUpdate();
return NULL;
@@ -276,7 +286,12 @@
cGenotype * parent_genotype = parent.GetGenotype();
parent_genotype->IncDeferAdjust();
local_wait_entry[parent_id].genome = child_genome;
- local_wait_entry[parent_id].merit = parent.GetPhenotype().GetMerit();
+ if(m_world->GetConfig().ENERGY_ENABLED.Get() == 1) {
+ local_wait_entry[parent_id].energy4Offspring = parent.GetPhenotype().ExtractParentEnergy();
+ local_wait_entry[parent_id].merit.EnergyToMerit(local_wait_entry[parent_id].energy4Offspring, m_world);
+ } else {
+ local_wait_entry[parent_id].merit = parent.GetPhenotype().GetMerit();
+ }
local_wait_entry[parent_id].parent_genotype = parent_genotype;
local_wait_entry[parent_id].update_in = m_world->GetStats().GetUpdate();
return NULL;
@@ -302,7 +317,12 @@
cGenotype * parent_genotype = parent.GetGenotype();
parent_genotype->IncDeferAdjust();
deme_wait_entry[parent_deme].genome = child_genome;
- deme_wait_entry[parent_deme].merit = parent.GetPhenotype().GetMerit();
+ if(m_world->GetConfig().ENERGY_ENABLED.Get() == 1) {
+ deme_wait_entry[parent_deme].energy4Offspring = parent.GetPhenotype().ExtractParentEnergy();
+ deme_wait_entry[parent_deme].merit.EnergyToMerit(deme_wait_entry[parent_deme].energy4Offspring, m_world);
+ } else {
+ deme_wait_entry[parent_deme].merit = parent.GetPhenotype().GetMerit();
+ }
deme_wait_entry[parent_deme].parent_genotype = parent_genotype;
deme_wait_entry[parent_deme].update_in = m_world->GetStats().GetUpdate();
return NULL;
@@ -319,8 +339,13 @@
if ( EvaluateEntry(global_wait_entry) == false ) {
cGenotype * parent_genotype = parent.GetGenotype();
parent_genotype->IncDeferAdjust();
- global_wait_entry.genome = child_genome;
- global_wait_entry.merit = parent.GetPhenotype().GetMerit();
+ global_wait_entry.genome = child_genome;
+ if(m_world->GetConfig().ENERGY_ENABLED.Get() == 1) {
+ global_wait_entry.energy4Offspring = parent.GetPhenotype().ExtractParentEnergy();
+ global_wait_entry.merit.EnergyToMerit(global_wait_entry.energy4Offspring, m_world);
+ } else {
+ global_wait_entry.merit = parent.GetPhenotype().GetMerit();
+ }
global_wait_entry.parent_genotype = parent_genotype;
global_wait_entry.update_in = m_world->GetStats().GetUpdate();
return NULL;
@@ -611,8 +636,8 @@
if(m_world->GetConfig().ENERGY_ENABLED.Get() == 1) {
child_array[0]->GetPhenotype().SetEnergy(meritOrEnergy0);
child_array[1]->GetPhenotype().SetEnergy(meritOrEnergy1);
- meritOrEnergy0 = cMerit::EnergyToMerit(meritOrEnergy0, m_world);
- meritOrEnergy1 = cMerit::EnergyToMerit(meritOrEnergy1, m_world);
+ meritOrEnergy0 = cMerit::EnergyToMerit(child_array[0]->GetPhenotype().GetStoredEnergy(), m_world);
+ meritOrEnergy1 = cMerit::EnergyToMerit(child_array[1]->GetPhenotype().GetStoredEnergy(), m_world);
}
merit_array.Resize(2);
@@ -632,7 +657,7 @@
child_array[0] = new cOrganism(m_world, ctx, genome0);
if(m_world->GetConfig().ENERGY_ENABLED.Get() == 1) {
child_array[0]->GetPhenotype().SetEnergy(meritOrEnergy0);
- meritOrEnergy0 = cMerit::EnergyToMerit(meritOrEnergy0, m_world);
+ meritOrEnergy0 = cMerit::EnergyToMerit(child_array[0]->GetPhenotype().GetStoredEnergy(), m_world);
}
merit_array[0] = meritOrEnergy0;
@@ -643,7 +668,7 @@
child_array[0] = new cOrganism(m_world, ctx, genome1);
if(m_world->GetConfig().ENERGY_ENABLED.Get() == 1) {
child_array[0]->GetPhenotype().SetEnergy(meritOrEnergy1);
- meritOrEnergy1 = cMerit::EnergyToMerit(meritOrEnergy1, m_world);
+ meritOrEnergy1 = cMerit::EnergyToMerit(child_array[1]->GetPhenotype().GetStoredEnergy(), m_world);
}
merit_array[0] = meritOrEnergy1;
More information about the Avida-cvs
mailing list