Author Archive for timc09

07
Apr

Success!

Completed function for replacing some percentage of all point on a given tree with new subtrees

(defn mutateAll
“Mutates Across the board with p % of every point being replaced by a subtree”
[i p]
(let [old-genome (:genome i)
new-genome (loop [z old-genome i ((* count-points old-genome (/ p 100)) )]
(if (zero? i)
(zip/root (zip/replace z (random-code 20 pushcollider-atom-generators)))
(recur (zip/next z) (dec i))))]
(if (> (count-points new-genome) 50)
i
(individual. new-genome (evaluate new-genome)))))

~Tim

10
Mar

Update 3/10

I’ve been working with push collider. It’s slow going.

~Tim

03
Mar

working on Euler problems 3/3

I’ve been working on Euler problems to try to get more familiar with Clojure.

~Tim

24
Feb

2/23 struggling with auto simplify

for this week I set the goal of implementing auto simplify in push collider. It seems like it should be much easier than it is proving to be. I’m having a lot of trouble understanding the auto simplify code in clojush. As a result, I don’t actually know what the numbers I’m putting into the function do.

~Tim

17
Feb

update 2/17

I didn’t play with Clojure as much as I would like this week, I’m finding that learning the peculiarities of eclipse is unexpectedly challenging. despite still getting some errors I don’t know how to deal with, I am getting a feel for clojure.

~Tim

10
Feb

Getting familiar with Clojure

This week, I’ve been playing around in Eclipse trying to get a grip on Clojure. I was not able to run Clojush. It told me it could not initialize the editor, which is a problem which is over my head a bit so I took that as an opportunity to focus on Clojure. I’ve been working on simple simple functions, getting used to the sytax of things like defn.

10
Feb

Review of Towards Practical Autoconstructive Evolution

This is the Latest paper on Autopush. The first section describes the need for evolution in programs as well as why autoconstructive evolution is superior to  traditional “hard coded” evolutions techniques. The second section discusses Push and Pushpop as precursors to an autoconstructive model. The third section is the main discussion of Autopush. It details how Autopush is different from Pushpop, i.e. it no longer has a child stack because the exec stack is a more expressive and useful way of executing code which frees up the code stack for storing child code. It also now reproduces asexually which avoids a huge problem where the code entangles itself in the code of it’s parents and siblings Autopush also has ways of handling situations where the code is not changing in terms on functionality from generation to generation. The next two sections show examples of Autopush and conclude that while the autoconstructive evolution processes are not yet on par with hand coded processes, Autopush is a step in the right direction.