 (defn uniform-float-mutation
   "Uniformly mutates individual. For each float in the genome, there is
    uniform-mutation-constant-tweak-rate probability of being mutated."
-  [ind {:keys [uniform-mutation-constant-tweak-rate uniform-mutation-float-gaussian-standard-deviation
+  [ind {:keys [uniform-mutation-constant-tweak-rate 
+               uniform-mutation-float-gaussian-standard-deviation
                maintain-ancestors atom-generators]
         :as argmap}]
-  (let [constant-mutator (fn [token]
+  (let [uniform-mutation-constant-tweak-rate 
+        (number uniform-mutation-constant-tweak-rate)
+        
+        uniform-mutation-float-gaussian-standard-deviation
+        (number uniform-mutation-float-gaussian-standard-deviation)
+        
+        constant-mutator (fn [token]
                            (let [const (:instruction token)]
                              (if (float? const)
                                (assoc token

  "Returns the individual with each element of its genome possibly preceded or followed by
  a new gene, with probability given by uniform-addition-rate."
  [ind {:keys [uniform-addition-rate maintain-ancestors atom-generators] :as argmap}]
  (let [rate (if (number? uniform-addition-rate)
               uniform-addition-rate
               (lrand-nth uniform-addition-rate))
        new-genome (vec (apply concat
                               (map #(if (< (lrand) rate)
                                      (lshuffle [% 

  [parent1 parent2 
   {:keys [uniform-combination-and-deletion-rate maintain-ancestors atom-generators] 
    :as argmap}]
  (let [combination-rate (number uniform-combination-and-deletion-rate)
        deletion-rate (/ 1 (+ (/ 1 combination-rate) 1))
        after-combination (vec 
                            (apply concat
