Hi Colin,
I wrote a new mutation method that disconnects one input and reconnects it to another input.
Works ok, but I'm getting "CorrelationResults failed integrity check" assertion error.
What do I need to do?
private void Mutate_ReconnectInputs()
{
NeuronGene new_source = _neuronGeneList[_genomeFactory.Rng.Next(_genomeFactory.InputNeuronCount)];
//try to find source and target suitable for reconnecting 10 times max
for (int i = 0; i < 10; i++)
{
ConnectionGene con = _connectionGeneList[_genomeFactory.Rng.Next(_connectionGeneList.Count)];
if (con.SourceNodeId < _genomeFactory.InputNeuronCount && con.SourceNodeId != new_source.Id)
{
NeuronGene old_source = _neuronGeneList.GetNeuronById(con.SourceNodeId);
NeuronGene old_target = _neuronGeneList.GetNeuronById(con.TargetNodeId);
if (old_target.SourceNeurons.Contains(new_source.Id)) continue;
if (new_source.TargetNeurons.Contains(old_target.Id)) continue;
old_source.TargetNeurons.Remove(old_target.Id);
old_target.SourceNeurons.Remove(old_source.Id);
new_source.TargetNeurons.Add(old_target.Id);
old_target.SourceNeurons.Add(new_source.Id);
con.IsMutated = true;
con.SourceNodeId = new_source.Id;
con.TargetNodeId = old_target.Id;
break;
}
}
}
Hi Colin, I wrote a new mutation method that disconnects one input and reconnects it to another input. Works ok, but I'm getting "CorrelationResults failed integrity check" assertion error. What do I need to do?