geneticDifference method
Implementation
num geneticDifference(Genome g2) {
var g1 = this;
int maxConnections = max(g1.connections.length, g2.connections.length);
if (maxConnections == 0) {
return 0;
}
int connectionDifference = 0;
num weightDifference = 0;
for(var conn1 in g1.connections) {
if (g2.connections.any((c) => c.identifier == conn1.identifier)) {
var conn2 = g2.connections.singleWhere((c) => c.identifier == conn1.identifier);
if (conn1.enabled && conn2.enabled) {
weightDifference += (conn1.weight - conn2.weight).abs();
} else {
connectionDifference++;
}
} else {
connectionDifference++;
}
}
for(var conn2 in g2.connections) {
if (!g1.connections.any((c) => c.identifier == conn2.identifier)) {
connectionDifference++;
}
}
return connectionDifference / maxConnections + weightDifference;
}