[Avida-SVN] r2025 - in branches/energy: Avida.xcodeproj source/main
beckma24 at myxo.css.msu.edu
beckma24 at myxo.css.msu.edu
Wed Aug 29 06:09:27 PDT 2007
Author: beckma24
Date: 2007-08-29 09:09:27 -0400 (Wed, 29 Aug 2007)
New Revision: 2025
Modified:
branches/energy/Avida.xcodeproj/project.pbxproj
branches/energy/source/main/cAvidaConfig.h
branches/energy/source/main/cPopulation.cc
Log:
Added option to GERMLINE_RANDOM_PLACEMENT that orients organisms that are injected into the middle of the deme
Modified: branches/energy/Avida.xcodeproj/project.pbxproj
===================================================================
--- branches/energy/Avida.xcodeproj/project.pbxproj 2007-08-29 02:12:18 UTC (rev 2024)
+++ branches/energy/Avida.xcodeproj/project.pbxproj 2007-08-29 13:09:27 UTC (rev 2025)
@@ -210,6 +210,23 @@
};
/* End PBXBuildRule section */
+/* Begin PBXBuildStyle section */
+ B515C5FC0C84ADE300DFD6A6 /* Development */ = {
+ isa = PBXBuildStyle;
+ buildSettings = {
+ COPY_PHASE_STRIP = NO;
+ };
+ name = Development;
+ };
+ B515C5FD0C84ADE300DFD6A6 /* Deployment */ = {
+ isa = PBXBuildStyle;
+ buildSettings = {
+ COPY_PHASE_STRIP = YES;
+ };
+ name = Deployment;
+ };
+/* End PBXBuildStyle section */
+
/* Begin PBXContainerItemProxy section */
56F555DA0C3B36FC00E2E929 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
@@ -1769,6 +1786,12 @@
DCC30C4D0762532C008F7A48 /* Project object */ = {
isa = PBXProject;
buildConfigurationList = 702442D70859E0B00059BD9B /* Build configuration list for PBXProject "Avida" */;
+ buildSettings = {
+ };
+ buildStyles = (
+ B515C5FC0C84ADE300DFD6A6 /* Development */,
+ B515C5FD0C84ADE300DFD6A6 /* Deployment */,
+ );
hasScannedForEncodings = 0;
mainGroup = DCC30C490762532C008F7A48;
productRefGroup = DCC3164E07626CF3008F7A48 /* Products */;
Modified: branches/energy/source/main/cAvidaConfig.h
===================================================================
--- branches/energy/source/main/cAvidaConfig.h 2007-08-29 02:12:18 UTC (rev 2024)
+++ branches/energy/source/main/cAvidaConfig.h 2007-08-29 13:09:27 UTC (rev 2025)
@@ -298,7 +298,7 @@
CONFIG_ADD_VAR(DEMES_HAVE_MERIT, int, 0, "Whether demes have merit; 0=no");
CONFIG_ADD_VAR(GERMLINE_COPY_MUT, double, 0.0075, "Prob. of copy mutations occuring during\ngermline replication.");
CONFIG_ADD_VAR(GERMLINE_REPLACES_SOURCE, int, 0, "Whether the source germline is updated\non replication; 0=no.");
- CONFIG_ADD_VAR(GERMLINE_RANDOM_PLACEMENT, int, 0, "Whether the seed for a germline is placed\n randomly within the deme; 0=no.");
+ CONFIG_ADD_VAR(GERMLINE_RANDOM_PLACEMENT, int, 0, "Defines how the seed for a germline is placed\n within the deme;\n0 = organisms is placed in center of deme, no orientation\n1 = organisms is placed in center of deme and oriented\n2 = organism is randomly placed in deme, no orientation");
CONFIG_ADD_VAR(MAX_DEME_AGE, int, 500, "The maximum age of a deme (in updates) to be\nused for age-based replication (default=500).");
CONFIG_ADD_GROUP(REPRODUCTION_GROUP, "Birth and Death");
Modified: branches/energy/source/main/cPopulation.cc
===================================================================
--- branches/energy/source/main/cPopulation.cc 2007-08-29 02:12:18 UTC (rev 2024)
+++ branches/energy/source/main/cPopulation.cc 2007-08-29 13:09:27 UTC (rev 2025)
@@ -1163,18 +1163,33 @@
source_deme.Reset();
target_deme.Reset();
- // Lineage label is wrong here; fix.
- if(m_world->GetConfig().GERMLINE_RANDOM_PLACEMENT.Get()) {
- InjectGenome(source_deme.GetCellID(m_world->GetRandom().GetInt(0, source_deme.GetSize()-1)),
- source_germline.GetLatest(), 0);
- InjectGenome(target_deme.GetCellID(m_world->GetRandom().GetInt(0, target_deme.GetSize()-1)),
- target_germline.GetLatest(), 0);
+ int source_deme_inject_cell;
+ int target_deme_inject_cell;
+
+ if(m_world->GetConfig().GERMLINE_RANDOM_PLACEMENT.Get() == 2) {
+ // organism is randomly placed in deme
+ source_deme_inject_cell = source_deme.GetCellID(m_world->GetRandom().GetInt(0, source_deme.GetSize()-1));
+ target_deme_inject_cell = target_deme.GetCellID(m_world->GetRandom().GetInt(0, target_deme.GetSize()-1));
} else {
- InjectGenome(source_deme.GetCellID(source_deme.GetSize()/2), source_germline.GetLatest(), 0);
- InjectGenome(target_deme.GetCellID(target_deme.GetSize()/2), target_germline.GetLatest(), 0);
+ // organisms is placed in center of deme
+ source_deme_inject_cell = source_deme.GetCellID(source_deme.GetSize()/2);
+ target_deme_inject_cell = target_deme.GetCellID(target_deme.GetSize()/2);
}
+ // Lineage label is wrong here; fix.
+ InjectGenome(source_deme_inject_cell, source_germline.GetLatest(), 0); // source deme
+ InjectGenome(target_deme_inject_cell, target_germline.GetLatest(), 0); // target deme
- // Note: not rotating the clones.
+ if(m_world->GetConfig().GERMLINE_RANDOM_PLACEMENT.Get() == 1) {
+ // Rotate both injected cells to face northwest.
+ int offset = source_deme.GetCellID(0);
+ cell_array[source_deme_inject_cell].Rotate(cell_array[GridNeighbor(source_deme_inject_cell-offset,
+ source_deme.GetWidth(),
+ source_deme.GetHeight(), -1, -1)+offset]);
+ offset = target_deme.GetCellID(0);
+ cell_array[target_deme_inject_cell].Rotate(cell_array[GridNeighbor(target_deme_inject_cell-offset,
+ target_deme.GetWidth(),
+ target_deme.GetHeight(), -1, -1)+offset]);
+ }
} else {
// Not using germline; choose a random organism from this deme.
int cell1_id = -1;
@@ -1187,7 +1202,7 @@
cGenome seed_genome = seed_org->GetGenome();
int seed_lineage = seed_org->GetLineageLabel();
- // Kill all the organisms in the source deme. Orgs. in dest. deme are already killed
+ // Kill all the organisms in the source deme. Orgs. in target deme have already been killed
for (int i=0; i<source_deme.GetSize(); i++) {
KillOrganism(cell_array[source_deme.GetCellID(i)]);
}
@@ -1199,7 +1214,7 @@
int target_deme_inject_cell = target_deme.GetCellID(target_deme.GetSize()/2);
InjectGenome(source_deme_inject_cell, seed_genome, seed_lineage); // source deme
- InjectGenome(target_deme_inject_cell, seed_genome, seed_lineage); // destination deme
+ InjectGenome(target_deme_inject_cell, seed_genome, seed_lineage); // target deme
// Rotate both injected cells to face northwest.
int offset = source_deme.GetCellID(0);
@@ -1238,8 +1253,7 @@
cell_array[cell3_id].Rotate(cell_array[GridNeighbor(cell3_id-offset,
source_deme.GetWidth(),
source_deme.GetHeight(), -1, -1)+offset]);
-
-
+
// This is in the wrong place. Reset should be done after the demes are cleared and before the org. is injected.
source_deme.Reset();
target_deme.Reset();
More information about the Avida-cvs
mailing list