removed simplification complexity from gp.cljc and added it to simplification.cljc.
also updated tests to reflect this
This commit is contained in:
parent
793ff2880d
commit
a7b625d942
@ -60,8 +60,8 @@
|
||||
(do (prn {:success-generation generation})
|
||||
(prn {:total-test-error
|
||||
(:total-error (error-function argmap (:testing-data argmap) best-individual))})
|
||||
(if (:simplification? argmap)
|
||||
(let [simplified-plushy (simplification/auto-simplify-plushy argmap (:plushy best-individual) (:simplification-steps argmap) error-function (:training-data argmap) (:simplification-k argmap) (:simplification-verbose? argmap))]
|
||||
(when (:simplification? argmap)
|
||||
(let [simplified-plushy (simplification/auto-simplify-plushy (:plushy best-individual) error-function argmap)]
|
||||
(prn {:total-test-error-simplified (:total-error (error-function argmap (:testing-data argmap) (hash-map :plushy simplified-plushy)))}))))
|
||||
;;
|
||||
(>= generation max-generations)
|
||||
|
@ -13,7 +13,7 @@
|
||||
"deletes the values at given set of indices"
|
||||
[indices plushy]
|
||||
(let [sorted-indices (sort > indices)]
|
||||
(keep-indexed #(if (not (some #{%1} sorted-indices)) %2) plushy)))
|
||||
(keep-indexed #(when (not (some #{%1} sorted-indices)) %2) plushy)))
|
||||
|
||||
(defn delete-k-random
|
||||
[k plushy]
|
||||
@ -21,13 +21,13 @@
|
||||
|
||||
(defn auto-simplify-plushy
|
||||
"naive auto-simplification"
|
||||
[argmap plushy steps error-function training-data k verbose?]
|
||||
(if verbose? (prn {:start-plushy-length (count plushy) :k k}))
|
||||
[plushy error-function {:keys [simplification-steps training-data simplification-k simplification-verbose?] :as argmap}]
|
||||
(when simplification-verbose? (prn {:start-plushy-length (count plushy) :k simplification-k}))
|
||||
(let [initial-errors (:errors (error-function argmap training-data {:plushy plushy}))]
|
||||
(loop [step 0 curr-plushy plushy]
|
||||
(if (< steps step)
|
||||
(do (if verbose? (prn {:final-plushy-length (count curr-plushy) :final-plushy curr-plushy})) curr-plushy)
|
||||
(let [new-plushy (delete-k-random (rand-int k) curr-plushy)
|
||||
(if (< simplification-steps step)
|
||||
(do (when simplification-verbose? (prn {:final-plushy-length (count curr-plushy) :final-plushy curr-plushy})) curr-plushy)
|
||||
(let [new-plushy (delete-k-random (rand-int simplification-k) curr-plushy)
|
||||
new-plushy-errors (:errors (error-function argmap training-data {:plushy new-plushy}))
|
||||
new-equal? (= new-plushy-errors initial-errors)]
|
||||
(recur (inc step)
|
||||
|
@ -71,8 +71,8 @@
|
||||
|
||||
(t/testing "auto-simplify-plushy"
|
||||
(t/testing "should handle having an empty plushy"
|
||||
(t/is (= (s/auto-simplify-plushy {} '() 100 (fn [argmap data plushy] 0) {} 3 false) '())))
|
||||
(t/is (= (s/auto-simplify-plushy '() (fn [argmap data plushy] 0) {:simplification-steps 100 :simplification-k 4 :simplification-verbose? false}) '())))
|
||||
(let [plushy '(:exec_dup 1 :integer_add close :in1 :integer_add 0 :in1 :in1 :integer_mult :integer_add)]
|
||||
(t/testing "should decrease size of plushy that always has perfect scores"
|
||||
(t/is (< (count (s/auto-simplify-plushy {} plushy 5 (fn [argmap data plushy] 0) {} 3 false)) (count plushy)))
|
||||
(t/is (< (count (s/auto-simplify-plushy {} plushy 1 (fn [argmap data plushy] 0) {} 10 false)) (count plushy))))))
|
||||
(t/is (< (count (s/auto-simplify-plushy plushy (fn [argmap data plushy] 0) {:simplification-steps 100 :simplification-k 4 :simplification-verbose? false})) (count plushy)))
|
||||
(t/is (< (count (s/auto-simplify-plushy plushy (fn [argmap data plushy] 0) {:simplification-steps 100 :simplification-k 10 :simplification-verbose? false})) (count plushy))))))
|
Loading…
x
Reference in New Issue
Block a user