(age-mediate pop {:keys [age-mediated-parent-selection]})

If age-mediated-parent-selection is falsy, returns pop. Otherwise, age-mediated-parent-selection should be a vector of [pmin pmax] with pmin and pmax both being between 0 and 1 (inclusive) with pmin + pmax <= 1.0. Then, with probability pmin, returns individuals in pop with age @min-age; with probability pmax, returns all of pop; with probability (- 1.0 pmin pmax), selects an age cutoff uniformly from those present in the population and returns individuals with the cutoff age or lower.


(nonempties-for-autoconstruction pop {:keys [autoconstructive]})

When :autoconstuctive is truthy, and at least one individual in pop has a non-empty genome, returns only those empty genomes.


(one-individual-per-error-vector-for-lexicase pop {:keys [parent-selection]})

When :parent-selection is a lexicase method, returns onl one random individual to represent each error vector.


(preselect pop argmap)

Returns the population pop reduced as appropriate considering the settings for age-mediation, screening, selection method, and autoconstruction.


(screen pop {:keys [random-screen]})

If random-screen is falsy, returns pop. Otherwise, random-screen should be a map with values for :criterion and :probability. Then, with probability (- 1 :probability), again returns pop. Otherwise, a value is chosen randomly from the :grain-size values of the individuals in pop, and returns the individuals with that :grain-size or smaller.