I'm currently implementing the NEAT algorithm. But problems occur when testing it with problems which don't have a linear solution(for example xor). My xor only produces 3 correct outputs once at a time:
1, 0 -> 0.99 0, 0 -> 0 1, 1 -> 0 0, 1 -> 0
My genome class works fine, so I guess that the problem occurs on breeding or that my config is wrong.
const size_t population_size = 150; const size_t inputs = 3 (2 inputs + bias); const size_t outputs = 1; double compatibility_threshold = 3; double steps = 0.01; double perturb_weight = 0.9; double mutate_connection = 0.05; double mutate_node = 0.03; double mutate_weights = 0.8; double mutate_disable = 0.1; double mutate_enable = 0.2; double c_excess = 1; double c_disjoint = 1; double c_weight = 0.4; double crossover_chance = 0.75;
Does anyone has an idea what the problem might be? I proof read my code multiple times, but wasnt able the figure it out.
Here is the github link to my code(not documented): click