homemaker-layout/experiments
Bruno Postle 92cc63348e Topology operators: 7 mutations + area-matched subtree crossover
operators.py (homemaker-py-nyb): divide/undivide/retype/swap/rotate/
level_add/level_delete + Urb-style area-matched base-storey crossover.
Operators edit the decoded Node tree; genome.encode absorbs all repair
(dangling deltas, storey misalignment) so every child is a valid genome
by construction. Geometry moves deliberately absent — the inner loop owns
continuous DOF, and 8cs made Lamarckian re-optimisation mandatory.

Fixes dom._link to CLEAR stale below-links when a path vanishes from the
storey below (undividing a base branch left upper nodes pointing at
orphaned quads; oracle scoring unaffected but in-process geometry crashed).

Acceptance (experiments/operator_locality.py, flag-on): 115/115 children
scored without error; geometry perturbation small for core ops (retype
0.07, divide/undivide 0.14, swap/crossover 0.16-0.17), fitness
perturbation large for all (0.68-0.99 rel) — the 0.5^n cliff flags most
raw moves, confirming warm-started re-optimisation + penalty reshaping
as the load-bearing design choices. 27 tests pass.

Closes homemaker-py-nyb.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 14:07:35 +01:00
..
accept_innerloop.py Re-baseline under URB_NO_OCCLUSION: new reference gains, DESIGN §4.7 2026-06-12 10:31:38 +01:00
bench_batch_oracle.py Batched oracle: score many .dom files per perl invocation 2026-06-12 01:13:55 +01:00
diag_2f45907.py Geometry inner loop: batched full-objective ratio optimiser (CMA-ES) 2026-06-12 09:42:24 +01:00
dump_areas.pl Scaffold homemaker-py with validated geometry port 2026-06-10 20:50:20 +01:00
dump_areas.py Scaffold homemaker-py with validated geometry port 2026-06-10 20:50:20 +01:00
genome_parity.py Topology genome: base tree + per-storey deltas + type assignment 2026-06-12 13:52:32 +01:00
operator_locality.py Topology operators: 7 mutations + area-matched subtree crossover 2026-06-12 14:07:35 +01:00
optimize_fullfitness.py Full-fitness frozen-topology optimisation validates geometry inner loop 2026-06-10 22:27:30 +01:00
rebaseline_no_occlusion.py Geometry inner loop: batched full-objective ratio optimiser (CMA-ES) 2026-06-12 09:42:24 +01:00
refine_sweep.py Add programme/solver/oracle + sizing experiments (negative result) 2026-06-10 21:49:31 +01:00
resolve_ratios.py Add programme/solver/oracle + sizing experiments (negative result) 2026-06-10 21:49:31 +01:00
sweep_failtypes.py Full-fitness frozen-topology optimisation validates geometry inner loop 2026-06-10 22:27:30 +01:00
warm_vs_cold.py Warm-vs-cold experiment: topology mutations + Lamarckian ratio inheritance 2026-06-12 10:00:51 +01:00