[Avida-SVN] r2534 - branches/jobScheduling/source/main
beckma24 at myxo.css.msu.edu
beckma24 at myxo.css.msu.edu
Mon Apr 14 13:16:15 PDT 2008
Author: beckma24
Date: 2008-04-14 16:16:15 -0400 (Mon, 14 Apr 2008)
New Revision: 2534
Modified:
branches/jobScheduling/source/main/cDeme.cc
branches/jobScheduling/source/main/cDeme.h
branches/jobScheduling/source/main/cStats.cc
branches/jobScheduling/source/main/cStats.h
Log:
Added org. exe. rate to flow_rate_tuple
Modified: branches/jobScheduling/source/main/cDeme.cc
===================================================================
--- branches/jobScheduling/source/main/cDeme.cc 2008-04-14 19:34:41 UTC (rev 2533)
+++ branches/jobScheduling/source/main/cDeme.cc 2008-04-14 20:16:15 UTC (rev 2534)
@@ -77,6 +77,14 @@
}
void cDeme::ProcessUpdate() {
+ energyUsage.Clear();
+ for(int i = 0; i < GetSize(); i++) {
+ cPopulationCell& cell = GetCell(i);
+ if(cell.IsOccupied()) {
+ energyUsage.Add(cell.GetOrganism()->GetPhenotype().GetEnergyUsageRatio());
+ }
+ }
+
if(IsEmpty()) { // deme is not processed if no organisms are present
total_energy_testament = 0.0;
return;
@@ -113,8 +121,9 @@
else
consecutiveSuccessfulEventPeriods = 0;
- (m_world->GetStats().FlowRateTuples())[(*iter).second].first.Add(GetOrgCount());
- (m_world->GetStats().FlowRateTuples())[(*iter).second].second.Add(GetEventsKilledThisSlot());
+ (m_world->GetStats().FlowRateTuples())[(*iter).second].orgCount.Add(GetOrgCount());
+ (m_world->GetStats().FlowRateTuples())[(*iter).second].eventsKilled.Add(GetEventsKilledThisSlot());
+ (m_world->GetStats().FlowRateTuples())[(*iter).second].AvgEnergyUsageRatio.Add(energyUsage.Average());
eventsKilledThisSlot = 0;
break;
}
@@ -317,8 +326,9 @@
// setup stats.flow_rate_tuples
cStats& stats = m_world->GetStats();
for(int i = m_total_events_per_slot_min; i <= m_total_events_per_slot_max; i+=flow_level_increment) {
- (stats.FlowRateTuples())[i].first.Clear();
- (stats.FlowRateTuples())[i].second.Clear();
+ (stats.FlowRateTuples())[i].orgCount.Clear();
+ (stats.FlowRateTuples())[i].eventsKilled.Clear();
+ (stats.FlowRateTuples())[i].AvgEnergyUsageRatio.Clear();
}
}
Modified: branches/jobScheduling/source/main/cDeme.h
===================================================================
--- branches/jobScheduling/source/main/cDeme.h 2008-04-14 19:34:41 UTC (rev 2533)
+++ branches/jobScheduling/source/main/cDeme.h 2008-04-14 20:16:15 UTC (rev 2534)
@@ -32,6 +32,7 @@
#include "tArray.h"
#include "cResourceCount.h"
#include "cStringList.h"
+#include "cDoubleSum.h"
class cResource;
class cWorld;
@@ -64,6 +65,7 @@
unsigned int eventsKilled;
unsigned int eventsKilledThisSlot;
unsigned int consecutiveSuccessfulEventPeriods;
+ cDoubleSum energyUsage;
// End of phenotypic traits
Modified: branches/jobScheduling/source/main/cStats.cc
===================================================================
--- branches/jobScheduling/source/main/cStats.cc 2008-04-14 19:34:41 UTC (rev 2533)
+++ branches/jobScheduling/source/main/cStats.cc 2008-04-14 20:16:15 UTC (rev 2534)
@@ -598,24 +598,27 @@
df.Write(m_update, "Update");
// write each tuple
- for(map<int, pair<cIntSum, cIntSum> >::iterator iter = flow_rate_tuples.begin(); iter != flow_rate_tuples.end(); iter++) {
+ for(map<int, flow_rate_tuple>::iterator iter = flow_rate_tuples.begin(); iter != flow_rate_tuples.end(); iter++) {
ostringstream oss;
oss << "flow rate " << (*iter).first;
string flow_rate_str(oss.str());
string flow_rate_pop_size_str(flow_rate_str+" deme pop size");
string flow_rate_events_killed_str(flow_rate_str+" events killed");
+ string flow_rate_exe_ratio_str(flow_rate_str+" exe ratio");
df.Write((*iter).first, flow_rate_str.c_str());
- df.Write((*iter).second.first.Average(), flow_rate_pop_size_str.c_str());
- df.Write((*iter).second.second.Average(), flow_rate_events_killed_str.c_str());
+ df.Write((*iter).second.orgCount.Average(), flow_rate_pop_size_str.c_str());
+ df.Write((*iter).second.eventsKilled.Average(), flow_rate_events_killed_str.c_str());
+ df.Write((*iter).second.AvgEnergyUsageRatio.Average(), flow_rate_exe_ratio_str.c_str());
}
df.Endl();
// reset all tuples
- for(map<int, pair<cIntSum, cIntSum> >::iterator iter = flow_rate_tuples.begin(); iter != flow_rate_tuples.end(); iter++) {
- (*iter).second.first.Clear();
- (*iter).second.second.Clear();
+ for(map<int, flow_rate_tuple >::iterator iter = flow_rate_tuples.begin(); iter != flow_rate_tuples.end(); iter++) {
+ (*iter).second.orgCount.Clear();
+ (*iter).second.eventsKilled.Clear();
+ (*iter).second.AvgEnergyUsageRatio.Clear();
}
}
Modified: branches/jobScheduling/source/main/cStats.h
===================================================================
--- branches/jobScheduling/source/main/cStats.h 2008-04-14 19:34:41 UTC (rev 2533)
+++ branches/jobScheduling/source/main/cStats.h 2008-04-14 20:16:15 UTC (rev 2534)
@@ -72,6 +72,12 @@
class cDeme;
class cGermline;
+struct flow_rate_tuple {
+ cIntSum orgCount;
+ cIntSum eventsKilled;
+ cDoubleSum AvgEnergyUsageRatio;
+};
+
class cStats
{
#if USE_tMemTrack
@@ -283,7 +289,7 @@
cDoubleSum EnergyTestamentAcceptedByDeme;
//(event flow rate, (deme pop size, events killed))
- std::map<int, std::pair<cIntSum, cIntSum> > flow_rate_tuples;
+ std::map<int, flow_rate_tuple > flow_rate_tuples;
// Speculative Execution Stats
int m_spec_total;
@@ -437,7 +443,7 @@
cDoubleSum& SumEnergyTestamentAcceptedByDeme() { return EnergyTestamentAcceptedByDeme; }
- std::map<int, std::pair<cIntSum, cIntSum> >& FlowRateTuples() { return flow_rate_tuples; }
+ std::map<int, flow_rate_tuple >& FlowRateTuples() { return flow_rate_tuples; }
#if INSTRUCTION_COUNT
void ZeroInst();
@@ -486,7 +492,7 @@
const cDoubleSum& SumEnergyTestamentAcceptedByOrganisms() const { return EnergyTestamentAcceptedByOrganisms; }
const cDoubleSum& SumEnergyTestamentAcceptedByDeme() const { return EnergyTestamentAcceptedByDeme; }
- const std::map<int, std::pair<cIntSum, cIntSum> >& FlowRateTuples() const { return flow_rate_tuples; }
+ const std::map<int, flow_rate_tuple >& FlowRateTuples() const { return flow_rate_tuples; }
void IncResamplings() { ++num_resamplings; } // @AWC 06/29/06
More information about the Avida-cvs
mailing list