ADFs and the Evolution of Evolvability

These are the latest results of the evolvability experiments I've been running.  Unless overridden, you can assume the following setup for all experiments:
 
 
Target Function y = A sin(Ax)
Fitness samples 200, domain is randomly chosen from [-1, +1)
Regenerated after every generation
Population Size 1000
Generations 1000
Operations Crossover (90%)
Subtree Mutation (10%)
Reproduction (5%)
Reproduction of best, 2nd best, etc... from last generation (5%)
Limits Depth <= 17
Selection Generational, Tournament (size = 7)
Terminals and non-terminals sin, cos, rlog, exp, +, -, *, /, random constant from (-1..1) (common)
X, ADF0 (RPB only)

The value of A was perturbed either every generation, or every 5 generations.  The space of time between perturbations of A is an epoch.  Thus an epoch is either 1 or 5 generations long.  Measurements at the end of an epoch occurred at the end of a generation, and just before A is perturbed.  Measurements at the start of an epoch occurred immediately after A was perturbed, and before any evolution could occur.  In either case, I measured the best of generation, and averaged over a number of runs.

Perturbation of A was either brownian or uniform.  If it was brownian, then it started with A = 3, and was perturbed by adding a uniform random value from the range [-1, +1].  If it was uniform, then A again started at 3, and was perturbed by setting it to a new value from the range [-3, 9].

Fitness is measured in the number of hits (sample points where the result was within 0.1 of correct).
Fitness difference is the fitness at the end of an epoch minus the fitness at the beginning of that same epoch.  Thus, positive values of fitness difference indicate the degree of evolvability of the population at that point.
Tree sizes are measured in the average number of nodes contained in the best of population.

Experiment 1 (every generation, brownian)

Fitness
Fitness Differences
Tree Sizes

Experiment 2 (every 5 generations, uniform)

deprecated.  Experiment 4 contains the same information.

Experiment 3 (every 5 generations, brownian)

Fitness
Fitness Differences
Tree Sizes

Experiment 4 (every 5 generations, uniform)

Fitness
Fitness Differences
Tree Sizes

Experiment 5 (allow X in ADF0)

Like Experiment 4, but expand ADF0's terminal set to allow X.  One interesting question is to what extent ADF0 actually uses the value X.  In other words, to what extent is ADF0 still returning a constant?  Counting the number of X's in the function is no good, since they may occur in expressions such as (- X X).  Calculating the standard deviation of the points is also difficult, because large values skew the averages.

I measure constancy by rounding all the values returned by ADF0 to the nearest 0.01 and then counting the unique values.  Thus, a purely constant ADF0 returns a value of 1.

Fitness
Fitness Differences
Tree Sizes
Constancy of ADF0

Experiment 6 (tracking a constant)  -- not up to date

Like Experiment 4, but set the fitness function to be y = A.  This shows the potential for evolvability if the calculation of A is segregated purely into the ADF.

Fitness
Fitness Differences
Tree Sizes

Experiment 7 (every generation, uniform)

Fitness
Fitness Differences
Tree Sizes