You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Replaced search for unused connection in MutateConnection with ReachabilityChecker, which can now return unused random connections.
* This removed the need for MutateConnections to take in a NeuralNet reference as an argument, and so it was removed, and also removed
from the Organism struct, since this was the primary motivation for placing this pointer in the organism.
- Added Population copy constructor, as well as move and copy assignment operators.
- ReachabilityChecker now required the number of inputs be specified on construction, and so a member was added to the Genome to keep
track of the number of sensor nodes (input + bias) added into a genome.
- In both AddNode & AddConnection a static member was used for saving the last innovation number, this was meant to be global only within
a genome, thus it was made a class member. This is also the case for node indexes in AddNode for producing innovation numbers for newly
created nodes. This could probably be redesigned a bit.
- In Genome::MateWith, the very first action is now to add the sensor nodes of one of the parents into the child since they should be
static and unchanging in the evolution. This then prevents any issues with reordering of nodes where the input nodes would possibly
not be the first nodes in the node_genes vector. This is particularly important for the ReachabilityChecker which assumes the first
num_inputs nodes are inputs.
- Fixed a bug in NeuralNet::would_make_loop which would not correctly mark a connection from a node to itself as recurrent. Now this
check is made up front (if i==j return true).
- There was a bug with the culling_ratio in the species implementation where if the culling_ratio was 0.5 and there were only two species
crossover could not proceed as there are two few specimen. Now if the number of specimen in a species is ==2 and the culling ratio is
less than or equal to 0.5, the more fit of the two specimen is mutated and added to the output genome list.
- Added neat_xor test which after the above changes runs to completion, however is not finding a solution consistently or quickly enough.
0 commit comments