[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