[racket] Redefinition of initial bindings/ Resessive genes in GP

From: jukka.tuominen at finndesign.fi (jukka.tuominen at finndesign.fi)
Date: Sat Jun 30 05:39:07 EDT 2012

Dear list,

regarding my Genetic Programming hobby, I have a question about
redefinitions in the source code.

Just briefly, the process goes so that a GP individual is given a chance
to reproduce an offspring by executing its function X. At another point of
time the offspring is given a change to run the fittness test by executing
its function Y.

The offspring is basically a module source code. Due to GP's crossover and
mutation functions, the offsprings source code can suggest function
redefinitions in (atleast) two ways. For example

(define a 3)
(define a 7)
(set! a (+ 1 2))
(define a b)
(set! a (+ b c))

Now, when the offspring function "a" is called, will it return error or
one of the definitions above? If latter, then which one will it pick and
why? I mostly run the process from a shell commandline/ racket. If racket
doesn't allow redefinitions by default, how could I change it?

This may seem silly, but actually by having the redefitions allowed can
have positive benefits, I think:

- You can have "resessive" alternatives to functions that increase
diversity in the population (many possible answers).

- You can preserve a "once useful" definition in the population that may
become useful once again after a long time (~like resistence to a serious

- Giving the evolution the time and space needed to "work out" more
complex redefinitions. When unactivated (resessive), the redefinition can
use many generations of crossover and mutations to come up with a
radically different solution (and also bypass the local optima obstacle).
Then, all you need is to remove the prominant definition to active the
new, resessive definition. Crossover or mutation will handle the removal
easily in the future generations.

All this allows hidden evolution to take place, while the prominant
functionality is always the fittest known (fenotype).

Now, I could be wrong there... Comments?

br, jukka

Posted on the users mailing list.