[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