;lsyscrossoverdemo.l (load "lsystem-crossover.l") (setf *DEMO* t) (setf *alphabet* '(a b c d e f g h)) (setf *rules* '((a a b d e) (b b e) (c d c d d) (d a a a) (e d c e) (f a b d) (g a a d e) (h f g e f))) (setf inds '()) (dotimes (i 50 NIL) (setf temp (make-individual (make-lsys *rules* '(a)) i)) (setf (individual-fitness temp) (random 100)) (setf inds (append inds (list temp))) ) (setf pop1 (make-population inds 1 #'perform-mutations #'perform-crossovers 40 20 40)) (format t "Original population--~%") (visualize-population pop1) (format t "contains ~A individuals~%" (length (population-individuals pop1))) (format t "Next generation...~%") (setf pop2 (next-generation pop1)) (format t "contains ~A individuals~%" (length (population-individuals pop2))) (format t "Next generation (again)...~%") (setf pop3 (next-generation pop2)) (format t "contains ~A individuals~%" (length (population-individuals pop3))) (format t "running for 30 generations...~%") (setf *demo* NIL) (setf popn pop3) (dotimes (i 29 NIL) (setf popn (next-generation popn)) ) (setf *demo* t) (setf popn (next-generation popn)) (format t "Exiting...~%") (bye)