[Avida-SVN] r2432 - in development: Avida.xcodeproj source/main
beckma24 at myxo.css.msu.edu
beckma24 at myxo.css.msu.edu
Fri Mar 7 07:41:09 PST 2008
Author: beckma24
Date: 2008-03-07 10:41:08 -0500 (Fri, 07 Mar 2008)
New Revision: 2432
Modified:
development/Avida.xcodeproj/project.pbxproj
development/source/main/cDeme.cc
development/source/main/cDeme.h
development/source/main/cPopulation.cc
development/source/main/cStats.cc
development/source/main/cStats.h
Log:
Added generation to cDeme
Modified: development/Avida.xcodeproj/project.pbxproj
===================================================================
--- development/Avida.xcodeproj/project.pbxproj 2008-03-07 05:03:09 UTC (rev 2431)
+++ development/Avida.xcodeproj/project.pbxproj 2008-03-07 15:41:08 UTC (rev 2432)
@@ -218,6 +218,23 @@
};
/* End PBXBuildRule section */
+/* Begin PBXBuildStyle section */
+ B51C949C0D6B3FD1004D5839 /* Development */ = {
+ isa = PBXBuildStyle;
+ buildSettings = {
+ COPY_PHASE_STRIP = NO;
+ };
+ name = Development;
+ };
+ B51C949D0D6B3FD1004D5839 /* Deployment */ = {
+ isa = PBXBuildStyle;
+ buildSettings = {
+ COPY_PHASE_STRIP = YES;
+ };
+ name = Deployment;
+ };
+/* End PBXBuildStyle section */
+
/* Begin PBXContainerItemProxy section */
56F555DA0C3B36FC00E2E929 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
@@ -1803,12 +1820,16 @@
DCC30C4D0762532C008F7A48 /* Project object */ = {
isa = PBXProject;
buildConfigurationList = 702442D70859E0B00059BD9B /* Build configuration list for PBXProject "Avida" */;
- compatibilityVersion = "Xcode 2.4";
+ buildSettings = {
+ };
+ buildStyles = (
+ B51C949C0D6B3FD1004D5839 /* Development */,
+ B51C949D0D6B3FD1004D5839 /* Deployment */,
+ );
hasScannedForEncodings = 0;
mainGroup = DCC30C490762532C008F7A48;
productRefGroup = DCC3164E07626CF3008F7A48 /* Products */;
projectDirPath = "";
- projectRoot = "";
targets = (
7023ED520C0A590200362B9C /* full-suite */,
DCC3164C07626CF3008F7A48 /* avida */,
@@ -1835,7 +1856,6 @@
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "mkdir -p $DERIVED_FILE_DIR\nif (test -x /usr/bin/svnversion)\nthen svncmd=/usr/bin/svnversion\nelif (test -x /usr/local/bin/svnversion)\nthen svncmd=/usr/local/bin/svnversion\nelif (test -x /usr/local/svn/bin/svnversion)\nthen svncmd=/usr/local/svn/bin/svnversion\nelse\n echo \"Warning: 'svn' not found, please install subversion\"\n if [[ ! -f $DERIVED_FILE_DIR/revision.h ]]\n then\n echo \"#ifndef revision_h\" > $DERIVED_FILE_DIR/revision.h\n echo \"#define revision_h\" >> $DERIVED_FILE_DIR/revision.h\n echo \"#define REVISION \\\"???\\\"\" >> $DERIVED_FILE_DIR/revision.h\n echo \"#endif\" >> $DERIVED_FILE_DIR/revision.h\n fi\nfi\n\necho \"#ifndef revision_h\" > /tmp/newrev.tmp\necho \"#define revision_h\" >> /tmp/newrev.tmp\necho \\#define REVISION \\\"`$svncmd`\\\" >> /tmp/newrev.tmp\necho \"#endif\" >> /tmp/newrev.tmp\n\nif [[ -f $DERIVED_FILE_DIR/revision.h ]]\nthen\n revdiff=`diff $DERIVED_FILE_DIR/revision.h /tmp/newrev.tmp`\nelse\n!
revdiff=\"yes\"\nfi\n\nif [[ -n \"$revdiff\" ]]\nthen\n echo \"New revision.h Generated\"\n cp /tmp/newrev.tmp $DERIVED_FILE_DIR/revision.h\n touch $SRCROOT/source/main/avida.cc\nfi\n\nrm /tmp/newrev.tmp\n";
- showEnvVarsInLog = 0;
};
70D845480D73677E00601F5A /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
@@ -1849,7 +1869,6 @@
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "./run_tests --builddir=$BUILD_DIR/$BUILD_STYLE/ _asl*";
- showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
Modified: development/source/main/cDeme.cc
===================================================================
--- development/source/main/cDeme.cc 2008-03-07 05:03:09 UTC (rev 2431)
+++ development/source/main/cDeme.cc 2008-03-07 15:41:08 UTC (rev 2432)
@@ -94,15 +94,16 @@
++_age;
}
-void cDeme::Reset(bool resetResources)
+void cDeme::Reset(int previous_generation, bool resetResources)
{
birth_count = 0;
_age = 0;
+ generation = previous_generation + 1;
if(resetResources)
deme_resource_count.ReinitializeResources();
}
-void cDeme::Reset(double deme_energy, bool resetResources)
+void cDeme::Reset(double deme_energy, int previous_generation, bool resetResources)
{
assert(m_world->GetConfig().ENERGY_ENABLED.Get());
assert(org_count>0);
@@ -122,7 +123,7 @@
phenotype.SetMerit(cMerit(cMerit::EnergyToMerit(phenotype.GetStoredEnergy() * phenotype.GetEnergyUsageRatio(), m_world)));
}
}
- Reset(resetResources);
+ Reset(previous_generation, resetResources);
}
Modified: development/source/main/cDeme.h
===================================================================
--- development/source/main/cDeme.h 2008-03-07 05:03:09 UTC (rev 2431)
+++ development/source/main/cDeme.h 2008-03-07 15:41:08 UTC (rev 2432)
@@ -48,6 +48,7 @@
int birth_count; //!< Number of organisms that have been born into this deme since reset.
int org_count; //!< Number of organisms are currently in this deme.
int _age; //!< Age of this deme, in updates.
+ int generation; //!< Generation of this deme
double total_org_energy; //! total amount of energy in organisms in this deme
cGermline _germline; //!< The germline for this deme, if used.
@@ -63,7 +64,7 @@
cMerit _next_merit; //!< Deme merit that will be inherited upon deme replication.
public:
- cDeme() : _id(0), width(0), birth_count(0), org_count(0), _age(0), total_org_energy(0.0), deme_resource_count(0) { ; }
+ cDeme() : _id(0), width(0), birth_count(0), org_count(0), _age(0), generation(0), total_org_energy(0.0), deme_resource_count(0) { ; }
~cDeme() { ; }
void Setup(int id, const tArray<int>& in_cells, int in_width = -1, cWorld* world = NULL);
@@ -78,8 +79,8 @@
int GetWidth() const { return width; }
int GetHeight() const { return cell_ids.GetSize() / width; }
- void Reset(bool resetResources = true);
- void Reset(double deme_energy, bool resetResources = true); //! used to pass energy to offspring deme
+ void Reset(int previous_generation, bool resetResources = true);
+ void Reset(double deme_energy, int previous_generation, bool resetResources = true); //! used to pass energy to offspring deme
//! Kills all organisms currently in this deme.
void KillAll();
int GetBirthCount() const { return birth_count; }
@@ -88,6 +89,8 @@
int GetOrgCount() const { return org_count; }
void IncOrgCount() { org_count++; }
void DecOrgCount() { org_count--; }
+
+ int GetGeneration() const { return generation; }
bool IsEmpty() const { return org_count == 0; }
bool IsFull() const { return org_count == cell_ids.GetSize(); }
Modified: development/source/main/cPopulation.cc
===================================================================
--- development/source/main/cPopulation.cc 2008-03-07 05:03:09 UTC (rev 2431)
+++ development/source/main/cPopulation.cc 2008-03-07 15:41:08 UTC (rev 2432)
@@ -1077,7 +1077,7 @@
// Reset all deme stats to zero.
for (int deme_id = 0; deme_id < num_demes; deme_id++) {
- deme_array[deme_id].Reset();
+ deme_array[deme_id].Reset(deme_array[deme_id].GetGeneration()); // increase deme generation by 1
}
}
@@ -1252,17 +1252,18 @@
}
// Reset both demes, in case they have any cleanup work to do.
+ int source_deme_generation = source_deme.GetGeneration();
if(m_world->GetConfig().ENERGY_ENABLED.Get()) {
// Transfer energy from source to target if we're using the energy model.
- source_deme.Reset(parent_deme_energy, source_deme_resource_reset);
- target_deme.Reset(offspring_deme_energy, target_deme_resource_reset);
+ source_deme.Reset(parent_deme_energy, source_deme_generation, source_deme_resource_reset);
+ target_deme.Reset(offspring_deme_energy, source_deme_generation, target_deme_resource_reset);
} else {
// Default; reset both source and target.
- source_deme.Reset(source_deme_resource_reset);
- target_deme.Reset(target_deme_resource_reset);
+ source_deme.Reset(source_deme_generation, source_deme_resource_reset);
+ target_deme.Reset(source_deme_generation, target_deme_resource_reset);
}
- // All done; do our post-replication stats tracking.
+ // do our post-replication stats tracking.
m_world->GetStats().DemePostReplication(source_deme, target_deme);
}
@@ -2434,6 +2435,7 @@
stats.SumDemeAge().Clear();
stats.SumDemeBirthCount().Clear();
stats.SumDemeOrgCount().Clear();
+ stats.SumDemeGeneration().Clear();
for(int i = 0; i < GetNumDemes(); i++) {
cDeme& deme = GetDeme(i);
@@ -2442,6 +2444,7 @@
stats.SumDemeAge().Add(deme.GetAge());
stats.SumDemeBirthCount().Add(deme.GetBirthCount());
stats.SumDemeOrgCount().Add(deme.GetOrgCount());
+ stats.SumDemeGeneration().Add(deme.GetGeneration());
}
}
Modified: development/source/main/cStats.cc
===================================================================
--- development/source/main/cStats.cc 2008-03-07 05:03:09 UTC (rev 2431)
+++ development/source/main/cStats.cc 2008-03-07 15:41:08 UTC (rev 2432)
@@ -579,6 +579,7 @@
df.Write(sum_deme_age.Average(), "Age");
df.Write(sum_deme_birth_count.Average(), "Births");
df.Write(sum_deme_org_count.Average(), "Organisms");
+ df.Write(sum_deme_generation.Average(), "Generation");
df.Endl();
}
Modified: development/source/main/cStats.h
===================================================================
--- development/source/main/cStats.h 2008-03-07 05:03:09 UTC (rev 2431)
+++ development/source/main/cStats.h 2008-03-07 15:41:08 UTC (rev 2432)
@@ -269,6 +269,7 @@
cIntSum sum_deme_age;
cIntSum sum_deme_birth_count;
cIntSum sum_deme_org_count;
+ cIntSum sum_deme_generation;
// Speculative Execution Stats
int m_spec_total;
@@ -409,7 +410,9 @@
cIntSum& SumDemeAge() { return sum_deme_age; }
cIntSum& SumDemeBirthCount() { return sum_deme_birth_count; }
cIntSum& SumDemeOrgCount() { return sum_deme_org_count; }
+ cIntSum& SumDemeGeneration() { return sum_deme_generation; }
+
#if INSTRUCTION_COUNT
void ZeroInst();
#endif
@@ -445,7 +448,9 @@
const cIntSum& SumDemeAge() const { return sum_deme_age; }
const cIntSum& SumDemeBirthCount() const { return sum_deme_birth_count; }
const cIntSum& SumDemeOrgCount() const { return sum_deme_org_count; }
+ const cIntSum& SumDemeGeneration() const { return sum_deme_generation; }
+
void IncResamplings() { ++num_resamplings; } // @AWC 06/29/06
void IncFailedResamplings() { ++num_failedResamplings; } // @AWC 06/29/06
More information about the Avida-cvs
mailing list