[Avida-SVN] r3391 - branches/goings/source/main
goingssh at myxo.css.msu.edu
goingssh at myxo.css.msu.edu
Mon Aug 31 23:01:07 PDT 2009
Author: goingssh
Date: 2009-09-01 02:01:06 -0400 (Tue, 01 Sep 2009)
New Revision: 3391
Modified:
branches/goings/source/main/cPopulation.cc
Log:
fixed problem where if child overwrote parent wasn't calculating edit distances correctly
Modified: branches/goings/source/main/cPopulation.cc
===================================================================
--- branches/goings/source/main/cPopulation.cc 2009-08-31 19:11:56 UTC (rev 3390)
+++ branches/goings/source/main/cPopulation.cc 2009-09-01 06:01:06 UTC (rev 3391)
@@ -935,10 +935,10 @@
void cPopulation::UpdateHDists(int cell_id, int par_id, cGenotype* gen)
{
int par_dist=-1;
- if (par_id>=0)
- {
+ if (par_id>=0 and par_id!=cell_id)
+ {
const cGenome& par_gen = cell_array[par_id].GetOrganism()->GetGenome();
- if ( par_gen == gen->GetGenome() )
+ if ( par_gen == gen->GetGenome() )
par_dist = 0;
else
par_dist = cGenomeUtil::FindEditDistance(par_gen, gen->GetGenome());
@@ -946,15 +946,20 @@
for (int i=0; i<cell_array.GetSize(); i++)
{
int dist = m_world->GetConfig().NICHE_RADIUS.Get();
+ int dist1 = -1;
if (cell_array[i].GetOrganism())
{
- if ( par_dist != -1 && (par_dist==0 || hdists[i][par_id]-par_dist >= dist) )
- dist = hdists[i][par_id]-par_dist;
- else
- {
+ if (cell_id==i)
+ dist = 0;
+ else if (i==par_id)
+ dist = par_dist;
+ else if ( par_dist != -1 && (par_dist==0 || hdists[i][par_id]-par_dist >= dist ))
+ dist = hdists[par_id][i]-par_dist;
+ else
+ {
dist = cGenomeUtil::FindEditDistance(cell_array[i].GetOrganism()->GetGenome(), gen->GetGenome());
m_world->GetStats().IncNumDistCalcs();
- }
+ }
}
hdists[i][cell_id] = dist;
hdists[cell_id][i] = dist;
More information about the Avida-cvs
mailing list