Yes, that would make sense. Unfortunately, there's not a nice way to
do this at the moment. Each candidate program's evaluation is rather
independent of the others. This is a bit of a flaw actually, and will
be changing in the v.2.0 release.
I think there might be a slightly hacky work around you could use
though. Each program caches its fitness when it is first requested
(unless you've turned fitness caching off). So, you can artificially
create an evaluation step, when you evaluate all the programs
simultaneously.
The way I'd go about this is to use the generation hook, which should
occur before any programs are evaluated (unless any of your genetic
operators call getFitness on the child programs it creates - probably
not). In the hook, you'll receive the whole population. Calculate the
fitness of all the programs in parallel here, storing the fitness
values in an array the same length as the population. Then, before
returning the hook, iterate over the population (keeping track of the
index) and call each program's getFitness method in turn. This will
trigger a call to your model's getFitness method. Replace your model's
current getFitness method with a lookup to the array using the index.
This should result in a population of programs with the correct
fitnesses cached.
Hopefully that makes sense!
Tom