1. A method for performing an evolutionary algorithm comprising a fitness function and an ending condition, the method comprising: selecting one or more subpopulations of candidate solutions of relatively similar fitness values from a pool of available candidate solutions, processing the subpopulations according to the evolutionary algorithm until a termination condition is reached, merging subpopulations whose processing has terminated back into the pool, and, repeating said selecting, processing, and merging until the ending condition of the evolutionary algorithm is reached.