(breed agt location rand-gen population {:keys [genetic-operator-probabilities], :as argmap})

Returns an individual bred from the given population using the given parameters.



(perform-genetic-operator operator population location rand-gen {:keys [max-points track-instruction-maps], :as argmap})

Takes a single genetic operator keyword or a sequence of operator keywords, and performs them to create a new individual. Uses recursive helper function even with a single operator by putting that operator in a vector.


(perform-genetic-operator-list operator-list first-parent population location rand-gen argmap)

Recursively applies the genetic operators in operator-list, using first-parent as the first parent for each operator call, to create a new child.


(revert-to-parent-if-worse child parent rand-gen {:keys [error-function parent-reversion-probability], :as argmap})

Evaluates child and parent, returning the child if it is at least as good as the parent on every test case.


(revert-too-big-child parent child {:keys [replace-child-that-exceeds-size-limit-with atom-generators max-genome-size-in-initial-program max-points], :as argmap})

Determines what individual should replace a child program that exceeds the size limit. Options are: :parent – one of the parents :empty – an empty program :truncate – truncate child after max points :random – a random program In future, may implement :delete, which deletes some of the instructions in a parent.


(update-instruction-map-uuids individual)

Takes an individual and updates the UUIDs on every instruction-map in its :genome, except for the ones which are a random insertion.