Tom's opinionated better logging
This commit is contained in:
parent
e488bbf9da
commit
1a1f442858
@ -1,7 +1,6 @@
|
|||||||
(ns propeller.gp
|
(ns propeller.gp
|
||||||
"Main genetic programming loop."
|
"Main genetic programming loop."
|
||||||
(:require [clojure.string]
|
(:require [clojure.string]
|
||||||
[clojure.pprint]
|
|
||||||
[propeller.genome :as genome]
|
[propeller.genome :as genome]
|
||||||
[propeller.simplification :as simplification]
|
[propeller.simplification :as simplification]
|
||||||
[propeller.variation :as variation]
|
[propeller.variation :as variation]
|
||||||
@ -22,20 +21,21 @@
|
|||||||
"Reports information each generation."
|
"Reports information each generation."
|
||||||
[evaluations pop generation argmap training-data]
|
[evaluations pop generation argmap training-data]
|
||||||
(let [best (first pop)]
|
(let [best (first pop)]
|
||||||
(clojure.pprint/pprint
|
(utils/pretty-map-println
|
||||||
{:generation generation
|
{:generation generation
|
||||||
:best-plushy (:plushy best)
|
:best-plushy (:plushy best)
|
||||||
:best-program (genome/plushy->push (:plushy best) argmap)
|
:best-program (genome/plushy->push (:plushy best) argmap)
|
||||||
:best-total-error (:total-error best)
|
:best-total-error (:total-error best)
|
||||||
:evaluations evaluations
|
:evaluations evaluations
|
||||||
:ds-indices (map #(:index %) training-data)
|
:ds-indices (if (:downsample? argmap)
|
||||||
|
(map #(:index %) training-data)
|
||||||
|
nil)
|
||||||
:best-errors (:errors best)
|
:best-errors (:errors best)
|
||||||
:best-behaviors (:behaviors best)
|
:best-behaviors (:behaviors best)
|
||||||
:genotypic-diversity (float (/ (count (distinct (map :plushy pop))) (count pop)))
|
:genotypic-diversity (float (/ (count (distinct (map :plushy pop))) (count pop)))
|
||||||
:behavioral-diversity (float (/ (count (distinct (map :behaviors pop))) (count pop)))
|
:behavioral-diversity (float (/ (count (distinct (map :behaviors pop))) (count pop)))
|
||||||
:average-genome-length (float (/ (reduce + (map count (map :plushy pop))) (count pop)))
|
:average-genome-length (float (/ (reduce + (map count (map :plushy pop))) (count pop)))
|
||||||
:average-total-error (float (/ (reduce + (map :total-error pop)) (count pop)))})
|
:average-total-error (float (/ (reduce + (map :total-error pop)) (count pop)))})))
|
||||||
(println)))
|
|
||||||
|
|
||||||
(defn cleanup
|
(defn cleanup
|
||||||
[]
|
[]
|
||||||
|
@ -151,3 +151,14 @@
|
|||||||
(if (coll? thing-or-collection)
|
(if (coll? thing-or-collection)
|
||||||
(rand-nth thing-or-collection)
|
(rand-nth thing-or-collection)
|
||||||
thing-or-collection))
|
thing-or-collection))
|
||||||
|
|
||||||
|
(defn pretty-map-println
|
||||||
|
"Takes a map and prints it, with each key/value pair on its own line."
|
||||||
|
[mp]
|
||||||
|
(print "{")
|
||||||
|
(let [mp-seq (seq mp)
|
||||||
|
[first-key first-val] (first mp-seq)]
|
||||||
|
(println (pr-str first-key first-val))
|
||||||
|
(doseq [[k v] (rest mp-seq)]
|
||||||
|
(println (str " " (pr-str k v)))))
|
||||||
|
(println "}"))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user