homemaker-layout/src/homemaker_layout
Bruno Postle ed2869074b Phase 6 §11.4: graded high-fail objective — negative result (c4c.4)
Implement a graded proximity comparator key (-n_fails, grade, fitness) behind
a default-off use_grade flag: fitness._leaf_grade / score_with_grade sum
f/FAIL_THRESHOLD over failing per-leaf quality factors; scalar fitness and fail
count stay untouched so the inner-loop 0.5^n cliff (§5.4) is unaffected (0/9
regression check: PASS). Read once per child in driver._evaluate off the
already-optimised tree; threaded through search_staged (Stage 2 only).

Harbor staged A/B (20000 evals, seeds 0/1/2): lex 95/96/106 (mean 99.0) vs
lex+grade 99/98/102 (mean 99.7) — grade wins 1/3, no plateau escape. Premise
falsified: within a fixed fail-tier 0.5^n is constant so fitness still spans
~6 orders of magnitude; grade above fitness displaces that working signal.
Verdict: reject; lexicographic (-n_fails, fitness) stands. Flag kept default-off
for reproducibility / possible reuse as a §11.5 diversity signal.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 22:33:29 +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 Phase 6 §11.4: graded high-fail objective — negative result (c4c.4) 2026-06-18 22:33:29 +01:00
evolve.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00
fitness.py Phase 6 §11.4: graded high-fail objective — negative result (c4c.4) 2026-06-18 22:33:29 +01:00
fitness_cmd.py Add homemaker-fitness: native Python CLI to replace urb-fitness.pl 2026-06-14 17:15:33 +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 Phase 6 §11.3: staged per-floor search (c4c.3) 2026-06-18 06:05:53 +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 Phase 6 §11.3: staged per-floor search (c4c.3) 2026-06-18 06:05:53 +01:00
oracle.py Fix parity gap: oracle.py must run with URB_NO_OCCLUSION=1 2026-06-17 18:40:56 +01:00
programme.py Phase 6 §11.3: staged per-floor search (c4c.3) 2026-06-18 06:05:53 +01:00
solver.py Rename package: homemaker → homemaker-layout 2026-06-14 08:18:06 +01:00