[Avida-SVN] r2217 - in branches/energy/source: drivers main
beckma24 at myxo.css.msu.edu
beckma24 at myxo.css.msu.edu
Sat Dec 1 08:53:01 PST 2007
Author: beckma24
Date: 2007-12-01 11:53:01 -0500 (Sat, 01 Dec 2007)
New Revision: 2217
Modified:
branches/energy/source/drivers/cDefaultRunDriver.cc
branches/energy/source/main/cDeme.cc
branches/energy/source/main/cPopulation.cc
Log:
Increased performance of deme resources. Bug fix, demes were aging when no organisms where present within the deme. Bug fix, incrementer in wrong spot in loop that kill a deme event
Modified: branches/energy/source/drivers/cDefaultRunDriver.cc
===================================================================
--- branches/energy/source/drivers/cDefaultRunDriver.cc 2007-11-30 20:39:12 UTC (rev 2216)
+++ branches/energy/source/drivers/cDefaultRunDriver.cc 2007-12-01 16:53:01 UTC (rev 2217)
@@ -69,6 +69,7 @@
cAvidaContext& ctx = m_world->GetDefaultContext();
while (!m_done) {
+
if (cChangeList* change_list = population.GetChangeList()) {
change_list->Reset();
}
Modified: branches/energy/source/main/cDeme.cc
===================================================================
--- branches/energy/source/main/cDeme.cc 2007-11-30 20:39:12 UTC (rev 2216)
+++ branches/energy/source/main/cDeme.cc 2007-12-01 16:53:01 UTC (rev 2217)
@@ -82,6 +82,9 @@
void cDeme::ProcessUpdate() {
+ if(IsEmpty())
+ return;
+
for(int i = 0; i < cell_events.Size(); i++) {
cDemeCellEvent& event = cell_events[i];
if(event.GetDelay() == _age) {
@@ -101,14 +104,14 @@
eventCell = event.GetNextEventCellID();
}
- } else if(event.GetDelay() + event.GetDuration() == _age) {
+ } else if(event.GetDelay() + event.GetDuration() == _age) { //this does not work for all kinds of deme event (gradiant)
int eventCell = event.GetNextEventCellID();
while(eventCell != -1) {
if(event.GetEventID() == m_world->GetPopulation().GetCell(GetCellID(eventCell)).GetCellData()) { // eventID == CellData
//set cell data to 0
m_world->GetPopulation().GetCell(GetCellID(eventCell)).SetCellData(0);
- eventCell = event.GetNextEventCellID();
}
+ eventCell = event.GetNextEventCellID();
}
event.DeactivateEvent(); //event over
}
Modified: branches/energy/source/main/cPopulation.cc
===================================================================
--- branches/energy/source/main/cPopulation.cc 2007-11-30 20:39:12 UTC (rev 2216)
+++ branches/energy/source/main/cPopulation.cc 2007-12-01 16:53:01 UTC (rev 2217)
@@ -1141,7 +1141,7 @@
}
case 6: {
// Replicate old demes
- if(source_deme.GetAge() < m_world->GetConfig().MAX_DEME_AGE.Get() && source_deme.GetOrgCount() > 0)
+ if(source_deme.GetAge() < m_world->GetConfig().MAX_DEME_AGE.Get())
continue;
break;
}
@@ -2251,13 +2251,17 @@
assert(cell.IsOccupied()); // Unoccupied cell getting processor time!
cOrganism* cur_org = cell.GetOrganism();
cell.GetHardware()->SingleProcess(ctx);
- if (cur_org->GetPhenotype().GetToDelete() == true) {
- delete cur_org;
- }
+
m_world->GetStats().IncExecuted();
resource_count.Update(step_size);
- for(int i = 0; i < GetNumDemes(); i++) {
+
+ GetDeme(cell.GetDemeID()).Update(step_size);
+/* for(int i = 0; i < GetNumDemes(); i++) {
GetDeme(i).Update(step_size);
+ }*/
+
+ if (cur_org->GetPhenotype().GetToDelete() == true) {
+ delete cur_org;
}
}
@@ -2271,9 +2275,12 @@
stats.SumDemeOrgCount().Clear();
for(int i = 0; i < GetNumDemes(); i++) {
- stats.SumDemeAge().Add(GetDeme(i).GetAge());
- stats.SumDemeBirthCount().Add(GetDeme(i).GetBirthCount());
- stats.SumDemeOrgCount().Add(GetDeme(i).GetOrgCount());
+ cDeme& deme = GetDeme(i);
+ if(deme.IsEmpty()) // ignore empty demes
+ continue;
+ stats.SumDemeAge().Add(deme.GetAge());
+ stats.SumDemeBirthCount().Add(deme.GetBirthCount());
+ stats.SumDemeOrgCount().Add(deme.GetOrgCount());
}
}
More information about the Avida-cvs
mailing list