Handle argmap adjustments outside of gp loop; add :gene when using autoconstructive crossover
This commit is contained in:
parent
be1e2aae78
commit
25e8efe255
@ -41,7 +41,7 @@
|
||||
#?(:clj (shutdown-agents))
|
||||
nil)
|
||||
|
||||
(defn gp
|
||||
(defn gp-loop
|
||||
"Main GP loop."
|
||||
[{:keys [population-size max-generations error-function instructions
|
||||
max-initial-plushy-size solution-error-threshold ds-parent-rate ds-parent-gens dont-end ids-type downsample?]
|
||||
@ -137,4 +137,17 @@
|
||||
(if (zero? (mod generation ds-parent-gens))
|
||||
(downsample/update-case-distances rep-evaluated-pop indexed-training-data indexed-training-data ids-type (/ solution-error-threshold (count indexed-training-data))) ; update distances every ds-parent-gens generations
|
||||
indexed-training-data)
|
||||
indexed-training-data))))))
|
||||
indexed-training-data))))))
|
||||
|
||||
(defn gp
|
||||
"Top-level gp function. Calls gp-loop with possibly-adjusted arguments."
|
||||
[argmap]
|
||||
(let [adjust-for-autoconstructive-crossover
|
||||
(fn [args]
|
||||
(let [prob (:autoconstructive-crossover (:variation args))
|
||||
n (:autoconstructive-crossover-enrichment args)]
|
||||
(if (and prob (> prob 0))
|
||||
(update args :instructions concat (repeat (or n 1) :gene))
|
||||
args)))]
|
||||
(gp-loop (-> argmap
|
||||
(adjust-for-autoconstructive-crossover)))))
|
@ -300,7 +300,7 @@
|
||||
[& args]
|
||||
(gp/gp
|
||||
(merge
|
||||
{:instructions (concat instructions [:gene]) ;; autox
|
||||
{:instructions instructions
|
||||
:error-function error-function
|
||||
:training-data (:train train-and-test-data)
|
||||
:testing-data (:test train-and-test-data)
|
||||
@ -309,9 +309,9 @@
|
||||
:max-initial-plushy-size 100
|
||||
:step-limit 10000
|
||||
:parent-selection :lexicase
|
||||
;:downsample? true
|
||||
;:ds-function :case-rand
|
||||
;:downsample-rate 0.5
|
||||
:downsample? true
|
||||
:ds-function :case-rand
|
||||
:downsample-rate 0.1
|
||||
;:parent-selection :tournament
|
||||
;:parent-selection :motley-batch-lexicase
|
||||
;:max-batch-size [1 2 4 8 16 32 64 128 256]
|
||||
@ -331,12 +331,13 @@
|
||||
;:alternation-rate [1 1/2 1/4 1/8 1/16 1/32 1/64 1/128 1/256]
|
||||
;:alignment-deviation [0 1 2 4 8 16 32 64 128]
|
||||
:variation {:ah-umad 0
|
||||
:umad 0.5 ;autox
|
||||
:autoconstructive-crossover 0.5 ;autox
|
||||
:umad 0.5
|
||||
:autoconstructive-crossover 0.5
|
||||
:alternation 0
|
||||
:reproduction 0
|
||||
:tail-aligned-crossover 0}
|
||||
;:replacement-rate 0.01
|
||||
:elitism false
|
||||
:single-thread-mode false}
|
||||
:single-thread-mode false
|
||||
:autoconstructive-crossover-enrichment 10}
|
||||
(apply hash-map (map #(if (string? %) (read-string %) %) args)))))
|
||||
|
Loading…
x
Reference in New Issue
Block a user