If it is possible to parallelize the evaluation of individual problem functions effectively, some thought and, perhaps, experimentation will be needed to determine the level at which multitasking should be performed. This will obviously depend on the number of processors available, the intended population size and the potential speed-ups available. If the number of processors exceeds the population size (a highly parallel machine!), multi-level parallelization may be possible.
A significant component of a GA code is the random number generator,
which is essential to the processes of selection, crossover and
mutation. (See, for example, the sample code supplied with this
section.) Random number generators are often provided in standard
function libraries or as machine-specific functions. It is
important, particularly when tackling large scale problems requiring
thousands of iterations, that the random number generator used have
good spectral properties --- see the chapter on Random Number
Generators
for more details.