Rework handling of defaults to top-level gp function

This commit is contained in:
Lee Spector 2024-01-07 11:49:35 -05:00
parent f0424979b5
commit 81ef86d4ee

View File

@ -48,17 +48,43 @@
(prn {:run-completed true}) (prn {:run-completed true})
nil) nil)
(defn fill-defaults
"Returns argmap with any unspecified values filled with defaults."
[argmap]
(let [defaults
{:bmx-exchange-rate 0.5
:bmx-gene-length-limit 10
:bmx-gap-change-probability 0.001
:bmx-complementary? false
:dont-end false
:downsample? true
:ds-function :case-maxmin
:downsample-rate 0.05
:ds-parent-rate 0.01
:ds-parent-gens 10
:error-function (fn [& args] (println "ERROR FUNCTION NOT PROVIDED"))
:ids-type :solved ; :solved or :elite or :soft
:max-initial-plushy-size 100
:max-generations 1000
:parent-selection :lexicase
:population-size 1000
:single-thread-mode false
:solution-error-threshold 0
:step-limit 1000
:testing-data []
:training-data []
:umad-rate 0.1
:variation {:umad 1}}
defaulted (merge defaults argmap)]
(merge defaulted ; use the map below to include derived values in argmap
{:bmx? (some #{:bmx :bmx-umad} (keys (:variation defaulted)))})))
(defn gp (defn gp
"Main GP function" "Main GP function"
[{:keys [population-size max-generations error-function solution-error-threshold [non-default-argmap]
ds-parent-rate ds-parent-gens dont-end ids-type downsample?] (let [argmap (fill-defaults non-default-argmap)
:or {solution-error-threshold 0.0 {:keys [population-size max-generations error-function solution-error-threshold dont-end
dont-end false downsample? ds-parent-rate ds-parent-gens ids-type]} argmap]
ds-parent-rate 0
ds-parent-gens 1
ids-type :solved ; :solved or :elite or :soft
downsample? false}
:as argmap}]
;; print starting args ;; print starting args
(prn {:starting-args (update (update argmap :error-function str) (prn {:starting-args (update (update argmap :error-function str)
:instructions :instructions
@ -171,4 +197,4 @@
(/ solution-error-threshold (/ solution-error-threshold
(count indexed-training-data))) (count indexed-training-data)))
indexed-training-data) indexed-training-data)
indexed-training-data)))))) indexed-training-data)))))))