[Avida-SVN] r1578 - in branches/dkdev/source: cpu main

dknoester at myxo.css.msu.edu dknoester at myxo.css.msu.edu
Sun May 20 17:53:23 PDT 2007


Author: dknoester
Date: 2007-05-20 20:53:23 -0400 (Sun, 20 May 2007)
New Revision: 1578

Modified:
   branches/dkdev/source/cpu/cHardwareCPU.cc
   branches/dkdev/source/main/cDeme.cc
   branches/dkdev/source/main/cDeme.h
   branches/dkdev/source/main/cPopulation.cc
Log:
quick test with group-based resources for building links.

Modified: branches/dkdev/source/cpu/cHardwareCPU.cc
===================================================================
--- branches/dkdev/source/cpu/cHardwareCPU.cc	2007-05-20 23:12:33 UTC (rev 1577)
+++ branches/dkdev/source/cpu/cHardwareCPU.cc	2007-05-21 00:53:23 UTC (rev 1578)
@@ -3533,6 +3533,10 @@
   if(organism->GetCellID()==-1) return false;
   cPopulationCell& cell = m_world->GetPopulation().GetCell(organism->GetCellID());
   cDeme& deme = m_world->GetPopulation().GetDeme(cell.GetDemeID());
+  
+  // Rate-limiting link construction.
+  if(!deme.CreateLink()) return false;
+  
   cDeme::Network& network = deme.GetNetwork();
   cDeme::CellVertexMap& cvMap = deme.GetCellVertexMap();
   

Modified: branches/dkdev/source/main/cDeme.cc
===================================================================
--- branches/dkdev/source/main/cDeme.cc	2007-05-20 23:12:33 UTC (rev 1577)
+++ branches/dkdev/source/main/cDeme.cc	2007-05-21 00:53:23 UTC (rev 1578)
@@ -52,13 +52,24 @@
 
 void cDeme::Reset() 
 {
-  birth_count = 0; 
+  birth_count = 0;
   m_network = Network();
   m_cvMap = CellVertexMap();
   _age = 0;
+  _links = 20; // Start with extra.
 }
 
 
+bool cDeme::CreateLink() {
+  if(_links == 0) {
+    return false;
+  } else {
+    --_links;
+    return true;
+  }  
+}
+
+
 void cDeme::ReplaceGermline(const cGermline& germline) {
 	// A little tricky here.  Have to copy the elements of the germline, uses
 	// cGermline's copy ctor.

Modified: branches/dkdev/source/main/cDeme.h
===================================================================
--- branches/dkdev/source/main/cDeme.h	2007-05-20 23:12:33 UTC (rev 1577)
+++ branches/dkdev/source/main/cDeme.h	2007-05-21 00:53:23 UTC (rev 1578)
@@ -71,13 +71,15 @@
   CellVertexMap& GetCellVertexMap() { return m_cvMap; }
   //! Returns true if cell_id is a cell ID in this deme, false otherwise.
   bool IsCellID(int cell_id) { return false; }
+  //! Returns true if a link may be created in this deme.
+  bool CreateLink();
   
   // -= Germline =-
   cGermline& GetGermline() { return _germline; }
   void ReplaceGermline(const cGermline& germline);
   
   // -= Update support =-
-  void ProcessUpdate() { ++_age; }
+  void ProcessUpdate() { ++_age; ++_links; }
   int GetAge() const { return _age; }
   
 private:
@@ -91,6 +93,7 @@
   
   cGermline _germline; //!< The germline for this deme, if used.
   int _age; //!< How old this deme is, in updates.
+  int _links; //!< The number of links currently available to members of this deme.
 };
 
 

Modified: branches/dkdev/source/main/cPopulation.cc
===================================================================
--- branches/dkdev/source/main/cPopulation.cc	2007-05-20 23:12:33 UTC (rev 1577)
+++ branches/dkdev/source/main/cPopulation.cc	2007-05-21 00:53:23 UTC (rev 1578)
@@ -925,18 +925,18 @@
             double max_lsp = world_x * world_y/num_demes * 0.75;
             
             // Have we found the minimal lsp?
-            if(min_lsp != (int)mean_lsp) {
-              // Not a min LSP network.
+//            if(min_lsp != (int)mean_lsp) {
+//              // Not a min LSP network.
               source_germline.UpdateMerit(pow(max_lsp - mean_lsp + 1, 2));
-            } else {
-              // A min LSP network.
-              source_germline.UpdateMerit(pow((double)(max_edges - boost::num_edges(network)+1), 2)
-                                          + pow((double)(max_lsp - mean_lsp + 1), 2));
+//            } else {
+//              // A min LSP network.
+//              source_germline.UpdateMerit(pow((double)(max_edges - boost::num_edges(network)+1), 2)
+//                                          + pow((double)(max_lsp - mean_lsp + 1), 2));
 //            source_germline.UpdateMerit(pow((max_lsp-mean_lsp)/(max_lsp-min_lsp), 2)
 //                                        + pow((max_edges-boost::num_edges(network))
 //                                              / (max_edges-boost::num_vertices(network)-1), 2)
 //                                        + 1);
-            }
+//            }
 
             m_world->GetStats().ConnectedTopology(source_deme, mean_lsp);
 




More information about the Avida-cvs mailing list