Tom's opinionated better logging

This commit is contained in:
Tom Helmuth 2023-11-07 20:23:49 -05:00
parent e488bbf9da
commit 1a1f442858
2 changed files with 16 additions and 5 deletions

View File

@ -1,7 +1,6 @@
(ns propeller.gp
"Main genetic programming loop."
(:require [clojure.string]
[clojure.pprint]
[propeller.genome :as genome]
[propeller.simplification :as simplification]
[propeller.variation :as variation]
@ -22,20 +21,21 @@
"Reports information each generation."
[evaluations pop generation argmap training-data]
(let [best (first pop)]
(clojure.pprint/pprint
(utils/pretty-map-println
{:generation generation
:best-plushy (:plushy best)
:best-program (genome/plushy->push (:plushy best) argmap)
:best-total-error (:total-error best)
:evaluations evaluations
:ds-indices (map #(:index %) training-data)
:ds-indices (if (:downsample? argmap)
(map #(:index %) training-data)
nil)
:best-errors (:errors best)
:best-behaviors (:behaviors best)
:genotypic-diversity (float (/ (count (distinct (map :plushy 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-total-error (float (/ (reduce + (map :total-error pop)) (count pop)))})
(println)))
:average-total-error (float (/ (reduce + (map :total-error pop)) (count pop)))})))
(defn cleanup
[]

View File

@ -151,3 +151,14 @@
(if (coll? thing-or-collection)
(rand-nth 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 "}"))