(apply-simplification-step-to-genome genome simplification-step-probabilities)

Takes a genome and a map of transformation/probability pairs. Picks a transformation probabilistically, and then applies it to the genome by silencing/unsilencing/no-oping random genes that aren’t already of that type.


(auto-simplify ind error-function steps print? progress-interval)(auto-simplify ind error-function steps print? progress-interval maintain-ancestors)

Auto-simplifies the provided individual.


(auto-simplify-from-program p error-function steps print? progress-interval)


(auto-simplify-plush ind error-function steps print-progress-interval)(auto-simplify-plush ind error-function steps print-progress-interval simplification-step-probabilities)

Automatically simplifies the genome of an individual without changing its error vector on the training set, based on the error-function. steps is the number of hill-climbing evaluations to test. print-progress-interval is how often to print progress of the simplification; if it is set to 0, then nothing will be printed. simplification-step-probabilities is a map of probabilities that are used to select what change to make during each step of the simplification. Each change is represented as a map with the following options for the keys, each of which has an integer of how many of those changes to make: :silence - number of unsilenced or no-op genes to set :silent = true :unsilence - number of silenced or no-op genes to set :silent = false :no-op - number of unsilenced or silenced genes to set :silent = :no-op


(change-silent-at-indices genome indices new-value)

Changes the value of the :silent tag on the gene at each index of indices into new-value.


(choose-random-k-without-replacement k elements)

Selects k random elements of input list, without replacement. If fewer than k exist, selects all.


(remove-paren-pair program)

Removes one random pair of parens from a program. Cannot remove outermost pair.


(select-random-weighted-item prob-map)

Given map of item/probability key/values, picks an item probabilistically based on the probabilities.