[Avida-SVN] r2088 - in branches/energy/source: actions main
beckma24 at myxo.css.msu.edu
beckma24 at myxo.css.msu.edu
Fri Sep 14 06:25:50 PDT 2007
Author: beckma24
Date: 2007-09-14 09:25:50 -0400 (Fri, 14 Sep 2007)
New Revision: 2088
Modified:
branches/energy/source/actions/PrintActions.cc
branches/energy/source/main/cOrganism.cc
branches/energy/source/main/cOrganism.h
branches/energy/source/main/cPopulation.cc
branches/energy/source/main/cPopulationInterface.cc
branches/energy/source/main/cStats.cc
branches/energy/source/main/cStats.h
Log:
Added message output data
Modified: branches/energy/source/actions/PrintActions.cc
===================================================================
--- branches/energy/source/actions/PrintActions.cc 2007-09-13 16:25:05 UTC (rev 2087)
+++ branches/energy/source/actions/PrintActions.cc 2007-09-14 13:25:50 UTC (rev 2088)
@@ -91,7 +91,8 @@
STATS_OUT_FILE(PrintMarketData, market.dat );
STATS_OUT_FILE(PrintSenseData, sense.dat );
STATS_OUT_FILE(PrintSenseExeData, sense_exe.dat );
-STATS_OUT_FILE(PrintSleepData, sleep.dat );
+STATS_OUT_FILE(PrintSleepData, sleep.dat );
+STATS_OUT_FILE(PrintMessageData, message.dat );
#define POP_OUT_FILE(METHOD, DEFAULT) /* 1 */ \
Modified: branches/energy/source/main/cOrganism.cc
===================================================================
--- branches/energy/source/main/cOrganism.cc 2007-09-13 16:25:05 UTC (rev 2087)
+++ branches/energy/source/main/cOrganism.cc 2007-09-14 13:25:50 UTC (rev 2088)
@@ -649,8 +649,9 @@
void cOrganism::ReceiveMessage(cOrgMessage& msg)
{
InitMessaging();
- msg.SetReceiver(this);
+ msg.SetReceiver(this);
m_msg->received.push_back(msg);
+ m_world->GetStats().IncMsgReceived();
}
@@ -659,8 +660,8 @@
InitMessaging();
if(m_msg->retrieve_index < m_msg->received.size()) {
+ m_world->GetStats().IncMsgRetrieved();
return &m_msg->received.at(m_msg->retrieve_index++);
}
-
return 0;
}
Modified: branches/energy/source/main/cOrganism.h
===================================================================
--- branches/energy/source/main/cOrganism.h 2007-09-13 16:25:05 UTC (rev 2087)
+++ branches/energy/source/main/cOrganism.h 2007-09-14 13:25:50 UTC (rev 2088)
@@ -325,6 +325,8 @@
const message_list_type& GetReceivedMessages() { InitMessaging(); return m_msg->received; }
//! Returns the list of all messages sent by this organism.
const message_list_type& GetSentMessages() { InitMessaging(); return m_msg->sent; }
+ //! Return the number of received minus retrieved messages
+ int NumMsgInInbox() { InitMessaging(); return (m_msg->received).size() - m_msg->retrieve_index; }
protected:
/*! Contains all the different data structures needed to support messaging within
Modified: branches/energy/source/main/cPopulation.cc
===================================================================
--- branches/energy/source/main/cPopulation.cc 2007-09-13 16:25:05 UTC (rev 2087)
+++ branches/energy/source/main/cPopulation.cc 2007-09-14 13:25:50 UTC (rev 2088)
@@ -2102,7 +2102,7 @@
for(int i = 0; i < GetNumDemes(); i++) {
stats.SumDemeAge().Add(GetDeme(i).GetAge());
stats.SumDemeBirthCount().Add(GetDeme(i).GetBirthCount());
- stats.SumDemeBirthCount().Add(GetDeme(i).GetOrgCount());
+ stats.SumDemeOrgCount().Add(GetDeme(i).GetOrgCount());
}
}
@@ -2139,6 +2139,9 @@
#if INSTRUCTION_COUNT
stats.ZeroInst();
#endif
+
+ // message
+ stats.InboxSize().Clear();
// Counts...
int num_breed_true = 0;
@@ -2199,6 +2202,8 @@
}
#endif
+ stats.InboxSize().Add(organism->NumMsgInInbox());
+
if (cur_merit > max_merit) max_merit = cur_merit;
if (cur_fitness > max_fitness) max_fitness = cur_fitness;
if (cur_gestation_time > max_gestation_time) max_gestation_time = cur_gestation_time;
Modified: branches/energy/source/main/cPopulationInterface.cc
===================================================================
--- branches/energy/source/main/cPopulationInterface.cc 2007-09-13 16:25:05 UTC (rev 2087)
+++ branches/energy/source/main/cPopulationInterface.cc 2007-09-14 13:25:50 UTC (rev 2088)
@@ -245,8 +245,10 @@
assert(rcell != NULL); // Cells should never be null.
// Fail if the cell we're facing is not occupied.
- if(!rcell->IsOccupied())
+ if(!rcell->IsOccupied()) {
+ m_world->GetStats().IncMsgSentNoOne();
return false;
+ }
cOrganism* recvr = rcell->GetOrganism();
assert(recvr != NULL);
recvr->ReceiveMessage(msg);
Modified: branches/energy/source/main/cStats.cc
===================================================================
--- branches/energy/source/main/cStats.cc 2007-09-13 16:25:05 UTC (rev 2087)
+++ branches/energy/source/main/cStats.cc 2007-09-14 13:25:50 UTC (rev 2088)
@@ -483,6 +483,11 @@
num_resamplings = 0;
num_failedResamplings = 0;
+ // message
+ num_msg_sent_no_one = 0;
+ num_msg_sent = 0;
+ num_msg_received = 0;
+ num_msg_retrieved = 0;
}
void cStats::RemoveLineage(int id_num, int parent_id, int update_born, double generation_born, int total_CPUs,
@@ -1011,6 +1016,18 @@
df.Endl();
}
+void cStats::PrintMessageData(const cString& filename) {
+ cDataFile& df = m_world->GetDataFile(filename);
+ df.WriteComment( "Avida message data\n" );
+ df.WriteTimeStamp();
+ df.Write(GetUpdate(), "update");
+ df.Write(num_msg_sent, "total sent");
+ df.Write(num_msg_received, "total received");
+ df.Write(num_msg_retrieved, "total retrieved");
+ df.Write(inbox_size.Average(), "avg. inbox size");
+ df.Endl();
+}
+
void cStats::PrintSenseData(const cString& filename)
{
cDataFile& df = m_world->GetDataFile(filename);
@@ -1065,7 +1082,8 @@
for(message_pred_ptr_list::iterator i=m_message_predicates.begin();
i!=m_message_predicates.end(); ++i) {
(**i)(msg); // Predicate is responsible for tracking info about messages.
- }
+ }
+ num_msg_sent++;
}
Modified: branches/energy/source/main/cStats.h
===================================================================
--- branches/energy/source/main/cStats.h 2007-09-13 16:25:05 UTC (rev 2087)
+++ branches/energy/source/main/cStats.h 2007-09-14 13:25:50 UTC (rev 2088)
@@ -259,6 +259,14 @@
cIntSum sum_deme_birth_count;
cIntSum sum_deme_org_count;
+ // message stats
+ int num_msg_sent_no_one;
+ int num_msg_sent;
+ int num_msg_received;
+ int num_msg_retrieved;
+ cIntSum inbox_size;
+
+
cStats(); // @not_implemented
cStats(const cStats&); // @not_implemented
cStats& operator=(const cStats&); // @not_implemented
@@ -392,6 +400,12 @@
cIntSum& SumDemeAge() { return sum_deme_age; }
cIntSum& SumDemeBirthCount() { return sum_deme_birth_count; }
cIntSum& SumDemeOrgCount() { return sum_deme_org_count; }
+
+ // message
+ void IncMsgSentNoOne() { num_msg_sent_no_one++; }
+ void IncMsgReceived() { num_msg_received++; }
+ void IncMsgRetrieved() { num_msg_retrieved++; }
+ cIntSum& InboxSize() { return inbox_size; }
#if INSTRUCTION_COUNT
@@ -430,7 +444,9 @@
const cIntSum& SumDemeBirthCount() const { return sum_deme_birth_count; }
const cIntSum& SumDemeOrgCount() const { return sum_deme_org_count; }
-
+ //message
+ const cIntSum& InboxSize() const { return inbox_size; }
+
void IncResamplings() { ++num_resamplings; } // @AWC 06/29/06
void IncFailedResamplings() { ++num_failedResamplings; } // @AWC 06/29/06
@@ -593,10 +609,15 @@
int GetNumSenseSlots();
+/*
// deme
double GetAveDemeAge() const { return sum_deme_age.Average(); }
double GetAveDemeBirthCount() const { return sum_deme_birth_count.Average(); }
double GetAveDemeOrgCount() const { return sum_deme_org_count.Average(); }
+
+ // message
+ cIntSum inbox_size;
+*/
int getNumAsleep(int demeID) { return numAsleep[demeID]; }
void incNumAsleep(int demeID) { numAsleep[demeID]++; }
@@ -635,6 +656,7 @@
void PrintInstructionData(const cString& filename);
void PrintGenotypeMap(const cString& filename);
void PrintMarketData(const cString& filename);
+ void PrintMessageData(const cString& filename);
void PrintSenseData(const cString& filename);
void PrintSenseExeData(const cString& filename);
void PrintSleepData(const cString& filename);
More information about the Avida-cvs
mailing list