homemaker-layout/src/homemaker_layout
Bruno Postle 191f603440 Add core_divide, core_undivide, level_fix operators; wire reqs to mutate()
core_divide: divides a C leaf simultaneously on ALL storeys that share that
path, maintaining staircase consistency as an atomic invariant rather than
requiring multi-step recovery.

core_undivide: reverses core_divide consistently across all floors, merging
a C sub-core back into a single C leaf everywhere.

level_fix: atomically moves a level-constrained room to its required floor
by retyping the largest leaf there and vacating the wrong-floor leaf to C.
Requires `reqs` (SpaceReq dict); disabled (zero probability) without it.

mutate() gains `reqs=None` parameter; driver.search() passes its already-
loaded reqs so level_fix fires during the main memetic loop.

Together these let the optimiser escape the deceptive valley around the
2-fail warmstart: level_fix moves l1 to level 0 (reducing fails 2→1),
then core_divide can split the C core to accommodate the displaced t3.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-14 16:10:20 +01:00
..
__init__.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
dom.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
driver.py Add core_divide, core_undivide, level_fix operators; wire reqs to mutate() 2026-06-14 16:10:20 +01:00
evolve.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
fitness.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
genome.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
geometry.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
graph.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
innerloop.py Swap inner loop default from CMA-ES to Nelder-Mead (homemaker-py-d6d) 2026-06-14 08:51:22 +01:00
operators.py Add core_divide, core_undivide, level_fix operators; wire reqs to mutate() 2026-06-14 16:10:20 +01:00
oracle.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
programme.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
solver.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00