vektordev / GP

Genetic Programming with a twist: The code generator tries to mutate itself. Haskell-based
GNU General Public License v2.0
6 stars 1 forks source link

Local Max Detection #7

Open vektordev opened 8 years ago

vektordev commented 8 years ago

Current Local Max detection is very oversimplified: Everything beyond a certain compilation rate is bad. A better idea would be to look at the history of compilation rates: If there's a huge jump in there, that's bad.

vektordev commented 8 years ago

Local Max status is inherited now, and retroactively too. Detection is done as a function of compilation rate gain since parent and the number of children. The more children a genome has, the less its compilation rate gain has to be. A small margin exists though, and small changes in compilation rate are permitted no matter the amount of children.

This serves the purpose of not punishing the lucky few that happen to produce a compiling offspring right away. It also forces the individual to learn slowly, preventing the sudden jump to near-perfect compilation rate we've been seeing.

This still needs work though, as there's probably a lot of misclassification going on. Useful metrics will probably look at aggregate statistics from the genome's subtree: Is the own fitness value similar to that of all children? Is the own compilation rate similar to that of all children? Are all children already local maxima?