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

dknoester at myxo.css.msu.edu dknoester at myxo.css.msu.edu
Thu Nov 1 05:41:16 PDT 2007


Author: dknoester
Date: 2007-11-01 08:41:16 -0400 (Thu, 01 Nov 2007)
New Revision: 2168

Modified:
   branches/dkdev/source/cpu/cHardwareCPU.cc
   branches/dkdev/source/main/cDeme.cc
   branches/dkdev/source/main/cPopulation.cc
Log:
Bugfix.

Modified: branches/dkdev/source/cpu/cHardwareCPU.cc
===================================================================
--- branches/dkdev/source/cpu/cHardwareCPU.cc	2007-10-31 20:26:11 UTC (rev 2167)
+++ branches/dkdev/source/cpu/cHardwareCPU.cc	2007-11-01 12:41:16 UTC (rev 2168)
@@ -3900,7 +3900,7 @@
   cPopulationCell& cell = m_world->GetPopulation().GetCell(organism->GetCellID());
   cDeme& deme = m_world->GetPopulation().GetDeme(cell.GetDemeID());
   const int x = FindModifiedRegister(REG_BX);
-  GetRegister(x) = deme.GetCellPosition(cell.GetID()).first;
+  GetRegister(x) = deme.GetCellPosition(cell.GetID()).second;
   return true;
 }
 

Modified: branches/dkdev/source/main/cDeme.cc
===================================================================
--- branches/dkdev/source/main/cDeme.cc	2007-10-31 20:26:11 UTC (rev 2167)
+++ branches/dkdev/source/main/cDeme.cc	2007-11-01 12:41:16 UTC (rev 2168)
@@ -39,8 +39,12 @@
   width = in_width;
   if (width < 1) width = cell_ids.GetSize();
   
-  _cellsToLink = std::make_pair(cell_ids[_world->GetRandom().GetInt(cell_ids.GetSize())],
+  
+  // Need to change this to pick (x,y) instead of cellid.
+  
+  _cellsToLink = std::make_pair(GetCellID(_world->GetRandom().GetInt(GetWidth()), _world->GetRandom().GetInt(GetHeight()-2)+1),
                                 cell_ids[_world->GetRandom().GetInt(cell_ids.GetSize())]);
+                                
   while((_cellsToLink.second == _cellsToLink.first) 
         || (((double)region_size(GetCellPosition(_cellsToLink.first), GetCellPosition(_cellsToLink.second))
              / GetSize()) < _world->GetConfig().TWOCELLS_MIN_REGION_RATIO.Get())) {
@@ -232,7 +236,8 @@
       neighborhood_edge_count /= 2;
       cluster_coeffs.push_back((double)neighborhood_edge_count / (neighbors.size()*(neighbors.size()-1)/2));
     } else {
-      cluster_coeffs.push_back(1.0);
+      // This used to be 1.0... but, if our neighborhood size is <1, there are zero edges out of a possible 0.
+      cluster_coeffs.push_back(0.0);
     }
   }
   

Modified: branches/dkdev/source/main/cPopulation.cc
===================================================================
--- branches/dkdev/source/main/cPopulation.cc	2007-10-31 20:26:11 UTC (rev 2167)
+++ branches/dkdev/source/main/cPopulation.cc	2007-11-01 12:41:16 UTC (rev 2168)
@@ -68,12 +68,18 @@
     std::pair<int,int> cell1_xy = _deme.GetCellPosition(cells.first);    
     std::pair<int,int> self_xy = _deme.GetCellPosition(organism->GetCellID());
 
+//    std::cout << "Organism " << organism->GetCellID() << " @ (" << self_xy.first << "," << self_xy.second << ") declares "
+//      << organism->GetRegion() << " for cell1 @ (" << cell1_xy.first << "," << cell1_xy.second << ");";
+    
     // Has the organism declared correctly or not?  If so, increment result.
     if((self_xy.second >= (cell1_xy.second)) && (organism->GetRegion()==1)) {
       result += 1.0;
+//      std::cout << " up.";
     } else if((self_xy.second <= (cell1_xy.second)) && (organism->GetRegion()==0)) {
       result += 1.0;
-    }    
+//      std::cout << " down.";
+    }
+//    std::cout << endl;
     
     // All done.
     return result;
@@ -1078,9 +1084,12 @@
         }
         if(!all_latched) continue;
         
-        source_germline_merit = pow(std::accumulate(&cell_array[source_deme.GetCellID(0)],
-                                                    &cell_array[source_deme.GetCellID(source_deme.GetSize()-1)],
-                                                    0.0, correct_region_accumulator(source_deme)), 
+//        source_germline_merit = pow(2, std::accumulate(&cell_array.begin()[source_deme.GetCellID(0)],
+//                                                    &cell_array.begin()[source_deme.GetCellID(source_deme.GetSize()-1)+1],
+//                                                    0.0, correct_region_accumulator(source_deme)));
+        source_germline_merit = pow(std::accumulate(&cell_array.begin()[source_deme.GetCellID(0)],
+                                                    &cell_array.begin()[source_deme.GetCellID(source_deme.GetSize()-1)+1],
+                                                    0.0, correct_region_accumulator(source_deme)),
                                     2);
         
         break;




More information about the Avida-cvs mailing list