A toilet next to a sleeping room is a positive even with no door between
them (Brand): the adjacency is what makes a later knock-through possible.
The engine already scores it -- check_adjacency runs against the unfiltered
graph_base_pre -- but only where a programme declares it, and only
programme-house did.
Declared:
harbor-house t -> n bathrooms serve the Neighborhoods (communal
sleeping); both unpinned, 6 t / 5 n
maple-court tt -> r Upper Bathrooms among Individual Rooms, both
level 2, already 62% adjacent at seed time
NOT declared, and checking before declaring is what caught these:
maple t -> n is IMPOSSIBLE. Adjacency is evaluated per level, and maple
pins t to level 0, n to level 1. Declaring it would have added six
permanently unsatisfiable fails; the 0% seed-time rate was a hard
impossibility, not search difficulty. maple's ground floor has six
bathrooms and one sleeping room (Clinic Room x1) -- a ground-floor WC in
a communal building is public, so Brand does not apply anyway.
health-centre has no dedicated WC. The ruling was that a treatment room
"may give access to a toilet, but this would be a dedicated toilet"; t9
is a Public WC and t10 a Staff WC. Earning the credit needs a WC added to
the brief -- programme authoring, filed as homemaker-py-5nw.
Both declarations are reachable (best of 8 seeds 2/3 harbor, 2/2 maple), so
the search gets a gradient not a permanent penalty. evolved-3M-nols-3
84 -> 89 fails, all five the new requirement.
Cost: cpsat assignment ~7.5x slower on harbor (0.28 -> 2.11s per seed);
greedy, the default, unchanged at 0.06s. Ordinary runs pay nothing, but
39.5's cpsat-vs-greedy verdict was measured on a cheaper problem than the
corpus now poses -- filed as homemaker-py-vjd.
Two tests were over-fitted to the old seeds and are repaired to assert
their intent, not relaxed to pass: reassign now sweeps six constructive
seeds (seed 0's better-seeded design legitimately has nothing to improve,
5 of 6 others fire), and repair_circulation asserts that repair strictly
helps plus a >=85% bar rather than a sampled 100% hardened into a
guarantee (measured 25% -> 92%, stable over 6 and 12 seeds).
Closes homemaker-py-3qj.
Lint at parity (46); tests 379 passed, 0 failed.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MJ84Feep79Hhm3E4zZJmnB
426 lines
6.4 KiB
Text
426 lines
6.4 KiB
Text
---
|
|
# Maple Court - Larger-than-house benchmark (homemaker-py-leu.1, DESIGN.md §12.1)
|
|
#
|
|
# A three-storey assisted-living / co-housing facility. Built to be the first
|
|
# benchmark larger than harbor-house (16 programme entries): 26 distinct space
|
|
# entries / 52 room instances across 3 required storeys, with a harbor-like
|
|
# adjacency-to-c load and a handful of secondary adjacencies (k/da/o clusters).
|
|
#
|
|
# Code conventions (first letter is semantic in fitness.py): generic c/o/s are
|
|
# reserved for circulation / outside / sahn, so no ROOM code starts with c, o or
|
|
# s. Living-family rooms lead with l, kitchen k, dining d, bathroom t; everything
|
|
# else uses a neutral leading letter (default room scoring).
|
|
|
|
# Building programme: three-storey community living facility
|
|
spaces:
|
|
# ---- GROUND FLOOR (level 0): community + service ----
|
|
lr1:
|
|
usage: living
|
|
name: Common Living Room
|
|
size:
|
|
- 80.0
|
|
- 10.0
|
|
width:
|
|
- 6.0
|
|
- 1.5
|
|
proportion:
|
|
- 2.0
|
|
- 0.5
|
|
level: 0
|
|
adjacency:
|
|
- c
|
|
- o
|
|
|
|
ef1:
|
|
usage: none
|
|
name: Entrance Foyer
|
|
size:
|
|
- 15.0
|
|
- 3.0
|
|
width:
|
|
- 3.0
|
|
- 0.5
|
|
level: 0
|
|
adjacency:
|
|
- c
|
|
|
|
da1:
|
|
usage: living
|
|
name: Dining Area
|
|
size:
|
|
- 60.0
|
|
- 8.0
|
|
width:
|
|
- 5.0
|
|
- 1.0
|
|
proportion:
|
|
- 2.5
|
|
- 0.8
|
|
level: 0
|
|
adjacency:
|
|
- c
|
|
- k1
|
|
- o
|
|
|
|
k1:
|
|
usage: kitchen
|
|
name: Kitchen
|
|
size:
|
|
- 30.0
|
|
- 5.0
|
|
width:
|
|
- 4.0
|
|
- 1.0
|
|
level: 0
|
|
adjacency:
|
|
- da1
|
|
- c
|
|
|
|
ws1:
|
|
usage: living
|
|
name: Workshop Space
|
|
size:
|
|
- 40.0
|
|
- 6.0
|
|
width:
|
|
- 5.0
|
|
- 1.0
|
|
proportion:
|
|
- 1.8
|
|
- 0.5
|
|
level: 0
|
|
adjacency:
|
|
- c
|
|
- o
|
|
|
|
la1:
|
|
usage: utility
|
|
name: Laundry Room
|
|
size:
|
|
- 20.0
|
|
- 4.0
|
|
width:
|
|
- 3.0
|
|
- 0.8
|
|
level: 0
|
|
adjacency:
|
|
- c
|
|
|
|
me1:
|
|
crinkliness: none # no window needed
|
|
usage: utility
|
|
name: Mechanical/Electrical Room
|
|
size:
|
|
- 25.0
|
|
- 4.0
|
|
width:
|
|
- 3.5
|
|
- 0.8
|
|
level: 0
|
|
adjacency:
|
|
- c
|
|
|
|
ur1:
|
|
crinkliness: none # no window needed
|
|
usage: utility
|
|
name: Ground Floor Storage
|
|
size:
|
|
- 22.0
|
|
- 4.0
|
|
width:
|
|
- 3.0
|
|
- 0.8
|
|
level: 0
|
|
adjacency:
|
|
- c
|
|
|
|
rc1:
|
|
usage: none
|
|
name: Reception Office
|
|
size:
|
|
- 14.0
|
|
- 3.0
|
|
width:
|
|
- 3.0
|
|
- 0.6
|
|
level: 0
|
|
adjacency:
|
|
- c
|
|
|
|
ph1:
|
|
usage: bedroom
|
|
name: Clinic Room
|
|
size:
|
|
- 18.0
|
|
- 3.5
|
|
width:
|
|
- 3.0
|
|
- 0.6
|
|
level: 0
|
|
adjacency:
|
|
- c
|
|
|
|
gh1:
|
|
usage: living
|
|
name: Greenhouse
|
|
size:
|
|
- 24.0
|
|
- 4.0
|
|
width:
|
|
- 3.5
|
|
- 0.8
|
|
level: 0
|
|
adjacency:
|
|
- c
|
|
- o
|
|
|
|
# Meeting rooms - anonymous interchangeable (3 total, ground floor)
|
|
m:
|
|
usage: living
|
|
name: Meeting Room
|
|
size:
|
|
- 10.0
|
|
- 2.0
|
|
width:
|
|
- 2.5
|
|
- 0.5
|
|
level: 0
|
|
adjacency:
|
|
- c
|
|
count: 3
|
|
|
|
# Ground-floor bathrooms (6 total)
|
|
t:
|
|
usage: toilet
|
|
name: Bathroom
|
|
size:
|
|
- 6.0
|
|
- 1.5
|
|
width:
|
|
- 2.0
|
|
- 0.5
|
|
level: 0
|
|
adjacency:
|
|
- c
|
|
count: 6
|
|
|
|
# ---- FIRST FLOOR (level 1): residents' shared + neighborhoods ----
|
|
li1:
|
|
usage: living
|
|
name: Library Corner
|
|
size:
|
|
- 20.0
|
|
- 4.0
|
|
width:
|
|
- 3.5
|
|
- 0.8
|
|
level: 1
|
|
adjacency:
|
|
- c
|
|
|
|
lo1:
|
|
usage: living
|
|
name: Lounge
|
|
size:
|
|
- 30.0
|
|
- 5.0
|
|
width:
|
|
- 4.0
|
|
- 1.0
|
|
proportion:
|
|
- 2.0
|
|
- 0.6
|
|
level: 1
|
|
adjacency:
|
|
- c
|
|
- o
|
|
|
|
# Staff offices - anonymous (2 total)
|
|
em:
|
|
usage: bedroom
|
|
name: Staff Office
|
|
size:
|
|
- 12.5
|
|
- 2.5
|
|
width:
|
|
- 2.5
|
|
- 0.5
|
|
level: 1
|
|
adjacency:
|
|
- c
|
|
count: 2
|
|
|
|
# Sleeping neighborhoods - anonymous interchangeable (4 total)
|
|
n:
|
|
usage: bedroom
|
|
name: Neighborhood
|
|
size:
|
|
- 60.0
|
|
- 8.0
|
|
width:
|
|
- 5.0
|
|
- 1.0
|
|
proportion:
|
|
- 2.0
|
|
- 0.6
|
|
level: 1
|
|
adjacency:
|
|
- c
|
|
count: 4
|
|
|
|
ur2:
|
|
crinkliness: none # no window needed
|
|
usage: utility
|
|
name: First Floor Storage
|
|
size:
|
|
- 18.0
|
|
- 3.5
|
|
width:
|
|
- 3.0
|
|
- 0.8
|
|
level: 1
|
|
adjacency:
|
|
- c
|
|
|
|
en1:
|
|
usage: living
|
|
name: TV / Media Room
|
|
size:
|
|
- 22.0
|
|
- 4.0
|
|
width:
|
|
- 3.5
|
|
- 0.8
|
|
level: 1
|
|
adjacency:
|
|
- c
|
|
|
|
# Therapy rooms - anonymous (2 total)
|
|
py:
|
|
usage: bedroom
|
|
name: Therapy Room
|
|
size:
|
|
- 16.0
|
|
- 3.0
|
|
width:
|
|
- 3.0
|
|
- 0.6
|
|
level: 1
|
|
adjacency:
|
|
- c
|
|
count: 2
|
|
|
|
# ---- SECOND FLOOR (level 2): individual rooms + amenity ----
|
|
# Individual resident rooms - anonymous (12 total)
|
|
r:
|
|
usage: bedroom
|
|
name: Individual Room
|
|
size:
|
|
- 10.0
|
|
- 2.0
|
|
width:
|
|
- 2.5
|
|
- 0.5
|
|
level: 2
|
|
adjacency:
|
|
- c
|
|
count: 12
|
|
|
|
gy1:
|
|
usage: living
|
|
name: Exercise Room
|
|
size:
|
|
- 28.0
|
|
- 5.0
|
|
width:
|
|
- 4.0
|
|
- 0.8
|
|
proportion:
|
|
- 1.8
|
|
- 0.5
|
|
level: 2
|
|
adjacency:
|
|
- c
|
|
- o
|
|
|
|
ut1:
|
|
crinkliness: none # no window needed
|
|
usage: utility
|
|
name: Utilities Closet
|
|
size:
|
|
- 14.0
|
|
- 3.0
|
|
width:
|
|
- 2.5
|
|
- 0.6
|
|
level: 2
|
|
adjacency:
|
|
- c
|
|
|
|
ur3:
|
|
crinkliness: none # no window needed
|
|
usage: utility
|
|
name: Second Floor Storage
|
|
size:
|
|
- 16.0
|
|
- 3.0
|
|
width:
|
|
- 3.0
|
|
- 0.8
|
|
level: 2
|
|
adjacency:
|
|
- c
|
|
|
|
# Second-floor bathrooms (4 total)
|
|
tt:
|
|
usage: toilet
|
|
name: Upper Bathroom
|
|
size:
|
|
- 6.0
|
|
- 1.5
|
|
width:
|
|
- 2.0
|
|
- 0.5
|
|
level: 2
|
|
adjacency:
|
|
- c
|
|
- r # Brand: a WC beside sleeping space can be knocked through later
|
|
count: 4
|
|
|
|
q1:
|
|
usage: bedroom
|
|
name: Quiet Room
|
|
size:
|
|
- 12.0
|
|
- 2.5
|
|
width:
|
|
- 2.5
|
|
- 0.6
|
|
level: 2
|
|
adjacency:
|
|
- c
|
|
|
|
# Building constraints
|
|
storey_minimum: 3
|
|
storey_limit: 4
|
|
force_roof_garden: 0
|
|
|
|
# Circulation ratio (allow more circulation for larger building)
|
|
ratio_circulation:
|
|
- 0.08
|
|
- 0.15
|
|
|
|
# Outside space ratio (courtyard requirement)
|
|
ratio_outside:
|
|
- 0.15
|
|
- 0.10
|
|
|
|
# Staircase requirements (main + secondary)
|
|
staircase_min: 2
|
|
staircase_max: 2
|
|
|
|
# Economic parameters
|
|
value_inside: 300.0
|
|
value_circulation: 50.0
|
|
value_outside: 100.0
|
|
value_supported: 300.0
|