Genetic Code

Genetic algorithm Common Lisp code from Dean:
(defun reproduce (population) 
 (let ((offspring nil) 
 (d (distribution population))) 
 (dotimes (i (/ (length population) 2)) 
 (let ((x (selectone d)) 
 (y (selectone d))) 
 (crossover x y) 
 (setq offspring (nconc (list x y) offspring)))) 
 offspring))
(defun distribution (population) 
 (let* ((genotypes (remove-duplicates population :test #'equal)) 
 (sum (apply #'+ (mapcar #'fitness genotypes)))) 
 (mapcar #'(lambda (x) (cons (/ (fitness x) sum) x)) genotypes)))
(defun selectone (distribution) 
 (let ((random (random 1.0)) 
 (prob 0) 
 genotype) 
 (some #'(lambda (pair) 
 (incf prob (first pair)) 
 (if (> random prob) nil 
 ;;else 
 (setq genotype (rest pair)))) 
 distribution) 
 (mutate genotype)))
(defun crossover (x y) 
 (if (> (random 1.0) 0.6) (list x y) 
 ;;else 
 (let* ((site (random (length x))) 
 (swap (rest (nthcdr site x)))) 
 (setf (rest (nthcdr site x)) (rest (nthcdr site y))) 
 (setf (rest (nthcdr site y)) swap))))
(defun mutate (genotype) 
 (mapcar #'(lambda (x) 
 (if (> (random 1.0) 0.03) x 
 ;; else 
 (if (= x 1) 0 
 ;; else 
 1))) 
 genotype))
(defun fitness (x) 
 (let ((xarg (/ (string2num x) 1073741823.0)) 
 (v '(0.5 0.25 1.0 0.25)) 
 (c '(0.125 0.375 0.625 0.875)) 
 (w 0.003)) 
 (reduce #'+ (mapcar #'(lambda (vi ci) 
 (let ((xc (- xarg ci))) 
 (* vi (exp (* -1 (/ (* 2 w)) xc xc))))) 
 v c))))
(defun string2num (s) 
 (loop for xi in (reverse s) for p = 1 then (* p 2) sum (* xi p)))