Results 64 comments of Tom Helmuth

Yes, you did mention that somewhere (and in the code), and I had the feeling I was doing something wrong but I had forgotten where to look for it. After...

Nope. The file hasn't changed in 5 months. Still broken.

While I agree, your second test should have parentheses around `make-push-state`, no? You need some tests for your tests :stuck_out_tongue_winking_eye:

What you've described is really easy to do in the current system. For example, see the [Digital Multiplier problem's atom-generators here](https://github.com/lspector/Clojush/blob/25ffe4efa42ed2d70f611446a7d165f06275a9d1/src/clojush/problems/boolean/digital_multiplier.clj#L71). Here, 1/2 the time it picks a boolean instruction...

Does your :8ball: tell you which instructions evolution will think it doesn't need but actually needs a lot of? Mine doesn't, so if yours does I'd love to borrow it...

`make-push-state` makes a push state with all the stacks. Do you mean a state with specific items pushed onto specified stacks? If so, we don't have one. Though, I've never...

Push states are just maps, so this is also easy to do: ``` (assoc (make-push-state) :integer '(1 2 3 4 5) :input '("foo" '(7 2 false) [1 3 5 7])...

Basically, every instruction we've defined has some metadata associated with it that defines what stacks it manipulates. For example, let's look at [code_do*range](https://github.com/lspector/Clojush/blob/master/src/clojush/instructions/code.clj#L97). We can see that `code_do*range` has the...

I should also add "error diversity" in addition to behavioral diversity. Behavioral diversity requires the fitness function to store the behaviors, where error diversity would not.

Not sure if you have any solutions in mind, but adding metadata to those instructions seems like a good option.