Update complex_regression.cljc

This commit is contained in:
Ryan Boldi 2022-04-03 23:08:49 -04:00
parent 336710144d
commit 11b09c9be0

View File

@ -9,21 +9,22 @@
(defn- target-function
"Target function: f(x) = (x^3 + 1)^3 + 1"
[x]
(* (+ (* x x x) 1) (+ (* x x x) 1) (+ (* x x x) 1) + 1))
(let [x-new (+ (* x x x) 1)]
(+ (* x-new x-new x-new) 1)))
(def train-and-test-data
(let [train-inputs (range -10 11)
test-inputs (concat (range -20 -10) (range 11 21))]
(let [train-inputs (range -5.0 5.0 0.5)
test-inputs (range -5.25 5.75 0.5)]
{:train (map (fn [x] {:input1 (vector x) :output1 (vector (target-function x))}) train-inputs)
:test (map (fn [x] {:input1 (vector x) :output1 (vector (target-function x))}) test-inputs)}))
(def instructions
(list :in1
:integer_add
:integer_subtract
:integer_mult
:integer_quot
:integer_eq
:float_add
:float_subtract
:float_mult
:float_quot
:float_eq
:exec_dup
:exec_if
'close
@ -34,7 +35,7 @@
"Finds the behaviors and errors of an individual. The error is the absolute
deviation between the target output value and the program's selected behavior,
or 1000000 if no behavior is produced. The behavior is here defined as the
final top item on the INTEGER stack."
final top item on the FLOAT stack."
([argmap data individual]
(let [program (genome/plushy->push (:plushy individual) argmap)
inputs (map (fn [x] (first (:input1 x))) data)
@ -45,7 +46,7 @@
program
(assoc state/empty-state :input {:in1 input})
(:step-limit argmap))
:integer))
:float))
inputs)
errors (map (fn [correct-output output]
(if (= output :no-stack-item)
@ -68,11 +69,14 @@
:error-function error-function
:training-data (:train train-and-test-data)
:testing-data (:test train-and-test-data)
:max-generations 500
:max-generations 5000
:population-size 500
:max-initial-plushy-size 100
:step-limit 200
:parent-selection :lexicase
:parent-selection :ds-lexicase
:ds-function :case-maxmin
:downsample-rate 0.1
:case-t-size 20
:tournament-size 5
:umad-rate 0.1
:variation {:umad 1.0 :crossover 0.0}