Hi riXder,
I strongly believe you should not use your "lambdify overriding" for
other uses than basic testing purposes : it bypass the normal
evolution process by creating some individuals with a bad fitness.
For instance, if you try to minimize the fitness, all your too big
individuals will have 0 as fitness, and a higher (if not the highest)
probability to be picked for the next generation, even if their real
fitness is actually really bad. This may disturb a lot the evolution,
and select many not-so-good individuals.
The point is that a normal GP evolution should never reach this level
of complexity. Reaching this limit should tell you that the evolution
was anyway unproductive : the trees were so bloated that nothing
really happens anymore (except for really special cases).
Bloat is a recurrent problem in GP; maybe we will include some bloat
controllers in a future release of EAP, but at the moment, you may add
one of the simpler one, proposed by Koza. On standard GP problems, it
works generally well, although more efficient way exists (double
tournament, dynamic equalisation, etc.).
It simply puts a hard limit on the trees depth (usually 17, but you
may change it). You can add it by modifying the evolution algorithms
or the toolbox operators.
If your evolution reachs the maximum level really fast without fitness
improvement, even with the bloat control, well, maybe it's because the
primitives you use do not allow the evolution to create good
individuals : choosing the primitives set is always an headache in
GP...
To speed up the evolution, you may consider to use the Python
multiprocessing library to parallelize the evaluations : an example is
provided with EAP (mpga_onemax.py). It's easy to use and very
efficient on multicore computers.
Hope it'll be useful,
MAG
On 12 nov, 10:15, Paweł Szurpita <
pszurp...@gmail.com> wrote:
> 2010/11/12 fmder1 <
f.derainvi...@gmail.com>