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


3.3 Neutral Variants

Using the test function defined in the previous example (see Evaluation), the code block below generates a number of variants of the original program which still satisfy the test suite, known as “neutral mutants” (see Software Mutational Robustness available at http://arxiv.org/abs/1204.4224).

(in-package :software-evolution-example)

(defvar variants nil "List to hold accumulated neutral variants.")

(let ((orig (from-file (make-instance 'asm) "../test/gcd/gcd.s")))
  (setf (fitness orig) (test orig))
  (do ((variant (mutate (copy orig))))
      ((>= (length variants) 10) variants)
    (setf (fitness variant) (test variant))
    (when (= (fitness variant) (fitness orig))
      (push variant variants))))