Print

Print


Dear Sean et al.

I wish that the List sent you a copy of your own message so that you
could reply to it and keep everything in the same thread.

In any case, some further investigation into my problem appears to
reveal that the current logic for ES does not take into account the
possibility of Individuals having the same fitness and properly
maintaining the distinction of "parent" and "child" as a result. This
leads to peculiar or at least counterintuitive results because there
is genetic drift that is not associated with clear cut improvements
in fitness.

As I understand the canonical 1 + 1 ES, the current "parent" solution
is mutated to create a candidate "child" solution. If the child
solution is better, the parent solution is discarded otherwise the
parent solution is retained. However, the current ES logic appears to
discard the parent if they are of equal fitness. This is probably not
the desired result as it sends you down a possibly different
evolutionary path. It is at least unexpected.

I have included example output and my params settings. Whether or not
this is a bug, I guess the question is...how do I fix it to work the
way I would expect?

As always, your help and assistance is greatly appreciated.

Cheers,
Steve

"X-Y" is from the method xYStatistics() so that "Pre-Evaluation"
means that it was output during the call to preEvaluationStatistics
(...).

Initial Generation. Only Post-Breeding is shown. I would infer from
this that x was a mutation on (B x x) since (B x x) was the initial
individual.

Post-Breeding
     Evaluated: F
     Fitness: f1098907648|16.0|i0|
     Tree 0:
      x
     Evaluated: T
     Fitness: f1098907648|16.0|i0|
     Tree 0:
      (B x x)

1st Generation or "Climb" Everything is fine up until Post-Breeding.
Post-Evaluation shows that x is no better than (B x x) but in Post-
Breeding, I'm shown that (C (B (B x x) x) (B (C (A x) x (A x)) (B (C
x x x) x)) x) is a mutation on x.

Pre-Evaluation
     Evaluated: F
     Fitness: f1098907648|16.0|i0|
     Tree 0:
      x
     Evaluated: T
     Fitness: f1098907648|16.0|i0|
     Tree 0:
      (B x x)
Post-Evaluation
     Evaluated: T
     Fitness: f1098907648|16.0|i0|
     Tree 0:
      x
     Evaluated: T
     Fitness: f1098907648|16.0|i0|
     Tree 0:
      (B x x)
Pre-Breeding
     Evaluated: T
     Fitness: f1098907648|16.0|i0|
     Tree 0:
      x
     Evaluated: T
     Fitness: f1098907648|16.0|i0|
     Tree 0:
      (B x x)
Post-Breeding
     Evaluated: F
     Fitness: f1098907648|16.0|i0|
     Tree 0:
      (C (B (B x x) x) (B (C (A x) x (A x)) (B (C x x x) x)) x)
     Evaluated: T
     Fitness: f1098907648|16.0|i0|
     Tree 0:
      x

2nd Generation or "Climb" Clearly (B x x) has been replaced by a not
worse child. I would think that ES means that parents are only
replaced by a better child. However, in this case where the child was
clearly better, it correctly replaces its parent (Post-Breeding (C (B
(B x x) x) (B (C (A x) x (A x)) (B (C x x x) x)) x) shows replacing x).

Pre-Evaluation
     Evaluated: F
     Fitness: f1098907648|16.0|i0|
     Tree 0:
      (C (B (B x x) x) (B (C (A x) x (A x)) (B (C x x x) x)) x)
     Evaluated: T
     Fitness: f1098907648|16.0|i0|
     Tree 0:
      x
Post-Evaluation
     Evaluated: T
     Fitness: f1091567616|9.0|i7|
     Tree 0:
      (C (B (B x x) x) (B (C (A x) x (A x)) (B (C x x x) x)) x)
     Evaluated: T
     Fitness: f1098907648|16.0|i0|
     Tree 0:
      x
Pre-Breeding
     Evaluated: T
     Fitness: f1091567616|9.0|i7|
     Tree 0:
      (C (B (B x x) x) (B (C (A x) x (A x)) (B (C x x x) x)) x)
     Evaluated: T
     Fitness: f1098907648|16.0|i0|
     Tree 0:
      x
Post-Breeding
     Evaluated: F
     Fitness: f1091567616|9.0|i7|
     Tree 0:
      (C (B (B x x) x) (B (A (C (A x) (C x (C x x x) x) x)) (B (C x x
x) x)) x)
     Evaluated: T
     Fitness: f1091567616|9.0|i7|
     Tree 0:
      (C (B (B x x) x) (B (C (A x) x (A x)) (B (C x x x) x)) x)

3rd Generation or "Climb" It happens again. Both the parent and child
of the last climb have the same fitness but the child replaces the
parent. (C (B (B x x) x) (B (A (C (A x) (C x (C x x x) x) x)) (B (C x
x x) x)) x) replaces (C (B (B x x) x) (B (C (A x) x (A x)) (B (C x x
x) x)) x).

Pre-Evaluation
     Evaluated: F
     Fitness: f1091567616|9.0|i7|
     Tree 0:
      (C (B (B x x) x) (B (A (C (A x) (C x (C x x x) x) x)) (B (C x x
x) x)) x)
     Evaluated: T
     Fitness: f1091567616|9.0|i7|
     Tree 0:
      (C (B (B x x) x) (B (C (A x) x (A x)) (B (C x x x) x)) x)
Post-Evaluation
     Evaluated: T
     Fitness: f1091567616|9.0|i7|
     Tree 0:
      (C (B (B x x) x) (B (A (C (A x) (C x (C x x x) x) x)) (B (C x x
x) x)) x)
     Evaluated: T
     Fitness: f1091567616|9.0|i7|
     Tree 0:
      (C (B (B x x) x) (B (C (A x) x (A x)) (B (C x x x) x)) x)
Pre-Breeding
     Evaluated: T
     Fitness: f1091567616|9.0|i7|
     Tree 0:
      (C (B (B x x) x) (B (A (C (A x) (C x (C x x x) x) x)) (B (C x x
x) x)) x)
     Evaluated: T
     Fitness: f1091567616|9.0|i7|
     Tree 0:
      (C (B (B x x) x) (B (C (A x) x (A x)) (B (C x x x) x)) x)
Post-Breeding
     Evaluated: F
     Fitness: f1091567616|9.0|i7|
     Tree 0:
      (C (B (B x x) x) (B (A (C (A x) (C x (C x x x) x) x)) (B (C (A
(C (B x x) (B x x) (C x x x))) (B (C x (A x) (A x)) (A x)) x) x)) x)
     Evaluated: T
     Fitness: f1091567616|9.0|i7|
     Tree 0:
      (C (B (B x x) x) (B (A (C (A x) (C x (C x x x) x) x)) (B (C x x
x) x)) x)

my.params

pop.subpop.0.size =                     2
es.mu.0 =                               1
es.lambda.0 =                           1
breed =                                 ec.es.MuPlusLambdaBreeder

pop.subpop.0.fitness =                  ec.gp.koza.KozaFitness
pop.subpop.0.duplicate-retries =        0
pop.subpop.0.species =                   ec.gp.GPSpecies
pop.subpop.0.species.ind =              ec.gp.GPIndividual
pop.subpop.0.species.pipe =             ec.gp.koza.MutationPipeline
pop.subpop.0.species.pipe.source.0 =    ec.es.ESSelection



------------------------------------------------------------------------
--------
On two occasions I have been asked, 'Pray, Mr. Babbage, if you put
into the machine wrong figures, will the right answers come out?' I
am not able rightly to apprehend the kind of confusion of ideas that
could provoke such a question. -- Charles Babbage