[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