Next: , Previous: , Up: Components   [Contents][Index]


3.5 Super-Mutants

For many software objects, a large portion of the search time will be spent on compiling mutants in order to test their fitness. This overhead can be reduced significantly through the use of super-mutants, which bundle multiple changes into a single genome, guarded by runtime flags. This allows several mutants to be evaluated with a single compilation.

Super-mutants can be enabled with the :super-mutant-count argument to evolve. When this is greater than one, each iteration of the search loop will generate the indicated number of mutants. The mutants will then be combined into a super-mutant, producing a single phenome which is used to evaluate all variants.

This process is almost entirely transparent to the client code. The callback functions every-pre-fn, every-post-fn and filter will be called individually on each mutant. The test function will also be called on each variant, but calls to phenome will return a wrapper which invokes the super-mutant with the desired mutations enabled.

Super-mutants are currently only implemented for the specific software objects mentioned in the following subsections of this section.