[Avida-SVN] r3281 - development/source/main

hjg at myxo.css.msu.edu hjg at myxo.css.msu.edu
Thu Jun 4 05:40:04 PDT 2009


Author: hjg
Date: 2009-06-04 08:40:04 -0400 (Thu, 04 Jun 2009)
New Revision: 3281

Modified:
   development/source/main/cAvidaConfig.h
   development/source/main/cPopulation.cc
   development/source/main/cStats.cc
Log:
Removed organisms from dynamically formed groups at death & updated the group formation stats tracking.

Modified: development/source/main/cAvidaConfig.h
===================================================================
--- development/source/main/cAvidaConfig.h	2009-06-03 22:10:07 UTC (rev 3280)
+++ development/source/main/cAvidaConfig.h	2009-06-04 12:40:04 UTC (rev 3281)
@@ -637,6 +637,10 @@
   CONFIG_ADD_VAR(STRING_AMOUNT_CAP, int, -1, "-1=no cap on string amounts\n#=CAP");
   CONFIG_ADD_VAR(MATCH_ALREADY_PRODUCED, int, 0, "0=off\n1=on");
   
+	
+	CONFIG_ADD_GROUP(GROUP_FORMATION_GROUP, "Group Formation Settings");
+  CONFIG_ADD_VAR(USE_FORM_GROUPS, bool, 0, "Enable organisms to form groups. 0/1 (off/on)");
+
 #endif
   
   inline void Load(const cString& filename) { Load(filename, false); }

Modified: development/source/main/cPopulation.cc
===================================================================
--- development/source/main/cPopulation.cc	2009-06-03 22:10:07 UTC (rev 3280)
+++ development/source/main/cPopulation.cc	2009-06-04 12:40:04 UTC (rev 3281)
@@ -747,6 +747,12 @@
   	organism->GetOrgInterface().UpdateResources(organism->GetRBins());
   }
   
+	// make sure the group composition is updated.
+	if(m_world->GetConfig().USE_FORM_GROUPS.Get() && organism->HasOpinion()) 
+	{
+			int opinion = organism->GetOpinion().first;
+			LeaveGroup(opinion);
+	}
   
   // Do the lineage handling
   if (m_world->GetConfig().LOG_LINEAGES.Get()) { m_world->GetClassificationManager().RemoveLineageOrganism(organism); }

Modified: development/source/main/cStats.cc
===================================================================
--- development/source/main/cStats.cc	2009-06-03 22:10:07 UTC (rev 3280)
+++ development/source/main/cStats.cc	2009-06-04 12:40:04 UTC (rev 3281)
@@ -2538,7 +2538,7 @@
 	df.Write(shaded_20, "shaded-20 [shaded20]");
 	df.Write(shaded_10, "shaded-10 [shaded10]");
 	df.Write(shaded_0, "shaded-0 [shaded0]");
-	df.Write(high_alt, "percent-high-alt [highalt]");
+	df.Write(high_alt, "percent-high-alt  [highalt]");
 	df.Write(avg_shade, "avg-shade [avgshade]");
 	df.Endl();
 	
@@ -2557,27 +2557,35 @@
 	
 	map <int,int>::iterator itr;
 	double avg_size = 0.0;
+	double avg_size_wout_empty = 0.0;
 	double max_size = 0.0;
 	double min_size = 100000000000.0;
 	double active_groups = 0.0;
 	
 	for(itr = groups.begin();itr!=groups.end();itr++) {
-		avg_size += itr->second;
-		if (itr->second > max_size) max_size = itr->second;
-		if (itr->second < min_size) min_size = itr->second;
-		if (itr->second > 0) active_groups++;
+		double cur_size = itr->second;
+		avg_size += cur_size;
+		if (cur_size > max_size) max_size = cur_size;
+		if (cur_size < min_size) min_size = cur_size;
+		if (cur_size > 0) {
+			active_groups++;
+			avg_size_wout_empty += cur_size; 
+		}
 	}
 	
 	avg_size = avg_size / groups.size();
+	avg_size_wout_empty = avg_size_wout_empty / active_groups;
+	df.WriteTimeStamp();
+	df.Write(m_update,   "Update [update]");
 	df.Write((double)groups.size(), "number of groups [num]");
-	df.Write(avg_size, "average size of groups [avg-size]");
-	df.Write(max_size, "max size of groups [max-size]");
-	df.Write(min_size, "min size of groups [min-size]");
-	df.Write(active_groups, "active groups [act-group]");
+	df.Write(avg_size, "average size of groups [avgsize]");
+	df.Write(avg_size_wout_empty, "average size of  non-emptygroups [avgsizene]");
+	df.Write(max_size, "max size of groups [maxsize]");
+	df.Write(min_size, "min size of groups [minsize]");
+	df.Write(active_groups, "active groups [actgroup]");
 	
 	
 	df.Endl();
-
 	
 }
 




More information about the Avida-cvs mailing list