[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