     (java.util.Collections/shuffle al rng)
     (clojure.lang.RT/vector (.toArray al))))
 
+(defn uniform-graph
+  "different strategy of generating connected graphs,
+  where points are put into boxes in order, making sure
+  they always have a neighbor"
+  [n]
+  (let [peturb (repeatedly n (fn [] [(* 0.5 (.nextDouble test-rng))
+                                     (* 0.5 (.nextDouble test-rng))]))
+        grid (for [i (range 0 25 0.5)
+                   j (range 0 25 0.5)]
+               [i j])
+
+        ;; peturb each grid point.
+        nodes (map (fn [[x y] [dx dy]] [(+ x dx) (+ y dy)])
+                   peturb
+                   (cycle grid))]
+    (mk-graph 1.0 1.1 1.2 nodes)))
+
 (def test-graphs
   (vec
     (concat

(defn mk-graph
  "[[x y]] -> Graph
  assumes points are connected"
  [points]
  (Graph. 1.0 1.1 1.2 ;; "standard" t-range, i-range, s-range
          (vec (map (fn [[x y]] (Graph$P. x y)) points))))

;; for repeatable results, specify seed for test vector

      :crossover-probability 0.50
      :simplification-probability 0.0
      :ultra-probability 0.0
      :print-csv-logs true
      :report-simplifications 0
      :print-history false})
   (shutdown-agents)))
