Skip to content

Features 41-50

Items in this decade from the roadmap overview. Status and surfaces live on that table. Empty slots stay empty until an item is numbered into this range.


41. Case-structured generalization path

What. The default case-structured recipe the thin loops do not wire: a caller-marked held-out exam, lexicase on the rest, and a successive-halving schedule that spends cheap case subsets first. Optional index helper for a last-fraction holdout (held_out_tail(n, fraction=) or equivalent). Chronological meaning, embargo, and expanding windows stay on the caller.

Today. held_out_tail / train_head and case_generalization_pool build a caller-marked held-out exam. make_lexicase_train_select and case_generalization_recipe wire lexicase on train cases only. case_halving_stages, evaluate_case_halving, and case_eval_charge run successive halving on train-catalog prefixes and return case-eval units for n_evals= budgeting. Chronological splits beyond a last-fraction holdout stay on the caller; the index-only walk-forward builder remains under consideration.

Benefit. One held-out slice plus lexicase on the train cases is the usual difference between a curve-fit and a law that still scores later. Halving stretches the same budget across more individuals.

Scope. A documented path, a last-fraction holdout helper, and a case-budget schedule. No timestamps. No domain loss. Not step_program_search.

Related: item 5, item 6, item 23, item 28, item 33.


42. Memetic and affine leash

What. Defaults and a thin wrapper so tune_ephemerals and affine scaling cannot spend the run. Darwinian affine (score only) is the default path when writing case errors. Lamarckian write_affine_scale stays opt-in. Tune uses a small n_gen, charges the inner loop to remaining n_evals, and is judged on a caller-marked held-out exam when one exists.

Today. MEMETIC_DEFAULT_N_GEN and MEMETIC_MAX_N_GEN document the recommended inner polish. affine_case_errors fits Keijzer \(a + b\,f(x)\) and writes Darwinian case errors only. Lamarckian write_affine_scale stays opt-in. tune_ephemerals_budget caps inner n_gen to remaining n_evals, defaults to the small generation count, and judges trials on a caller-marked held-out exam when one exists. cap_tune_n_gen and estimate_tune_ephemerals_evals share the same cost model as PolicyActionGuard. Raw tune_ephemerals is unchanged. Policy caps stay on PolicyActionGuard; ea_simple / register_gp callers use the budget wrapper instead.

Benefit. Structure plus a short numeric polish is useful. Unmetered tune and writeback on the train exam overfit intercept, slope, and window lengths — the usual silent failure next to a good tree shape.

Scope. Documented defaults, a Darwinian score helper, and a budget-aware tune wrapper. Not a new CMA. Not a domain metric. Policy caps stay on PolicyActionGuard.

Related: item 24, item 31, item 33, item 41.


43. Team and archive recipe

What. A documented loop that keeps a book of programs, not one elite: semantic_project → archive addsel_team on the case-solve matrix (or on occupied cells). Optional thin helper that returns a team from archive elites without rewriting member fitness.

Today. semantic_project, grid / CVT / unstructured archives, and sel_team compose a documented caller loop in the columnar programs tutorial and the team and archive example. sel_team_archive returns a team from occupied archive cells without rewriting member fitness. Team scoring stays on the caller. Not step_program_search.

Benefit. One elite on one window is how a train score dies on the next slice. A team that covers different cases is what lexicase and MAP-Elites were already pointing at.

Scope. A recipe and an optional helper on shipped operators. Team scoring stays on the caller. Not a new selector. Not step_program_search — that wrapper also owns Slim, tune, and exams.

Related: item 8, item 22, item 26, item 29, item 41.