GEPA.Proposer.MergeUtils (GEPA v0.3.0)

Copy Markdown View Source

Genealogy and triplet-selection helpers for the merge proposer.

Summary

Functions

Canonical tuple for recording a merge triplet irrespective of pair ordering.

Return true when a common-ancestor triplet can produce a useful merged predictor.

Filter common ancestors to official-compatible merge triplet candidates.

Find a non-ancestor pair of programs with a valid common ancestor.

Return all ancestors of program, excluding the program itself.

Functions

canonical_triplet(id1, id2, ancestor)

@spec canonical_triplet(non_neg_integer(), non_neg_integer(), non_neg_integer()) ::
  tuple()

Canonical tuple for recording a merge triplet irrespective of pair ordering.

does_triplet_have_desirable_predictors?(program_candidates, ancestor, id1, id2)

@spec does_triplet_have_desirable_predictors?(
  [map()],
  non_neg_integer(),
  non_neg_integer(),
  non_neg_integer()
) :: boolean()

Return true when a common-ancestor triplet can produce a useful merged predictor.

filter_ancestors(id1, id2, common_ancestors, merges_performed, scores, program_candidates)

@spec filter_ancestors(
  non_neg_integer(),
  non_neg_integer(),
  [non_neg_integer()],
  {[tuple()], [tuple()]},
  map(),
  [map()]
) :: [non_neg_integer()]

Filter common ancestors to official-compatible merge triplet candidates.

find_common_ancestor_pair(program_indexes, parent_list, scores, opts \\ [])

@spec find_common_ancestor_pair([non_neg_integer()], map() | list(), map(), keyword()) ::
  {non_neg_integer(), non_neg_integer(), non_neg_integer()} | nil

Find a non-ancestor pair of programs with a valid common ancestor.

get_ancestors(program, parent_list)

@spec get_ancestors(non_neg_integer(), map() | list()) :: [non_neg_integer()]

Return all ancestors of program, excluding the program itself.