anchor.diff:    (+ (expt (- p1-x p2-x) 2)
        (expt (- p1-y p2-y) 2)))
   
  -(defun get-relative-scores (scores)
  -  (let* ((fitness-total (reduce '+ scores))
  -	(relative-fitness (mapcar (lambda (x) (/ x fitness-total)) scores)))
  -    relative-fitness))
  -
   (defun get-best-chromosome-index (scores)
     (loop for score in scores
        for i from 0 
  
positive.code: 		     collect (coords->curve coords))))
  	 
         ;; selection
         do (let ((relative-scores (get-relative-scores scores)))
  	    (setf population
  		  (loop repeat population-size
  		     collect (let ((parent1 (select population relative-scores))
  				   (parent2 (select population relative-scores)))
  			       ;; crossover and mutation
  			       (mutate (crossover parent1 parent2) mutation-probability))))))))
  
  ;;;; genetic operations
  (defun initialize-population (population-size chromosome-length)
  
negative.code:     (setf score (- 10000000 score)) ;;TODO find max
      score))
  
  (defun select (population scores total-score)
    "Population is a list of chromosomes. Scores is a list of relative scores for each chromosome."
    (loop for score in scores
       for chromosome in population
       with current = 0
       with pick = (random total-score)
       do (incf current score)
         (when (> current pick)
  	 (return chromosome))))
  