A Clojure platform for generative programming.
The library implements a variety of search operators, which are in general functions operating on collections of Answer
objects.
uniform-selection
: pick one randomly sampled Answer
from a collectionuniform-cull
: remove one randomly sampled Answer
from a collectionsimple-selection
: return all the best-scoring Answers
from a collection, given a specified Rubric
simple-cull
: remove all the worst-scoring Answers
from a collection, given a specified Rubric
lexicase-selection
: randomly permute a collection of Rubrics
, and recursively retain the best-scoring Answers
on each one (selectedin turn). For example, if the Rubrics
are numbered [1 2 3]
, it might randomly permute these to [3 1 2]
; the resulting subset of Answers
are obtained by selecting the best at Rubric
3, then the subset of those best at Rubric
1, then the subset of those best at Rubric
2.lexicase-cull
: removes the “winners” of lexicase-selection
applied to negated scores: every numerical score is negated, and lexicase-selection
is applied to determine which Answers
to remove from the collectionnondominated-selection
: removes all Answers
from the collection which are strongly dominated by any other, using Pareto domination over the specified set of Rubrics
. One Answer
dominates another if all of its comparable scores are at least as good, and at least one is better.most-dominated-cull
: over a collection of Answers
recursively removes non-dominated Answers
until no dominated ones remain. It then removes those “most dominated” ones from the original collection.remove-uncooperative
: removes any Answer
from a collection for which any Score
is non-numeric (for the specified Rubrics
)select-on-nil
: returns the subset of a collection of Answers
where any Score
on a any specified Rubric
is nil