[Avida-SVN] r1538 - branches/dkdev/source/main

dknoester at myxo.css.msu.edu dknoester at myxo.css.msu.edu
Thu May 10 08:11:49 PDT 2007


Author: dknoester
Date: 2007-05-10 11:11:49 -0400 (Thu, 10 May 2007)
New Revision: 1538

Modified:
   branches/dkdev/source/main/cPopulation.cc
Log:
Normalized fitness for edge count and diameter.

Modified: branches/dkdev/source/main/cPopulation.cc
===================================================================
--- branches/dkdev/source/main/cPopulation.cc	2007-05-10 14:57:30 UTC (rev 1537)
+++ branches/dkdev/source/main/cPopulation.cc	2007-05-10 15:11:49 UTC (rev 1538)
@@ -893,12 +893,12 @@
                                                    source_deme.GetHeight(),
                                                    source_deme.GetWidth());
           
-          if(boost::num_edges(network)>=(boost::num_vertices(network))) {
-            // Not yet a minimal network.            
-            source_germline.UpdateMerit(pow(max_edges - boost::num_edges(network)+1, 2));
-            m_world->GetStats().ConnectedTopology(source_deme, 0);
-            
-          } else {
+//          if(boost::num_edges(network)>=(boost::num_vertices(network))) {
+//            // Not yet a minimal network.            
+//            source_germline.UpdateMerit(pow(max_edges - boost::num_edges(network)+1, 2));
+//            m_world->GetStats().ConnectedTopology(source_deme, 0);
+//            
+//          } else {
             // It is a minimal network.
             // Calculate the shortest distances between all vertices.
             typedef cDeme::Network::vertices_size_type size_type;
@@ -920,11 +920,16 @@
 
             // Worst-case mean lsp == 3/4 of a single path.
             double max_lsp = world_x * world_y/num_demes * 0.75;
+            double min_lsp = std::max(world_x, world_y) - 1;
           
-            source_germline.UpdateMerit(pow(max_edges - boost::num_edges(network)+1, 2)
-                                        + pow(max_lsp - mean_lsp + 1, 2));
+//            source_germline.UpdateMerit(pow(max_edges - boost::num_edges(network)+1, 2)
+//                                        + pow(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);
-          }
+//          }
           
           // Now, update this deme's merit.
           // This particular calculation doesn't work well; it rewards small diameter and small number of edges equally.




More information about the Avida-cvs mailing list