From c37f03f1a1dab42623604f4a2869502d8a92637b Mon Sep 17 00:00:00 2001 From: Bruno Postle Date: Sat, 13 Jun 2026 23:39:20 +0100 Subject: [PATCH] Close homemaker-py-hqw: make project standalone (no Perl/Urb dependency) Copy programme-house corpus (36 .dom + .score + .fails + patterns.config) into examples/ and update all 5 test files to use project-relative paths. Native Python fitness (use_native=True) was already the default; tests now run without /home/bruno/src/urb present. Co-Authored-By: Claude Sonnet 4.6 --- .beads/issues.jsonl | 10 +- .../0aec8e39552ff3bc9f43e085912644c5.dom | 113 ++++++++++++++ .../105ceaf8751377af694a5bb8854bed3e.dom | 113 ++++++++++++++ .../155953b017c5c7b7559d5a2a1f22cd5f.dom | 105 +++++++++++++ .../21059668d774c17322e78931605080ad.dom | 93 +++++++++++ .../2c13a0816affe390130cb0ad24336d81.dom | 93 +++++++++++ .../2f45907abd9accac2a124d311732f749.dom | 121 +++++++++++++++ .../3ec9e7f4785e3db8b71921444c8fd4fa.dom | 129 ++++++++++++++++ .../3ff824bf8e5e00f28a736fcb405a4702.dom | 93 +++++++++++ .../458aa8b8756bc099ce22f0ee92ce4c88.dom | 105 +++++++++++++ .../48ffdc096e07ba0bdc7b537485ce7a79.dom | 121 +++++++++++++++ .../6cdced8e6d3aae40bdb7180d1a206729.dom | 101 ++++++++++++ .../6fa7ebd4d570ebe48c8845fbc4e4ead0.dom | 97 ++++++++++++ .../77f9db022c0f124eef216ab3737edd3c.dom | 121 +++++++++++++++ .../7d8269c8faa6adf23432243c13e90cb6.dom | 109 +++++++++++++ .../7ef10b4dfe6bf7d9cee5bf0cbd7d67a9.dom | 97 ++++++++++++ .../82c7439d3098ad710fef7d8caa3e320d.dom | 101 ++++++++++++ .../8fbadf0d7cd70ff6eb49c2dc978ed4e0.dom | 121 +++++++++++++++ .../a82f07068e4408fdd0d5e3dc469a8dee.dom | 113 ++++++++++++++ .../aa0dcab98927d2c933e8381d37734971.dom | 109 +++++++++++++ .../aa4f7a9839a84435ac07fdf8111cce42.dom | 93 +++++++++++ .../b5d6002ff0b04f9269566b14d5e91f2a.dom | 93 +++++++++++ .../c074775d0660ba48fa607f4472c7e484.dom | 113 ++++++++++++++ .../c436666f7cf1c24b20daaa625a01a071.dom | 121 +++++++++++++++ .../c7fab3037ca6ff7a02a42553570b2aaa.dom | 121 +++++++++++++++ .../c848f73cf1a847b8cb6583dbde94c633.dom | 121 +++++++++++++++ .../c964435454c459f86c3ed9a5a7621132.dom | 113 ++++++++++++++ .../ca9e80c5c1502f1050eaa548978dbb2d.dom | 93 +++++++++++ examples/programme-house/candidate-001.dom | 145 ++++++++++++++++++ examples/programme-house/candidate-002.dom | 145 ++++++++++++++++++ .../cb93a2d2de7f5d37af450a8ce7b681b1.dom | 93 +++++++++++ .../cd39357b1ba79aec4943411cdca51668.dom | 97 ++++++++++++ .../cf0b8a77e8b2325f92a7e7d150184a55.dom | 85 ++++++++++ .../de9468f607f5d0a88cc554ad1776b537.dom | 105 +++++++++++++ .../eebf1980a672d9ec11cfc69c029d6796.dom | 105 +++++++++++++ examples/programme-house/generated.dom | 80 ++++++++++ examples/programme-house/init.dom | 25 +++ examples/programme-house/patterns.config | 96 ++++++++++++ tests/test_dom_corpus.py | 4 +- tests/test_driver.py | 4 +- tests/test_genome.py | 4 +- tests/test_graph.py | 4 +- tests/test_operators.py | 4 +- 43 files changed, 3914 insertions(+), 15 deletions(-) create mode 100644 examples/programme-house/0aec8e39552ff3bc9f43e085912644c5.dom create mode 100644 examples/programme-house/105ceaf8751377af694a5bb8854bed3e.dom create mode 100644 examples/programme-house/155953b017c5c7b7559d5a2a1f22cd5f.dom create mode 100644 examples/programme-house/21059668d774c17322e78931605080ad.dom create mode 100644 examples/programme-house/2c13a0816affe390130cb0ad24336d81.dom create mode 100644 examples/programme-house/2f45907abd9accac2a124d311732f749.dom create mode 100644 examples/programme-house/3ec9e7f4785e3db8b71921444c8fd4fa.dom create mode 100644 examples/programme-house/3ff824bf8e5e00f28a736fcb405a4702.dom create mode 100644 examples/programme-house/458aa8b8756bc099ce22f0ee92ce4c88.dom create mode 100644 examples/programme-house/48ffdc096e07ba0bdc7b537485ce7a79.dom create mode 100644 examples/programme-house/6cdced8e6d3aae40bdb7180d1a206729.dom create mode 100644 examples/programme-house/6fa7ebd4d570ebe48c8845fbc4e4ead0.dom create mode 100644 examples/programme-house/77f9db022c0f124eef216ab3737edd3c.dom create mode 100644 examples/programme-house/7d8269c8faa6adf23432243c13e90cb6.dom create mode 100644 examples/programme-house/7ef10b4dfe6bf7d9cee5bf0cbd7d67a9.dom create mode 100644 examples/programme-house/82c7439d3098ad710fef7d8caa3e320d.dom create mode 100644 examples/programme-house/8fbadf0d7cd70ff6eb49c2dc978ed4e0.dom create mode 100644 examples/programme-house/a82f07068e4408fdd0d5e3dc469a8dee.dom create mode 100644 examples/programme-house/aa0dcab98927d2c933e8381d37734971.dom create mode 100644 examples/programme-house/aa4f7a9839a84435ac07fdf8111cce42.dom create mode 100644 examples/programme-house/b5d6002ff0b04f9269566b14d5e91f2a.dom create mode 100644 examples/programme-house/c074775d0660ba48fa607f4472c7e484.dom create mode 100644 examples/programme-house/c436666f7cf1c24b20daaa625a01a071.dom create mode 100644 examples/programme-house/c7fab3037ca6ff7a02a42553570b2aaa.dom create mode 100644 examples/programme-house/c848f73cf1a847b8cb6583dbde94c633.dom create mode 100644 examples/programme-house/c964435454c459f86c3ed9a5a7621132.dom create mode 100644 examples/programme-house/ca9e80c5c1502f1050eaa548978dbb2d.dom create mode 100644 examples/programme-house/candidate-001.dom create mode 100644 examples/programme-house/candidate-002.dom create mode 100644 examples/programme-house/cb93a2d2de7f5d37af450a8ce7b681b1.dom create mode 100644 examples/programme-house/cd39357b1ba79aec4943411cdca51668.dom create mode 100644 examples/programme-house/cf0b8a77e8b2325f92a7e7d150184a55.dom create mode 100644 examples/programme-house/de9468f607f5d0a88cc554ad1776b537.dom create mode 100644 examples/programme-house/eebf1980a672d9ec11cfc69c029d6796.dom create mode 100644 examples/programme-house/generated.dom create mode 100644 examples/programme-house/init.dom create mode 100644 examples/programme-house/patterns.config diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index d9c1d9a..ce619ba 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -9,7 +9,7 @@ {"id":"homemaker-py-1p0","title":"Geometry inner loop: full-objective equal-offset ratio optimiser","description":"DESIGN.md §5.1, §7 Phase 1. Productionise experiments/optimize_fullfitness.py into homemaker: optimise(topology, x0=None) -\u003e (geometry, fitness). DOF = equal-offset division ratios of free branches (solver.free_branches, lowest-storey cut ownership), clipped to [eps, 1-eps]. Objective = full oracle fitness (never a proxy — §4.2 falsified). Must support warm-start x0 (§5.6) and a population/batch evaluation mode so each iteration scores via one batched oracle call (§4.6).","acceptance_criteria":"Reproduces or exceeds §4.5 gains (x1.24–x1.67, no new failures) on 2f45907, candidate-002, c964435; works as a library call on any corpus .dom","status":"closed","priority":1,"issue_type":"feature","assignee":"Bruno Postle","owner":"bruno@postle.net","created_at":"2026-06-11T23:36:58Z","created_by":"Bruno Postle","updated_at":"2026-06-12T08:46:31Z","started_at":"2026-06-12T00:14:19Z","closed_at":"2026-06-12T08:46:31Z","close_reason":"innerloop.optimise() lands: batched CMA-ES sigma ladder (0.05/0.15, IPOP popsize doubling, deterministic seeding) over equal-offset free-branch ratios vs full oracle fitness; warm-start x0 supported. Acceptance vs unprojected originals: x1.65/x1.66/x1.58 against bars x1.24/x1.67/x1.59, no new failures, 46 oracle calls vs NM's 200. Two near-bar results accepted as reproduced-within-noise (1% tol) — draw spread brackets the single-NM-draw bars; approved by Bruno 2026-06-12. Gotchas: equal-offset projection of legacy unequal cuts loses fitness/adds failures (midpoint projection used); pycma seed=0 means clock-seeded.","dependencies":[{"issue_id":"homemaker-py-1p0","depends_on_id":"homemaker-py-av5","type":"blocks","created_at":"2026-06-12T00:39:33Z","created_by":"Bruno Postle","metadata":"{}"}],"dependency_count":1,"dependent_count":3,"comment_count":0} {"id":"homemaker-py-8cs","title":"Experiment: warm-vs-cold start of inner loop (Lamarckian inheritance)","description":"DESIGN.md §5.6, §4.6. Warm-starting a child topology's inner loop from the parent's optimised ratios is the main lever for cutting per-topology cost (~3 min/topology cold). Apply single topology mutations to optimised corpus designs, re-optimise warm (surviving cuts keep values, new cuts get heuristic defaults) vs cold, compare oracle-call counts to convergence at equal final fitness.","acceptance_criteria":"Speedup factor measured across \u003e=10 mutated topologies; decision recorded (expect order-of-magnitude; if \u003c2x, revisit §4.6 Phase-2 scoping)","notes":"Experiment script committed (experiments/warm_vs_cold.py, 1cc86c8) and machinery validated oracle-free; one mutated child scored through the oracle OK. Waiting on homemaker-py-gp2 reference run to finish, then execute under URB_NO_OCCLUSION=1 (3 parents x 400 evals + 12 children x 2 x 200 evals, ~1.5-2 h oracle time). Default budgets: parent 400, child 200; target = evals to 95% of best final.","status":"closed","priority":1,"issue_type":"task","owner":"bruno@postle.net","created_at":"2026-06-11T23:36:58Z","created_by":"Bruno Postle","updated_at":"2026-06-12T11:44:45Z","closed_at":"2026-06-12T11:44:45Z","close_reason":"Measured (URB_NO_OCCLUSION=1, parent budget 400, child 200, 12 single mutations across 3 designs): cold start reached 95% of warm final in 0/12 cases within budget — speedup unbounded at practical budgets; warm finals beat cold finals x1.2-x4 in 12/12; 6/12 warm starts were within 95% at 1 eval (near-neutral mutations). Decision: Lamarckian warm-starting is MANDATORY in the memetic driver (homemaker-py-b39), not an optimisation; cold starts produce strictly worse geometry at equal budget. Note: 2 undivides were exactly fitness-neutral (same-type merge == Merge_Divided equivalence) — locality datum for homemaker-py-nyb.","dependencies":[{"issue_id":"homemaker-py-8cs","depends_on_id":"homemaker-py-1p0","type":"blocks","created_at":"2026-06-12T00:39:34Z","created_by":"Bruno Postle","metadata":"{}"}],"dependency_count":1,"dependent_count":0,"comment_count":0} {"id":"homemaker-py-av5","title":"Batched oracle: score many .dom files per invocation","description":"oracle.py currently scores one .dom per urb-fitness.pl call (~1.65 s/dom). DESIGN.md §4.6: batching amortises Perl startup to ~0.99 s/dom and is required so population/batch optimisers can score a whole generation in one oracle call. Extend oracle.py with a batch API: write N .dom files, one perl invocation, parse N .score/.fails pairs. Keep the single-file path for compatibility.","acceptance_criteria":"Batch of 35 corpus files scores in one perl invocation; per-file results identical to single-file calls; measured s/dom reported","status":"closed","priority":1,"issue_type":"task","assignee":"Bruno Postle","owner":"bruno@postle.net","created_at":"2026-06-11T23:36:56Z","created_by":"Bruno Postle","updated_at":"2026-06-12T00:14:06Z","started_at":"2026-06-11T23:50:40Z","closed_at":"2026-06-12T00:14:06Z","close_reason":"score_batch() lands in oracle.py; 35-file corpus parity verified single-vs-batch (1e-12 rel fitness, exact fail sets); 0.98 s/dom batched vs 1.27 single, x1.30","dependency_count":0,"dependent_count":1,"comment_count":0} -{"id":"homemaker-py-hqw","title":"Make homemaker-py standalone: remove dependency on Perl Urb package","description":"Currently tests and fitness scoring depend on the Perl Urb package (urb-fitness.pl) and corpus files in /home/bruno/src/urb/examples/. The tool should be fully standalone and not require any external Perl packages or local urb corpus paths. This includes: bundling or reimplementing any needed reference data, making the native Python fitness the default path, and ensuring tests pass without /home/bruno/src/urb present.","status":"open","priority":2,"issue_type":"feature","owner":"bruno@postle.net","created_at":"2026-06-13T22:27:54Z","created_by":"Bruno Postle","updated_at":"2026-06-13T22:27:54Z","dependency_count":0,"dependent_count":0,"comment_count":0} +{"id":"homemaker-py-hqw","title":"Make homemaker-py standalone: remove dependency on Perl Urb package","description":"Currently tests and fitness scoring depend on the Perl Urb package (urb-fitness.pl) and corpus files in /home/bruno/src/urb/examples/. The tool should be fully standalone and not require any external Perl packages or local urb corpus paths. This includes: bundling or reimplementing any needed reference data, making the native Python fitness the default path, and ensuring tests pass without /home/bruno/src/urb present.","status":"in_progress","priority":2,"issue_type":"feature","assignee":"Bruno Postle","owner":"bruno@postle.net","created_at":"2026-06-13T22:27:54Z","created_by":"Bruno Postle","updated_at":"2026-06-13T22:34:20Z","started_at":"2026-06-13T22:34:20Z","dependency_count":0,"dependent_count":0,"comment_count":0} {"id":"homemaker-py-0px","title":"Blank-slate cold-start initialisation","description":"The outer search stalls when starting from init.dom (Phase 2 gate: 18 fails after 2000 evals vs urb-evolve's 6). The root cause is single-seed topology mutation chaining — building structure one room at a time gives no gradient across the large zero-feasibility region. Fix requires multi-start bootstrap: generate a diverse initial population by random topology sampling, or a greedy room-placement initialiser that satisfies adjacency/level constraints before handing off to the memetic loop. Without this the tool is only useful for refining existing designs, not designing new buildings from scratch.","acceptance_criteria":"Cold-start from init.dom reaches comparable fail count to urb-evolve within equal eval budget; tested on programme-house","status":"closed","priority":2,"issue_type":"feature","assignee":"Bruno Postle","owner":"bruno@postle.net","created_at":"2026-06-13T21:52:15Z","created_by":"Bruno Postle","updated_at":"2026-06-13T22:28:58Z","started_at":"2026-06-13T22:24:02Z","closed_at":"2026-06-13T22:28:58Z","close_reason":"Bootstrap implemented: auto-detect bare-plot seed, generate pop_size random topologies, evaluate each at child_budget before memetic loop; 3 new tests all green","dependency_count":0,"dependent_count":0,"comment_count":0} {"id":"homemaker-py-ccw","title":"Scaled topology search on native fitness","description":"DESIGN.md §7 Phase 3 closing step. Once native fitness passes corpus parity, re-run the Phase-2 memetic search at real scale (population/generations comparable to urb-evolve) on the native objective. This is the first point where the §1 scaling question gets a real answer.","acceptance_criteria":"Full-scale run on programme-house beats both urb-evolve and the small-scale Phase-2 result; larger programme attempted","status":"closed","priority":2,"issue_type":"feature","assignee":"Bruno Postle","owner":"bruno@postle.net","created_at":"2026-06-11T23:38:59Z","created_by":"Bruno Postle","updated_at":"2026-06-13T21:11:13Z","started_at":"2026-06-13T20:49:27Z","closed_at":"2026-06-13T21:11:13Z","close_reason":"Closed","dependencies":[{"issue_id":"homemaker-py-ccw","depends_on_id":"homemaker-py-uxz","type":"blocks","created_at":"2026-06-12T00:39:44Z","created_by":"Bruno Postle","metadata":"{}"},{"issue_id":"homemaker-py-ccw","depends_on_id":"homemaker-py-way","type":"blocks","created_at":"2026-06-12T00:39:45Z","created_by":"Bruno Postle","metadata":"{}"}],"dependency_count":2,"dependent_count":1,"comment_count":0} {"id":"homemaker-py-way","title":"Benchmark: memetic loop vs urb-evolve at equal oracle-call budget (Phase 2 gate)","description":"DESIGN.md §7 Phase 2 gate. Compare against urb-evolve from the same seeds/programmes at equal oracle-evaluation budget — NOT generations (urb-evolve has diversity injection/culling baked in, so generations are not comparable). Go/no-go: memetic loop must beat equal-budget urb-evolve. Scaling up waits for native fitness.","acceptance_criteria":"Best-fitness and failure-count comparison at \u003e=2 budgets, \u003e=3 seeds; go/no-go decision recorded in DESIGN.md","status":"closed","priority":2,"issue_type":"task","assignee":"Bruno Postle","owner":"bruno@postle.net","created_at":"2026-06-11T23:37:28Z","created_by":"Bruno Postle","updated_at":"2026-06-13T08:55:03Z","started_at":"2026-06-12T21:13:20Z","closed_at":"2026-06-13T08:55:03Z","close_reason":"Phase-2 gate run (benchmark_vs_urbevolve.py, 2026-06-13, 2000 evals, URB_NO_OCCLUSION=1): 2/3 seeds → REVIEW. Memetic beats urb-evolve by 1.91x/1.63x on seeded designs; blank-slate init.dom stalls at 18 fails vs urb-evolve's 6 (random-pop init advantage). Fix: patterns.config was missing from re-score cwd (run_search.py), giving false near-zero finals in first run. Results recorded in DESIGN.md §7 Phase 2 gate.","dependencies":[{"issue_id":"homemaker-py-way","depends_on_id":"homemaker-py-b39","type":"blocks","created_at":"2026-06-12T00:39:39Z","created_by":"Bruno Postle","metadata":"{}"},{"issue_id":"homemaker-py-way","depends_on_id":"homemaker-py-gp2","type":"blocks","created_at":"2026-06-12T08:27:45Z","created_by":"Bruno Postle","metadata":"{}"}],"dependency_count":2,"dependent_count":1,"comment_count":0} @@ -27,9 +27,9 @@ {"id":"homemaker-py-yg5","title":"Penalty reshaping: replace 0.5^n while preserving inner-loop protection","description":"DESIGN.md §4.7, §5.4, §7 Phase 4, §8.5. The 0.5^n cliff gives the outer search no gradient and rewards flag-count over geometry, but it also PROTECTS the inner loop from trading into new failures (§4.5). One fitness shape cannot naively be both soft outside and cliff-protected inside. Candidates: cliff-inside-inner-loop only, lexicographic (failure count first, score second), additive/soft, multi-objective Pareto. Must preserve the missing-space failure hierarchy (worse to drop a room than to have a poor one). Measure landscape + search outcomes; this helps Urb today too.","acceptance_criteria":"Chosen scheme documented with measurements: search improves while inner loop still never trades into new failures","status":"open","priority":3,"issue_type":"feature","owner":"bruno@postle.net","created_at":"2026-06-11T23:39:00Z","created_by":"Bruno Postle","updated_at":"2026-06-11T23:39:00Z","dependencies":[{"issue_id":"homemaker-py-yg5","depends_on_id":"homemaker-py-uxz","type":"blocks","created_at":"2026-06-12T00:39:46Z","created_by":"Bruno Postle","metadata":"{}"}],"dependency_count":1,"dependent_count":0,"comment_count":0} {"id":"homemaker-py-9gp","title":"Canonical slicing encoding (normalized Polish expression) + shape feasibility","description":"DESIGN.md §5.5, §7 Phase 5. Representation upgrade once core lands: normalized Polish expression / skewed slicing tree (Wong–Liu) for redundancy-free, high-locality topology moves (M1/M2/M3); bottom-up shape-feasibility checks to prune infeasible topologies before the inner loop. Goal: scale to larger programmes. Excluded representations stay excluded (§2): no sequence-pair/B*-tree (non-slicing).","acceptance_criteria":"Encoding round-trips with the genome; M1/M2/M3 moves implemented; measured search improvement on a larger-than-house programme","status":"open","priority":4,"issue_type":"feature","owner":"bruno@postle.net","created_at":"2026-06-11T23:39:02Z","created_by":"Bruno Postle","updated_at":"2026-06-11T23:39:02Z","dependencies":[{"issue_id":"homemaker-py-9gp","depends_on_id":"homemaker-py-ccw","type":"blocks","created_at":"2026-06-12T00:39:48Z","created_by":"Bruno Postle","metadata":"{}"}],"dependency_count":1,"dependent_count":0,"comment_count":0} {"id":"homemaker-py-2g5","title":"Rebuild occlusion/daylight/sun subsystem in Python (post-Phase-5, after optimisation fully native)","description":"DESIGN.md §6 port scope — a whole subsystem, not a term. quality_daylight (Leaf.pm:281-296) needs Urb::Misc::Sun + Urb::Field::Occlusion (+CIESky); quality_uncrinkliness also takes the occlusion object. Indoor spaces return 1 for daylight; cost is outdoor spaces + crinkliness. Port Sun_horizontal (262980-minute normalisation) and the occlusion wall set from Dom-\u003eWalls.","acceptance_criteria":"Daylight and crinkliness factors match Perl (float tolerance) across the corpus, including multi-storey cases","notes":"Re-scoped 2026-06-12: occlusion disabled in the Urb oracle instead of ported (see homemaker-py-gp2). Native fitness ships with simple crinkliness (illumination factor = 1, in homemaker-py-gnw). This issue is now the eventual Python occlusion rebuild, only after optimisation works entirely in Python. Restores outdoor-daylight and shaded-wall selection pressure.","status":"open","priority":4,"issue_type":"feature","owner":"bruno@postle.net","created_at":"2026-06-11T23:38:25Z","created_by":"Bruno Postle","updated_at":"2026-06-12T07:27:48Z","dependency_count":0,"dependent_count":0,"comment_count":0} -{"_type":"memory","key":"homemaker-py-pythonpath-set-pythonpath-home-bruno-src","value":"homemaker-py PYTHONPATH: set PYTHONPATH=/home/bruno/src/homemaker-py/src or use 'python -m pytest' from the project root (which reads pyproject.toml and adds src/ automatically). Never try 'pip show' or 'pip install' — it's not installed as a package."} -{"_type":"memory","key":"strategy-decision-2026-06-12-bruno-occlusion-daylight","value":"Strategy decision 2026-06-12 (Bruno): occlusion/daylight is ORTHOGONAL to building a scalable optimiser. Disable it in Urb (env flag, homemaker-py-gp2) rather than port it; native fitness uses simple crinkliness (illumination factor = 1); rebuild occlusion in Python only after optimisation is fully native (homemaker-py-2g5, now P4). Consequence: all scores change when the flag flips — re-baseline corpus/.score, DESIGN \\$4.5 gains, gate bars at one clean boundary AFTER homemaker-py-1p0 closes; Phase-2 urb-evolve benchmark must run with the same flag."} -{"_type":"memory","key":"correction-to-urb-fitness-bug-memory-bruno-2026","value":"CORRECTION to urb-fitness-bug memory (Bruno, 2026-06-12): 'C' is NOT a 'covered' type — Is_Covered is a geometric predicate (indoor space above). Urb's generic types are canonically UPPERCASE: C=circulation, O=outside, S=sahn (get_space_types qw/C O S/; corpus is 100% uppercase, never 'c'/'o' leaves). The mixed-case designs that fired the latent ratio_type first-match bug were created by homemaker's own operator type pool emitting lowercase 'c'/'o' — fixed: driver/operators now emit uppercase generics only, and class checks use t[0].lower() in 'cos'. The Urb class-sum patch stays as defensive hardening (zero impact on canonical designs). Native port (3y7/gnw): treat type classes case-insensitively, generics canonically uppercase."} -{"_type":"memory","key":"urb-oracle-nondeterminism-urb-fitness-pl-output-varies","value":"Urb oracle nondeterminism: urb-fitness.pl output varies run-to-run from Perl hash-order randomisation — .fails line ORDER shuffles (compare sorted, use oracle.Score.fail_lines) and the score float can flip by ~1 ULP (compare with math.isclose rel_tol=1e-12, never ==). Not a batching artifact; affects single runs too. Matters for the Phase 3 native-fitness parity gate (homemaker-py-uxz)."} {"_type":"memory","key":"user-preference-bruno-this-is-a-fedora-system","value":"User preference (Bruno): this is a Fedora system — NEVER install Python packages via pip without asking first; always ask whether to install the rpm via dnf (e.g. python3-cma) before considering pip. Applies to any dependency additions."} {"_type":"memory","key":"urb-fitness-bug-found-fixed-2026-06-12","value":"Urb fitness bug found+fixed 2026-06-12 (patch in /home/bruno/src/urb, uncommitted): ProgrammeDriven.pm ratio_o/ratio_type grepped case-insensitively over the ratios hash and took the FIRST key — nondeterministic (x4.5 score swings) for designs with mixed-case type classes (both 'c' circulation and 'C' covered). Fixed to SUM the class (matches Is_Circulation//Is_Outside semantics); 35/35 corpus scores unchanged. CRITICAL for homemaker-py-3y7/gnw: the native port must implement class-SUM ratios. Building.pm has the same unpatched pattern (site-driven path, not used by our oracle). Also: the memetic search reward-hacked this bug before the fix — search results predating it are noise artifacts."} +{"_type":"memory","key":"correction-to-urb-fitness-bug-memory-bruno-2026","value":"CORRECTION to urb-fitness-bug memory (Bruno, 2026-06-12): 'C' is NOT a 'covered' type — Is_Covered is a geometric predicate (indoor space above). Urb's generic types are canonically UPPERCASE: C=circulation, O=outside, S=sahn (get_space_types qw/C O S/; corpus is 100% uppercase, never 'c'/'o' leaves). The mixed-case designs that fired the latent ratio_type first-match bug were created by homemaker's own operator type pool emitting lowercase 'c'/'o' — fixed: driver/operators now emit uppercase generics only, and class checks use t[0].lower() in 'cos'. The Urb class-sum patch stays as defensive hardening (zero impact on canonical designs). Native port (3y7/gnw): treat type classes case-insensitively, generics canonically uppercase."} +{"_type":"memory","key":"homemaker-py-pythonpath-set-pythonpath-home-bruno-src","value":"homemaker-py PYTHONPATH: set PYTHONPATH=/home/bruno/src/homemaker-py/src or use 'python -m pytest' from the project root (which reads pyproject.toml and adds src/ automatically). Never try 'pip show' or 'pip install' — it's not installed as a package."} +{"_type":"memory","key":"urb-oracle-nondeterminism-urb-fitness-pl-output-varies","value":"Urb oracle nondeterminism: urb-fitness.pl output varies run-to-run from Perl hash-order randomisation — .fails line ORDER shuffles (compare sorted, use oracle.Score.fail_lines) and the score float can flip by ~1 ULP (compare with math.isclose rel_tol=1e-12, never ==). Not a batching artifact; affects single runs too. Matters for the Phase 3 native-fitness parity gate (homemaker-py-uxz)."} +{"_type":"memory","key":"strategy-decision-2026-06-12-bruno-occlusion-daylight","value":"Strategy decision 2026-06-12 (Bruno): occlusion/daylight is ORTHOGONAL to building a scalable optimiser. Disable it in Urb (env flag, homemaker-py-gp2) rather than port it; native fitness uses simple crinkliness (illumination factor = 1); rebuild occlusion in Python only after optimisation is fully native (homemaker-py-2g5, now P4). Consequence: all scores change when the flag flips — re-baseline corpus/.score, DESIGN \\$4.5 gains, gate bars at one clean boundary AFTER homemaker-py-1p0 closes; Phase-2 urb-evolve benchmark must run with the same flag."} diff --git a/examples/programme-house/0aec8e39552ff3bc9f43e085912644c5.dom b/examples/programme-house/0aec8e39552ff3bc9f43e085912644c5.dom new file mode 100644 index 0000000..bb00372 --- /dev/null +++ b/examples/programme-house/0aec8e39552ff3bc9f43e085912644c5.dom @@ -0,0 +1,113 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 2 +division: + - 0.599950804081447 + - 0.606333997057706 +height: 2.7 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + rotation: 1 + division: + - 0.658948373714837 + - 0.650977150687468 + l: + type: t3 + rotation: 0 + r: + type: O + rotation: 0 +r: + rotation: 3 + division: + - 0.558074990154856 + - 0.549009226654028 + l: + type: O + rotation: 0 + r: + type: C + rotation: 0 +above: + rotation: 0 + division: + - 0.573070816420214 + - 0.606333997057706 + height: 2.7 + l: + type: l1 + rotation: 0 + r: + rotation: 1 + division: + - 0.558074990154856 + - 0.549009226654028 + l: + type: b2 + rotation: 0 + r: + type: C + rotation: 0 + above: + rotation: 3 + division: + - 0.573070816420214 + - 0.606333997057706 + height: 2.7 + l: + rotation: 0 + division: + - 0.485939337505182 + - 0.472981052188782 + l: + type: O + rotation: 2 + r: + type: b1 + rotation: 1 + r: + rotation: 0 + division: + - 0.558074990154856 + - 0.549009226654028 + l: + rotation: 3 + division: + - 0.522060405694224 + - 0.523561326462362 + l: + type: t1 + rotation: 0 + r: + type: C + rotation: 1 + r: + rotation: 3 + division: + - 0.364709251592755 + - 0.348310829289835 + l: + type: C + rotation: 3 + r: + type: t2 + rotation: 0 diff --git a/examples/programme-house/105ceaf8751377af694a5bb8854bed3e.dom b/examples/programme-house/105ceaf8751377af694a5bb8854bed3e.dom new file mode 100644 index 0000000..eed6121 --- /dev/null +++ b/examples/programme-house/105ceaf8751377af694a5bb8854bed3e.dom @@ -0,0 +1,113 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 3 +division: + - 0.378863235215717 + - 0.352107342964516 +height: 3.6 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + rotation: 3 + division: + - 0.272046320711251 + - 0.273135719824572 + l: + type: t3 + rotation: 0 + r: + type: C + rotation: 0 +r: + type: O + rotation: 0 +above: + rotation: 2 + division: + - 0.266815892313844 + - 0.352107342964516 + height: 3.15 + l: + rotation: 3 + division: + - 0.493276493743343 + - 0.273135719824572 + l: + type: t2 + rotation: 3 + r: + rotation: 3 + division: + - 0.43648440957823 + - 0.438889102194046 + l: + type: C + rotation: 0 + r: + type: O + rotation: 0 + r: + type: l1 + rotation: 0 + above: + rotation: 0 + division: + - 0.377536726416306 + - 0.352107342964516 + height: 2.7 + l: + rotation: 0 + division: + - 0.272046320711251 + - 0.273135719824572 + l: + type: t2 + rotation: 3 + r: + rotation: 1 + division: + - 0.473934906154782 + - 0.438889102194046 + l: + type: b2 + rotation: 0 + r: + type: O + rotation: 0 + r: + rotation: 1 + division: + - 0.409542046279492 + - 0.411480860109901 + l: + rotation: 3 + division: + - 0.449571715787478 + - 0.450783752244167 + l: + type: C + rotation: 3 + r: + type: t1 + rotation: 0 + r: + type: b1 + rotation: 0 diff --git a/examples/programme-house/155953b017c5c7b7559d5a2a1f22cd5f.dom b/examples/programme-house/155953b017c5c7b7559d5a2a1f22cd5f.dom new file mode 100644 index 0000000..54dd190 --- /dev/null +++ b/examples/programme-house/155953b017c5c7b7559d5a2a1f22cd5f.dom @@ -0,0 +1,105 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 3 +division: + - 0.681796364796382 + - 0.666507842783208 +height: 2.7 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + rotation: 1 + division: + - 0.385154624230216 + - 0.425325459721316 + l: + rotation: 1 + division: + - 0.43859616067264 + - 0.452455346437928 + l: + type: t3 + rotation: 0 + r: + type: O + rotation: 0 + r: + type: O + rotation: 2 +r: + rotation: 1 + division: + - 0.5660761955678 + - 0.566318926462522 + l: + type: C + rotation: 0 + r: + type: O + rotation: 0 +above: + rotation: 0 + division: + - 0.317554429861135 + - 0.669585416805334 + height: 2.7 + l: + rotation: 2 + division: + - 0.385154624230216 + - 0.387037179575097 + l: + type: t2 + rotation: 0 + r: + type: b1 + rotation: 0 + r: + rotation: 3 + division: + - 0.5660761955678 + - 0.566318926462522 + l: + type: C + rotation: 0 + r: + type: t1 + rotation: 0 + above: + rotation: 1 + division: + - 0.265337858323527 + - 0.669585416805334 + height: 2.7 + l: + type: l1 + rotation: 0 + r: + rotation: 3 + division: + - 0.501797365257554 + - 0.566318926462522 + l: + type: C + rotation: 0 + r: + type: b2 + rotation: 0 diff --git a/examples/programme-house/21059668d774c17322e78931605080ad.dom b/examples/programme-house/21059668d774c17322e78931605080ad.dom new file mode 100644 index 0000000..a3a6a33 --- /dev/null +++ b/examples/programme-house/21059668d774c17322e78931605080ad.dom @@ -0,0 +1,93 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 0 +division: + - 0.331413948270883 + - 0.334700173214137 +height: 3.15 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + rotation: 3 + division: + - 0.452770336466857 + - 0.444242853292145 + l: + rotation: 2 + division: + - 0.385595791132051 + - 0.385595791132051 + l: + type: C + rotation: 0 + r: + type: t3 + rotation: 0 + r: + type: b2 + rotation: 2 +r: + rotation: 3 + division: + - 0.470118039662231 + - 0.453180243156831 + l: + rotation: 3 + division: + - 0.447190569269084 + - 0.445817736108476 + l: + type: t2 + rotation: 0 + r: + type: C + rotation: 0 + r: + type: O + rotation: 0 +above: + rotation: 3 + division: + - 0.246884506610435 + - 0.32808332126606 + height: 2.85 + l: + rotation: 3 + division: + - 0.452770336466857 + - 0.444242853292145 + l: + type: b1 + rotation: 1 + r: + rotation: 2 + division: + - 0.526689035234307 + - 0.526689035234306 + l: + type: t1 + rotation: 1 + r: + type: C + rotation: 0 + r: + type: l1 + rotation: 3 diff --git a/examples/programme-house/2c13a0816affe390130cb0ad24336d81.dom b/examples/programme-house/2c13a0816affe390130cb0ad24336d81.dom new file mode 100644 index 0000000..638307a --- /dev/null +++ b/examples/programme-house/2c13a0816affe390130cb0ad24336d81.dom @@ -0,0 +1,93 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 0 +division: + - 0.649495702060859 + - 0.642968433259752 +height: 2.85 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + rotation: 3 + division: + - 0.689806497315183 + - 0.676933598143546 + l: + type: l1 + rotation: 0 + r: + type: t3 + rotation: 0 +r: + rotation: 3 + division: + - 0.50817288210463 + - 0.497813683362743 + l: + type: O + rotation: 0 + r: + type: C + rotation: 0 +above: + rotation: 0 + division: + - 0.649495702060859 + - 0.642968433259752 + height: 2.7 + l: + rotation: 3 + division: + - 0.51919675518435 + - 0.676933598143546 + l: + type: b1 + rotation: 0 + r: + rotation: 1 + division: + - 0.512506051028028 + - 0.507029992168845 + l: + rotation: 3 + division: + - 0.618222089580555 + - 0.618222089580555 + l: + type: t1 + rotation: 0 + r: + type: O + rotation: 0 + r: + type: t2 + rotation: 0 + r: + rotation: 3 + division: + - 0.488070257489004 + - 0.477365094856781 + l: + type: b2 + rotation: 3 + r: + type: C + rotation: 0 diff --git a/examples/programme-house/2f45907abd9accac2a124d311732f749.dom b/examples/programme-house/2f45907abd9accac2a124d311732f749.dom new file mode 100644 index 0000000..3318bb3 --- /dev/null +++ b/examples/programme-house/2f45907abd9accac2a124d311732f749.dom @@ -0,0 +1,121 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 0 +division: + - 0.61618518940465 + - 0.609992682895765 +height: 2.7 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + rotation: 1 + division: + - 0.694899480647243 + - 0.672288725464987 + l: + rotation: 2 + division: + - 0.540078494102455 + - 0.537537200602358 + l: + type: t3 + rotation: 0 + r: + type: O + rotation: 0 + r: + rotation: 3 + division: + - 0.520750519477552 + - 0.520750519477553 + l: + type: t2 + rotation: 0 + r: + type: C + rotation: 3 +r: + rotation: 3 + division: + - 0.468817377978931 + - 0.456759157918245 + l: + type: C + rotation: 0 + r: + type: O + rotation: 0 +above: + rotation: 1 + division: + - 0.61618518940465 + - 0.673783868504504 + height: 3 + l: + type: l1 + rotation: 0 + r: + rotation: 2 + division: + - 0.471317272202465 + - 0.459306035998503 + l: + type: C + rotation: 0 + r: + type: b2 + rotation: 1 + above: + rotation: 0 + division: + - 0.770876454366929 + - 0.620225807306772 + height: 2.7 + l: + rotation: 2 + division: + - 0.365517195540777 + - 0.352117397076425 + l: + type: O + rotation: 3 + r: + type: b1 + rotation: 0 + r: + rotation: 0 + division: + - 0.58811752341049 + - 0.456759157918245 + l: + type: C + rotation: 0 + r: + rotation: 1 + division: + - 0.357193618767318 + - 0.355829261203023 + l: + type: t1 + rotation: 0 + r: + type: O + rotation: 0 diff --git a/examples/programme-house/3ec9e7f4785e3db8b71921444c8fd4fa.dom b/examples/programme-house/3ec9e7f4785e3db8b71921444c8fd4fa.dom new file mode 100644 index 0000000..ca9f20d --- /dev/null +++ b/examples/programme-house/3ec9e7f4785e3db8b71921444c8fd4fa.dom @@ -0,0 +1,129 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 0 +division: + - 0.61618518940465 + - 0.609992682895765 +height: 2.7 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + rotation: 1 + division: + - 0.676461703263764 + - 0.654366548273542 + l: + rotation: 2 + division: + - 0.53247497064589 + - 0.529901164033976 + l: + type: t3 + rotation: 0 + r: + type: O + rotation: 0 + r: + rotation: 3 + division: + - 0.51871277076932 + - 0.518712770769321 + l: + type: t2 + rotation: 0 + r: + type: C + rotation: 3 +r: + rotation: 3 + division: + - 0.483509130257645 + - 0.471727031953465 + l: + type: C + rotation: 0 + r: + rotation: 0 + division: + - 0.480308746798143 + - 0.47156237677467 + l: + type: C + rotation: 3 + r: + type: b2 + rotation: 0 +above: + rotation: 3 + division: + - 0.61618518940465 + - 0.616522714310992 + height: 3 + l: + type: l1 + rotation: 0 + r: + rotation: 3 + division: + - 0.483509130257645 + - 0.471727031953466 + l: + type: C + rotation: 0 + r: + type: b2 + rotation: 1 + above: + rotation: 0 + division: + - 0.61618518940465 + - 0.616522714310992 + height: 2.7 + l: + rotation: 2 + division: + - 0.352822013768009 + - 0.339777227625577 + l: + type: O + rotation: 3 + r: + type: b1 + rotation: 0 + r: + rotation: 0 + division: + - 0.470048262739002 + - 0.471727031953466 + l: + type: C + rotation: 0 + r: + rotation: 1 + division: + - 0.396223957498812 + - 0.394667636173583 + l: + type: t1 + rotation: 0 + r: + type: O + rotation: 0 diff --git a/examples/programme-house/3ff824bf8e5e00f28a736fcb405a4702.dom b/examples/programme-house/3ff824bf8e5e00f28a736fcb405a4702.dom new file mode 100644 index 0000000..69f539c --- /dev/null +++ b/examples/programme-house/3ff824bf8e5e00f28a736fcb405a4702.dom @@ -0,0 +1,93 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 0 +division: + - 0.640861364633565 + - 0.618116557145591 +height: 2.85 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + rotation: 1 + division: + - 0.432344506641766 + - 0.408662871293951 + l: + type: t2 + rotation: 3 + r: + type: l1 + rotation: 0 +r: + rotation: 1 + division: + - 0.501760956847816 + - 0.485810927767154 + l: + rotation: 2 + division: + - 0.437945860314428 + - 0.431937228255208 + l: + type: C + rotation: 0 + r: + type: t3 + rotation: 0 + r: + type: C + rotation: 0 +above: + rotation: 1 + division: + - 0.279560736422365 + - 0.698138560757517 + height: 2.7 + l: + type: O + rotation: 0 + r: + rotation: 1 + division: + - 0.501760956847816 + - 0.485810927767154 + l: + type: b1 + rotation: 0 + r: + rotation: 2 + division: + - 0.374589912543666 + - 0.356253083989275 + l: + rotation: 3 + division: + - 0.496556191974083 + - 0.489012297375442 + l: + type: C + rotation: 0 + r: + type: t1 + rotation: 0 + r: + type: b2 + rotation: 0 diff --git a/examples/programme-house/458aa8b8756bc099ce22f0ee92ce4c88.dom b/examples/programme-house/458aa8b8756bc099ce22f0ee92ce4c88.dom new file mode 100644 index 0000000..63f3c4b --- /dev/null +++ b/examples/programme-house/458aa8b8756bc099ce22f0ee92ce4c88.dom @@ -0,0 +1,105 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 0 +division: + - 0.352012705551212 + - 0.348475066205413 +height: 2.7 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + rotation: 1 + division: + - 0.566253989446299 + - 0.555392137268363 + l: + type: C + rotation: 0 + r: + type: b1 + rotation: 0 +r: + rotation: 3 + division: + - 0.316112732647737 + - 0.291162858615593 + l: + rotation: 1 + division: + - 0.507942157135679 + - 0.505660899112881 + l: + type: t1 + rotation: 0 + r: + type: O + rotation: 0 + r: + rotation: 2 + division: + - 0.599494002234926 + - 0.597504813864869 + l: + type: t3 + rotation: 0 + r: + type: C + rotation: 2 +above: + rotation: 1 + division: + - 0.490396256226034 + - 0.355085638042212 + height: 3 + l: + rotation: 2 + division: + - 0.566253989446299 + - 0.555392137268363 + l: + type: C + rotation: 2 + r: + type: t2 + rotation: 0 + r: + type: l1 + rotation: 1 + above: + rotation: 1 + division: + - 0.490396256226034 + - 0.355085638042212 + height: 2.7 + l: + rotation: 1 + division: + - 0.566253989446299 + - 0.555392137268363 + l: + type: C + rotation: 3 + r: + type: b2 + rotation: 0 + r: + type: O + rotation: 0 diff --git a/examples/programme-house/48ffdc096e07ba0bdc7b537485ce7a79.dom b/examples/programme-house/48ffdc096e07ba0bdc7b537485ce7a79.dom new file mode 100644 index 0000000..de61ec6 --- /dev/null +++ b/examples/programme-house/48ffdc096e07ba0bdc7b537485ce7a79.dom @@ -0,0 +1,121 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 0 +division: + - 0.61618518940465 + - 0.609992682895765 +height: 2.7 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + rotation: 1 + division: + - 0.676461703263764 + - 0.654366548273542 + l: + rotation: 2 + division: + - 0.53247497064589 + - 0.529901164033976 + l: + type: t3 + rotation: 0 + r: + type: O + rotation: 0 + r: + rotation: 3 + division: + - 0.51871277076932 + - 0.518712770769321 + l: + type: t2 + rotation: 0 + r: + type: C + rotation: 3 +r: + rotation: 3 + division: + - 0.483509130257645 + - 0.471727031953465 + l: + type: C + rotation: 0 + r: + type: O + rotation: 0 +above: + rotation: 3 + division: + - 0.61618518940465 + - 0.616522714310992 + height: 3 + l: + type: l1 + rotation: 0 + r: + rotation: 3 + division: + - 0.483509130257645 + - 0.471727031953466 + l: + type: C + rotation: 0 + r: + type: b2 + rotation: 1 + above: + rotation: 0 + division: + - 0.61618518940465 + - 0.616522714310992 + height: 2.7 + l: + rotation: 2 + division: + - 0.352822013768009 + - 0.339777227625577 + l: + type: O + rotation: 3 + r: + type: b1 + rotation: 0 + r: + rotation: 0 + division: + - 0.470048262739002 + - 0.471727031953466 + l: + type: C + rotation: 0 + r: + rotation: 1 + division: + - 0.396223957498812 + - 0.394667636173583 + l: + type: t1 + rotation: 0 + r: + type: O + rotation: 0 diff --git a/examples/programme-house/6cdced8e6d3aae40bdb7180d1a206729.dom b/examples/programme-house/6cdced8e6d3aae40bdb7180d1a206729.dom new file mode 100644 index 0000000..93110b8 --- /dev/null +++ b/examples/programme-house/6cdced8e6d3aae40bdb7180d1a206729.dom @@ -0,0 +1,101 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 0 +division: + - 0.790957001557608 + - 0.846278740987781 +height: 2.7 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + rotation: 1 + division: + - 0.716362962925705 + - 0.726544399561329 + l: + rotation: 1 + division: + - 0.52534752012802 + - 0.557434559323296 + l: + rotation: 1 + division: + - 0.526763062145055 + - 0.542024600773733 + l: + type: b2 + rotation: 0 + r: + type: b1 + rotation: 0 + r: + rotation: 1 + division: + - 0.474866479400687 + - 0.4854818324657 + l: + type: C + rotation: 0 + r: + type: t1 + rotation: 0 + r: + rotation: 1 + division: + - 0.514415824305834 + - 0.525560687381289 + l: + type: t3 + rotation: 0 + r: + type: C + rotation: 0 +r: + type: O + rotation: 0 +above: + rotation: 0 + division: + - 0.790957001557608 + - 0.846278740987781 + height: 3.15 + l: + rotation: 2 + division: + - 0.716362962925705 + - 0.726544399561329 + l: + type: l1 + rotation: 0 + r: + rotation: 2 + division: + - 0.516674749263939 + - 0.527868552142889 + l: + type: t2 + rotation: 0 + r: + type: C + rotation: 0 + r: + type: O + rotation: 1 diff --git a/examples/programme-house/6fa7ebd4d570ebe48c8845fbc4e4ead0.dom b/examples/programme-house/6fa7ebd4d570ebe48c8845fbc4e4ead0.dom new file mode 100644 index 0000000..3ae4e60 --- /dev/null +++ b/examples/programme-house/6fa7ebd4d570ebe48c8845fbc4e4ead0.dom @@ -0,0 +1,97 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 3 +division: + - 0.701093437536471 + - 0.6898090136525 +height: 3 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + rotation: 3 + division: + - 0.532834251740489 + - 0.536796223799834 + l: + type: t3 + rotation: 0 + r: + type: t2 + rotation: 0 +r: + rotation: 3 + division: + - 0.491681083806289 + - 0.493244740054981 + l: + type: C + rotation: 2 + r: + type: C + rotation: 1 +above: + rotation: 2 + division: + - 0.472666155584864 + - 0.6898090136525 + height: 2.7 + l: + type: l1 + rotation: 0 + r: + rotation: 0 + division: + - 0.469229934223675 + - 0.493244740054981 + l: + type: C + rotation: 2 + r: + type: t1 + rotation: 0 + above: + rotation: 1 + division: + - 0.261091043586586 + - 0.6898090136525 + height: 2.7 + l: + rotation: 2 + division: + - 0.295811200441434 + - 0.52906868968595 + l: + type: b2 + rotation: 3 + r: + type: O + rotation: 0 + r: + rotation: 0 + division: + - 0.491681083806289 + - 0.493244740054981 + l: + type: C + rotation: 2 + r: + type: b1 + rotation: 3 diff --git a/examples/programme-house/77f9db022c0f124eef216ab3737edd3c.dom b/examples/programme-house/77f9db022c0f124eef216ab3737edd3c.dom new file mode 100644 index 0000000..83f4d40 --- /dev/null +++ b/examples/programme-house/77f9db022c0f124eef216ab3737edd3c.dom @@ -0,0 +1,121 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 0 +division: + - 0.61618518940465 + - 0.609992682895765 +height: 2.7 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + rotation: 1 + division: + - 0.694899480647243 + - 0.672288725464987 + l: + rotation: 2 + division: + - 0.540078494102455 + - 0.537537200602358 + l: + type: t3 + rotation: 0 + r: + type: O + rotation: 0 + r: + rotation: 3 + division: + - 0.520750519477552 + - 0.520750519477553 + l: + type: t2 + rotation: 0 + r: + type: C + rotation: 3 +r: + rotation: 3 + division: + - 0.468804804658597 + - 0.456746348290681 + l: + type: C + rotation: 0 + r: + type: O + rotation: 0 +above: + rotation: 1 + division: + - 0.61618518940465 + - 0.673783868504504 + height: 3 + l: + type: l1 + rotation: 0 + r: + rotation: 2 + division: + - 0.471317272202465 + - 0.459306035998503 + l: + type: C + rotation: 0 + r: + type: b2 + rotation: 1 + above: + rotation: 0 + division: + - 0.439938129449802 + - 0.609992682895764 + height: 2.7 + l: + rotation: 2 + division: + - 0.365517195540777 + - 0.352117397076424 + l: + type: O + rotation: 3 + r: + type: b1 + rotation: 0 + r: + rotation: 0 + division: + - 0.58811752341049 + - 0.456746348290681 + l: + type: C + rotation: 0 + r: + rotation: 1 + division: + - 0.357193618767318 + - 0.355829293373838 + l: + type: t1 + rotation: 0 + r: + type: O + rotation: 0 diff --git a/examples/programme-house/7d8269c8faa6adf23432243c13e90cb6.dom b/examples/programme-house/7d8269c8faa6adf23432243c13e90cb6.dom new file mode 100644 index 0000000..a1c679f --- /dev/null +++ b/examples/programme-house/7d8269c8faa6adf23432243c13e90cb6.dom @@ -0,0 +1,109 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 0 +division: + - 0.650489933511714 + - 0.643952672934049 +height: 2.85 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + rotation: 1 + division: + - 0.544956855816955 + - 0.52551378136892 + l: + rotation: 2 + division: + - 0.462868292091111 + - 0.459931719738208 + l: + rotation: 3 + division: + - 0.389925366212586 + - 0.389925366212586 + l: + type: C + rotation: 0 + r: + type: t3 + rotation: 0 + r: + type: t2 + rotation: 0 + r: + rotation: 3 + division: + - 0.518265801561161 + - 0.518265801561163 + l: + type: b1 + rotation: 0 + r: + type: C + rotation: 0 +r: + rotation: 1 + division: + - 0.492433196245574 + - 0.482266713256015 + l: + type: O + rotation: 0 + r: + type: t1 + rotation: 0 +above: + rotation: 1 + division: + - 0.295446992501235 + - 0.707641687951616 + height: 2.7 + l: + rotation: 1 + division: + - 0.544956855816955 + - 0.52551378136892 + l: + type: l1 + rotation: 0 + r: + rotation: 3 + division: + - 0.462868292091111 + - 0.518265801561163 + l: + type: b2 + rotation: 0 + r: + type: C + rotation: 0 + r: + rotation: 0 + division: + - 0.5 + - 0.482266713256015 + l: + type: O + rotation: 0 + r: + type: O + rotation: 0 diff --git a/examples/programme-house/7ef10b4dfe6bf7d9cee5bf0cbd7d67a9.dom b/examples/programme-house/7ef10b4dfe6bf7d9cee5bf0cbd7d67a9.dom new file mode 100644 index 0000000..94576bb --- /dev/null +++ b/examples/programme-house/7ef10b4dfe6bf7d9cee5bf0cbd7d67a9.dom @@ -0,0 +1,97 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 3 +division: + - 0.378863235215717 + - 0.352107342964516 +height: 3.6 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + rotation: 3 + division: + - 0.272046320711251 + - 0.273135719824572 + l: + type: t3 + rotation: 0 + r: + type: C + rotation: 0 +r: + type: S + rotation: 1 +above: + rotation: 2 + division: + - 0.266815892313844 + - 0.352107342964516 + height: 3.45 + l: + rotation: 0 + division: + - 0.493276493743343 + - 0.273135719824571 + l: + type: t2 + rotation: 3 + r: + rotation: 3 + division: + - 0.43648440957823 + - 0.438889102194046 + l: + type: C + rotation: 0 + r: + type: b2 + rotation: 0 + r: + type: l1 + rotation: 0 + above: + rotation: 0 + division: + - 0.377536726416306 + - 0.352107342964516 + height: 2.7 + l: + type: O + rotation: 0 + r: + rotation: 1 + division: + - 0.291520902452743 + - 0.293447447950506 + l: + rotation: 3 + division: + - 0.449571715787478 + - 0.450335315550294 + l: + type: C + rotation: 3 + r: + type: t1 + rotation: 0 + r: + type: b1 + rotation: 0 diff --git a/examples/programme-house/82c7439d3098ad710fef7d8caa3e320d.dom b/examples/programme-house/82c7439d3098ad710fef7d8caa3e320d.dom new file mode 100644 index 0000000..8201008 --- /dev/null +++ b/examples/programme-house/82c7439d3098ad710fef7d8caa3e320d.dom @@ -0,0 +1,101 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 1 +division: + - 0.355042854266755 + - 0.384312947569606 +height: 2.7 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + rotation: 1 + division: + - 0.507738626099041 + - 0.508263969255782 + l: + type: C + rotation: 0 + r: + type: b2 + rotation: 0 +r: + rotation: 3 + division: + - 0.683507075237483 + - 0.675781098911551 + l: + type: l1 + rotation: 0 + r: + rotation: 1 + division: + - 0.537675242261878 + - 0.509019056989911 + l: + type: C + rotation: 0 + r: + type: t3 + rotation: 0 +above: + rotation: 2 + division: + - 0.25672522896156 + - 0.341703586371173 + height: 2.7 + l: + rotation: 2 + division: + - 0.477839627836153 + - 0.530027529746519 + l: + type: C + rotation: 0 + r: + rotation: 3 + division: + - 0.621724369187797 + - 0.624812000966495 + l: + type: t1 + rotation: 0 + r: + type: O + rotation: 3 + r: + rotation: 2 + division: + - 0.683507075237483 + - 0.675781098911551 + l: + type: b1 + rotation: 0 + r: + rotation: 2 + division: + - 0.53201708273567 + - 0.514651094665004 + l: + type: t2 + rotation: 0 + r: + type: O + rotation: 0 diff --git a/examples/programme-house/8fbadf0d7cd70ff6eb49c2dc978ed4e0.dom b/examples/programme-house/8fbadf0d7cd70ff6eb49c2dc978ed4e0.dom new file mode 100644 index 0000000..f256874 --- /dev/null +++ b/examples/programme-house/8fbadf0d7cd70ff6eb49c2dc978ed4e0.dom @@ -0,0 +1,121 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 0 +division: + - 0.61618518940465 + - 0.609992682895765 +height: 2.7 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + rotation: 1 + division: + - 0.676461703263764 + - 0.654366548273542 + l: + rotation: 2 + division: + - 0.508397897842548 + - 0.505940471779192 + l: + type: t3 + rotation: 0 + r: + type: O + rotation: 0 + r: + rotation: 3 + division: + - 0.51871277076932 + - 0.518712770769321 + l: + type: t2 + rotation: 0 + r: + type: C + rotation: 3 +r: + rotation: 3 + division: + - 0.471317272202465 + - 0.459306035998503 + l: + type: C + rotation: 0 + r: + type: O + rotation: 0 +above: + rotation: 1 + division: + - 0.61618518940465 + - 0.673783868504504 + height: 3.15 + l: + type: l1 + rotation: 0 + r: + rotation: 3 + division: + - 0.471317272202465 + - 0.459306035998503 + l: + type: C + rotation: 0 + r: + type: b2 + rotation: 1 + above: + rotation: 0 + division: + - 0.61618518940465 + - 0.673783868504504 + height: 2.7 + l: + rotation: 2 + division: + - 0.352822013768009 + - 0.339777227625577 + l: + type: O + rotation: 3 + r: + type: b1 + rotation: 0 + r: + rotation: 0 + division: + - 0.58811752341049 + - 0.471727031953466 + l: + type: C + rotation: 0 + r: + rotation: 1 + division: + - 0.357193618767318 + - 0.355822834550231 + l: + type: t1 + rotation: 0 + r: + type: O + rotation: 0 diff --git a/examples/programme-house/a82f07068e4408fdd0d5e3dc469a8dee.dom b/examples/programme-house/a82f07068e4408fdd0d5e3dc469a8dee.dom new file mode 100644 index 0000000..dddd5b3 --- /dev/null +++ b/examples/programme-house/a82f07068e4408fdd0d5e3dc469a8dee.dom @@ -0,0 +1,113 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 3 +division: + - 0.653290657599936 + - 0.656940646962154 +height: 2.7 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + type: l1 + rotation: 0 +r: + rotation: 1 + division: + - 0.525120341518669 + - 0.534089784809702 + l: + type: O + rotation: 0 + r: + type: C + rotation: 0 +above: + rotation: 0 + division: + - 0.457232189070831 + - 0.636632540510657 + height: 2.7 + l: + rotation: 1 + division: + - 0.608994937808456 + - 0.592569097086063 + l: + rotation: 3 + division: + - 0.622920995349922 + - 0.630090493909853 + l: + rotation: 2 + division: + - 0.461388892256161 + - 0.465438937366622 + l: + type: C + rotation: 0 + r: + type: t2 + rotation: 0 + r: + type: t3 + rotation: 0 + r: + rotation: 1 + division: + - 0.473226588815428 + - 0.480117083762053 + l: + type: t1 + rotation: 0 + r: + type: C + rotation: 0 + r: + rotation: 2 + division: + - 0.525120341518669 + - 0.534089784809702 + l: + type: b1 + rotation: 0 + r: + type: C + rotation: 0 + above: + rotation: 0 + division: + - 0.5 + - 0.636632540510657 + height: 2.7 + l: + type: O + rotation: 2 + r: + rotation: 2 + division: + - 0.491795465184111 + - 0.534089784809702 + l: + type: b2 + rotation: 1 + r: + type: C + rotation: 0 diff --git a/examples/programme-house/aa0dcab98927d2c933e8381d37734971.dom b/examples/programme-house/aa0dcab98927d2c933e8381d37734971.dom new file mode 100644 index 0000000..07bf055 --- /dev/null +++ b/examples/programme-house/aa0dcab98927d2c933e8381d37734971.dom @@ -0,0 +1,109 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 0 +division: + - 0.403331205207997 + - 0.405872753767004 +height: 2.7 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + rotation: 3 + division: + - 0.543722653115747 + - 0.535071866435931 + l: + type: l1 + rotation: 0 + r: + type: O + rotation: 0 +r: + rotation: 1 + division: + - 0.472063738394962 + - 0.458962362485161 + l: + type: b1 + rotation: 1 + r: + rotation: 1 + division: + - 0.466451517847916 + - 0.464721728498456 + l: + rotation: 1 + division: + - 0.521460267761276 + - 0.50939094627876 + l: + type: b2 + rotation: 0 + r: + type: t1 + rotation: 1 + r: + type: C + rotation: 0 +above: + rotation: 0 + division: + - 0.735102030017157 + - 0.463702961238832 + height: 2.7 + l: + rotation: 3 + division: + - 0.488853499876492 + - 0.479162421928184 + l: + type: O + rotation: 0 + r: + type: O + rotation: 0 + r: + rotation: 1 + division: + - 0.472063738394962 + - 0.458962362485161 + l: + type: b1 + rotation: 1 + r: + rotation: 1 + division: + - 0.466451517847916 + - 0.464721728498456 + l: + rotation: 1 + division: + - 0.586039832050529 + - 0.50939094627876 + l: + type: t2 + rotation: 0 + r: + type: t3 + rotation: 3 + r: + type: C + rotation: 0 diff --git a/examples/programme-house/aa4f7a9839a84435ac07fdf8111cce42.dom b/examples/programme-house/aa4f7a9839a84435ac07fdf8111cce42.dom new file mode 100644 index 0000000..d5c1f36 --- /dev/null +++ b/examples/programme-house/aa4f7a9839a84435ac07fdf8111cce42.dom @@ -0,0 +1,93 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 0 +division: + - 0.416571524918773 + - 0.476770785117372 +height: 2.7 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + rotation: 1 + division: + - 0.386699425162827 + - 0.398294036621843 + l: + type: C + rotation: 0 + r: + rotation: 0 + division: + - 0.427039036035912 + - 0.427039036035913 + l: + type: C + rotation: 3 + r: + rotation: 1 + division: + - 0.368099051988511 + - 0.386437272777796 + l: + type: t3 + rotation: 0 + r: + type: t2 + rotation: 0 +r: + rotation: 3 + division: + - 0.618854207373487 + - 0.636019059077875 + l: + type: b1 + rotation: 0 + r: + type: l1 + rotation: 0 +above: + rotation: 0 + division: + - 0.320100070648753 + - 0.422713579565816 + height: 2.7 + l: + rotation: 3 + division: + - 0.388168826515098 + - 0.399735658548404 + l: + type: C + rotation: 0 + r: + rotation: 1 + division: + - 0.428832676657783 + - 0.428832676657784 + l: + type: b2 + rotation: 0 + r: + type: O + rotation: 0 + r: + type: t1 + rotation: 1 diff --git a/examples/programme-house/b5d6002ff0b04f9269566b14d5e91f2a.dom b/examples/programme-house/b5d6002ff0b04f9269566b14d5e91f2a.dom new file mode 100644 index 0000000..c2b5e20 --- /dev/null +++ b/examples/programme-house/b5d6002ff0b04f9269566b14d5e91f2a.dom @@ -0,0 +1,93 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 0 +division: + - 0.352695817076735 + - 0.359510324483526 +height: 3 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + rotation: 1 + division: + - 0.489020953369244 + - 0.481455327322648 + l: + type: C + rotation: 1 + r: + rotation: 0 + division: + - 0.524896954148719 + - 0.508721360166699 + l: + type: C + rotation: 1 + r: + type: t3 + rotation: 0 +r: + rotation: 1 + division: + - 0.558379038316587 + - 0.543635058954328 + l: + type: t2 + rotation: 0 + r: + type: b2 + rotation: 0 +above: + rotation: 0 + division: + - 0.717700317868418 + - 0.359510324483526 + height: 2.7 + l: + rotation: 1 + division: + - 0.489020953369244 + - 0.481455327322648 + l: + type: C + rotation: 2 + r: + rotation: 1 + division: + - 0.489958725917368 + - 0.474859812967415 + l: + type: t1 + rotation: 0 + r: + type: b1 + rotation: 0 + r: + rotation: 2 + division: + - 0.617511851191605 + - 0.596993408107089 + l: + type: l1 + rotation: 0 + r: + type: O + rotation: 0 diff --git a/examples/programme-house/c074775d0660ba48fa607f4472c7e484.dom b/examples/programme-house/c074775d0660ba48fa607f4472c7e484.dom new file mode 100644 index 0000000..0868eef --- /dev/null +++ b/examples/programme-house/c074775d0660ba48fa607f4472c7e484.dom @@ -0,0 +1,113 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 3 +division: + - 0.680695949539758 + - 0.668432166526694 +height: 2.7 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + type: l1 + rotation: 0 +r: + rotation: 3 + division: + - 0.490465411886471 + - 0.492131642648191 + l: + type: O + rotation: 0 + r: + type: C + rotation: 0 +above: + rotation: 0 + division: + - 0.273399533942611 + - 0.668432166526694 + height: 2.7 + l: + type: t1 + rotation: 0 + r: + rotation: 1 + division: + - 0.501726852638636 + - 0.492131642648191 + l: + type: b1 + rotation: 0 + r: + type: C + rotation: 0 + above: + rotation: 3 + division: + - 0.666913887732339 + - 0.668432166526694 + height: 2.7 + l: + rotation: 1 + division: + - 0.614730780202971 + - 0.588824618537811 + l: + rotation: 1 + division: + - 0.530280355953204 + - 0.532349558018156 + l: + type: b2 + rotation: 0 + r: + type: O + rotation: 0 + r: + rotation: 1 + division: + - 0.505363084687358 + - 0.506734747717137 + l: + type: C + rotation: 0 + r: + type: t2 + rotation: 0 + r: + rotation: 2 + division: + - 0.503072620681601 + - 0.492131642648191 + l: + type: O + rotation: 0 + r: + rotation: 3 + division: + - 0.451126470650697 + - 0.454144155747079 + l: + type: O + rotation: 0 + r: + type: t3 + rotation: 0 diff --git a/examples/programme-house/c436666f7cf1c24b20daaa625a01a071.dom b/examples/programme-house/c436666f7cf1c24b20daaa625a01a071.dom new file mode 100644 index 0000000..f7ea641 --- /dev/null +++ b/examples/programme-house/c436666f7cf1c24b20daaa625a01a071.dom @@ -0,0 +1,121 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 0 +division: + - 0.61618518940465 + - 0.609992682895765 +height: 2.7 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + rotation: 1 + division: + - 0.676461703263764 + - 0.654366548273542 + l: + rotation: 2 + division: + - 0.527679649893444 + - 0.525129022264466 + l: + type: t3 + rotation: 0 + r: + type: O + rotation: 0 + r: + rotation: 3 + division: + - 0.527194251156148 + - 0.527194251156148 + l: + type: t2 + rotation: 0 + r: + type: C + rotation: 3 +r: + rotation: 3 + division: + - 0.471317272202465 + - 0.459306035998503 + l: + type: C + rotation: 0 + r: + type: O + rotation: 0 +above: + rotation: 1 + division: + - 0.61618518940465 + - 0.673783868504504 + height: 3 + l: + type: l1 + rotation: 0 + r: + rotation: 2 + division: + - 0.501827308865798 + - 0.459306035998503 + l: + type: C + rotation: 0 + r: + type: b2 + rotation: 1 + above: + rotation: 0 + division: + - 0.61618518940465 + - 0.673783868504504 + height: 2.7 + l: + rotation: 2 + division: + - 0.352822013768009 + - 0.339777227625577 + l: + type: O + rotation: 3 + r: + type: b1 + rotation: 0 + r: + rotation: 0 + division: + - 0.58811752341049 + - 0.471727031953466 + l: + type: C + rotation: 0 + r: + rotation: 1 + division: + - 0.357193618767318 + - 0.355822834550231 + l: + type: t1 + rotation: 0 + r: + type: O + rotation: 0 diff --git a/examples/programme-house/c7fab3037ca6ff7a02a42553570b2aaa.dom b/examples/programme-house/c7fab3037ca6ff7a02a42553570b2aaa.dom new file mode 100644 index 0000000..368cae9 --- /dev/null +++ b/examples/programme-house/c7fab3037ca6ff7a02a42553570b2aaa.dom @@ -0,0 +1,121 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 0 +division: + - 0.61618518940465 + - 0.609992682895765 +height: 2.7 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + rotation: 1 + division: + - 0.676461703263764 + - 0.654366548273542 + l: + rotation: 2 + division: + - 0.508397897842548 + - 0.505940471779192 + l: + type: t3 + rotation: 0 + r: + type: O + rotation: 0 + r: + rotation: 3 + division: + - 0.51871277076932 + - 0.518712770769321 + l: + type: t2 + rotation: 0 + r: + type: C + rotation: 3 +r: + rotation: 3 + division: + - 0.483509130257645 + - 0.471727031953465 + l: + type: C + rotation: 0 + r: + type: O + rotation: 0 +above: + rotation: 0 + division: + - 0.61618518940465 + - 0.609992682895765 + height: 3.15 + l: + type: l1 + rotation: 0 + r: + rotation: 3 + division: + - 0.483509130257645 + - 0.471727031953465 + l: + type: C + rotation: 0 + r: + type: b2 + rotation: 1 + above: + rotation: 0 + division: + - 0.61618518940465 + - 0.609992682895765 + height: 2.7 + l: + rotation: 2 + division: + - 0.352822013768009 + - 0.339777227625576 + l: + type: O + rotation: 0 + r: + type: b1 + rotation: 0 + r: + rotation: 0 + division: + - 0.58811752341049 + - 0.471727031953465 + l: + type: C + rotation: 0 + r: + rotation: 1 + division: + - 0.396223957498812 + - 0.394667636173584 + l: + type: t1 + rotation: 0 + r: + type: O + rotation: 0 diff --git a/examples/programme-house/c848f73cf1a847b8cb6583dbde94c633.dom b/examples/programme-house/c848f73cf1a847b8cb6583dbde94c633.dom new file mode 100644 index 0000000..8ff963b --- /dev/null +++ b/examples/programme-house/c848f73cf1a847b8cb6583dbde94c633.dom @@ -0,0 +1,121 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 0 +division: + - 0.61618518940465 + - 0.609992682895765 +height: 2.7 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + rotation: 1 + division: + - 0.676461703263764 + - 0.654366548273542 + l: + rotation: 2 + division: + - 0.508397897842548 + - 0.505940471779192 + l: + type: t3 + rotation: 0 + r: + type: O + rotation: 0 + r: + rotation: 3 + division: + - 0.51871277076932 + - 0.518712770769321 + l: + type: t2 + rotation: 0 + r: + type: C + rotation: 3 +r: + rotation: 3 + division: + - 0.471317272202465 + - 0.459306035998503 + l: + type: C + rotation: 0 + r: + type: O + rotation: 0 +above: + rotation: 1 + division: + - 0.61618518940465 + - 0.673783868504504 + height: 3 + l: + type: l1 + rotation: 0 + r: + rotation: 2 + division: + - 0.471317272202465 + - 0.459306035998503 + l: + type: C + rotation: 0 + r: + type: b2 + rotation: 1 + above: + rotation: 0 + division: + - 0.61618518940465 + - 0.673783868504504 + height: 2.7 + l: + rotation: 2 + division: + - 0.352822013768009 + - 0.339777227625577 + l: + type: O + rotation: 3 + r: + type: b1 + rotation: 0 + r: + rotation: 0 + division: + - 0.58811752341049 + - 0.471727031953466 + l: + type: C + rotation: 0 + r: + rotation: 1 + division: + - 0.357193618767318 + - 0.355822834550231 + l: + type: t1 + rotation: 0 + r: + type: O + rotation: 0 diff --git a/examples/programme-house/c964435454c459f86c3ed9a5a7621132.dom b/examples/programme-house/c964435454c459f86c3ed9a5a7621132.dom new file mode 100644 index 0000000..788ce70 --- /dev/null +++ b/examples/programme-house/c964435454c459f86c3ed9a5a7621132.dom @@ -0,0 +1,113 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 3 +division: + - 0.653290657599936 + - 0.656940646962154 +height: 2.7 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + type: l1 + rotation: 0 +r: + rotation: 1 + division: + - 0.525120341518669 + - 0.534089784809702 + l: + type: O + rotation: 0 + r: + type: C + rotation: 0 +above: + rotation: 0 + division: + - 0.5 + - 0.656940646962154 + height: 2.7 + l: + rotation: 1 + division: + - 0.608994937808456 + - 0.592569097086063 + l: + rotation: 3 + division: + - 0.622920995349922 + - 0.633844824787538 + l: + rotation: 2 + division: + - 0.484606288629118 + - 0.490763729305943 + l: + type: t1 + rotation: 0 + r: + type: t2 + rotation: 0 + r: + type: t3 + rotation: 0 + r: + rotation: 1 + division: + - 0.405196602110754 + - 0.412270809291629 + l: + type: C + rotation: 0 + r: + type: C + rotation: 0 + r: + rotation: 2 + division: + - 0.525120341518669 + - 0.534089784809702 + l: + type: b1 + rotation: 0 + r: + type: C + rotation: 0 + above: + rotation: 0 + division: + - 0.5 + - 0.656940646962154 + height: 2.7 + l: + type: O + rotation: 2 + r: + rotation: 2 + division: + - 0.49354165206883 + - 0.534089784809702 + l: + type: b2 + rotation: 1 + r: + type: C + rotation: 0 diff --git a/examples/programme-house/ca9e80c5c1502f1050eaa548978dbb2d.dom b/examples/programme-house/ca9e80c5c1502f1050eaa548978dbb2d.dom new file mode 100644 index 0000000..5d02705 --- /dev/null +++ b/examples/programme-house/ca9e80c5c1502f1050eaa548978dbb2d.dom @@ -0,0 +1,93 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 0 +division: + - 0.608690953412288 + - 0.609106078338419 +height: 2.7 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + rotation: 3 + division: + - 0.669240683978634 + - 0.676704122499507 + l: + type: b1 + rotation: 0 + r: + type: C + rotation: 1 +r: + rotation: 1 + division: + - 0.466466872260481 + - 0.457867648650832 + l: + rotation: 2 + division: + - 0.646473577411602 + - 0.646473577411603 + l: + type: C + rotation: 1 + r: + type: t3 + rotation: 0 + r: + type: b2 + rotation: 0 +above: + rotation: 3 + division: + - 0.809861395263165 + - 0.612810467029941 + height: 2.85 + l: + rotation: 0 + division: + - 0.669240683978634 + - 0.659739351024511 + l: + rotation: 3 + division: + - 0.623052919114125 + - 0.606640203380403 + l: + type: O + rotation: 0 + r: + rotation: 1 + division: + - 0.463302407069885 + - 0.464802555932959 + l: + type: t2 + rotation: 0 + r: + type: t1 + rotation: 0 + r: + type: C + rotation: 1 + r: + type: l1 + rotation: 0 diff --git a/examples/programme-house/candidate-001.dom b/examples/programme-house/candidate-001.dom new file mode 100644 index 0000000..75c2a82 --- /dev/null +++ b/examples/programme-house/candidate-001.dom @@ -0,0 +1,145 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 3 +division: + - 0.653290657599936 + - 0.656940646962154 +height: 2.7 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + type: l1 + rotation: 0 +r: + rotation: 1 + division: + - 0.525120341518669 + - 0.534089784809702 + l: + type: O + rotation: 0 + r: + type: C + rotation: 0 +above: + rotation: 0 + division: + - 0.5 + - 0.656940646962154 + height: 2.7 + l: + rotation: 1 + division: + - 0.608994937808456 + - 0.592569097086063 + l: + rotation: 3 + division: + - 0.622920995349922 + - 0.633844824787538 + l: + rotation: 2 + division: + - 0.484606288629118 + - 0.490763729305943 + l: + type: C + rotation: 0 + r: + type: t2 + rotation: 0 + r: + type: t3 + rotation: 0 + r: + rotation: 1 + division: + - 0.405196602110754 + - 0.412270809291629 + l: + type: t1 + rotation: 0 + r: + type: C + rotation: 0 + r: + rotation: 2 + division: + - 0.525120341518669 + - 0.534089784809702 + l: + type: b1 + rotation: 0 + r: + type: C + rotation: 0 + above: + rotation: 0 + division: + - 0.5 + - 0.656940646962154 + height: 2.7 + l: + rotation: 2 + division: + - 0.5 + - 0.5 + l: + rotation: 0 + division: + - 0.5 + - 0.5 + l: + rotation: 0 + division: + - 0.5 + - 0.5 + l: + type: O + rotation: 0 + r: + type: O + rotation: 0 + r: + type: O + rotation: 0 + r: + rotation: 0 + division: + - 0.5 + - 0.5 + l: + type: O + rotation: 0 + r: + type: O + rotation: 0 + r: + rotation: 2 + division: + - 0.49354165206883 + - 0.534089784809702 + l: + type: b2 + rotation: 1 + r: + type: C + rotation: 0 diff --git a/examples/programme-house/candidate-002.dom b/examples/programme-house/candidate-002.dom new file mode 100644 index 0000000..8926efb --- /dev/null +++ b/examples/programme-house/candidate-002.dom @@ -0,0 +1,145 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 3 +division: + - 0.653290657599936 + - 0.656940646962154 +height: 2.7 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + type: l1 + rotation: 0 +r: + rotation: 1 + division: + - 0.525120341518669 + - 0.534089784809702 + l: + type: O + rotation: 0 + r: + type: C + rotation: 0 +above: + rotation: 0 + division: + - 0.5 + - 0.656940646962154 + height: 2.7 + l: + rotation: 1 + division: + - 0.608994937808456 + - 0.592569097086063 + l: + rotation: 3 + division: + - 0.622920995349922 + - 0.633844824787538 + l: + rotation: 2 + division: + - 0.484606288629118 + - 0.490763729305943 + l: + type: C + rotation: 0 + r: + type: t2 + rotation: 0 + r: + type: t3 + rotation: 0 + r: + rotation: 1 + division: + - 0.470089159293927 + - 0.476988126742387 + l: + type: t1 + rotation: 0 + r: + type: C + rotation: 0 + r: + rotation: 2 + division: + - 0.525120341518669 + - 0.534089784809702 + l: + type: b1 + rotation: 0 + r: + type: C + rotation: 0 + above: + rotation: 0 + division: + - 0.5 + - 0.656940646962154 + height: 2.7 + l: + rotation: 2 + division: + - 0.5 + - 0.5 + l: + rotation: 0 + division: + - 0.5 + - 0.5 + l: + rotation: 0 + division: + - 0.5 + - 0.5 + l: + type: O + rotation: 0 + r: + type: O + rotation: 0 + r: + type: O + rotation: 0 + r: + rotation: 0 + division: + - 0.5 + - 0.5 + l: + type: O + rotation: 0 + r: + type: O + rotation: 0 + r: + rotation: 2 + division: + - 0.49354165206883 + - 0.534089784809702 + l: + type: b2 + rotation: 1 + r: + type: C + rotation: 0 diff --git a/examples/programme-house/cb93a2d2de7f5d37af450a8ce7b681b1.dom b/examples/programme-house/cb93a2d2de7f5d37af450a8ce7b681b1.dom new file mode 100644 index 0000000..b85bca4 --- /dev/null +++ b/examples/programme-house/cb93a2d2de7f5d37af450a8ce7b681b1.dom @@ -0,0 +1,93 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 0 +division: + - 0.608690953412288 + - 0.609106078338419 +height: 2.7 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + rotation: 3 + division: + - 0.669240683978634 + - 0.659739351024511 + l: + type: b1 + rotation: 0 + r: + type: C + rotation: 1 +r: + rotation: 1 + division: + - 0.478349793427555 + - 0.469531510539899 + l: + rotation: 2 + division: + - 0.646473577411602 + - 0.646473577411602 + l: + type: C + rotation: 1 + r: + type: t3 + rotation: 0 + r: + type: b2 + rotation: 0 +above: + rotation: 3 + division: + - 0.809861395263165 + - 0.612810467029941 + height: 2.7 + l: + rotation: 0 + division: + - 0.669240683978634 + - 0.659739351024511 + l: + rotation: 3 + division: + - 0.623052919114125 + - 0.606640203380404 + l: + type: O + rotation: 3 + r: + rotation: 1 + division: + - 0.492317959661464 + - 0.493737005779146 + l: + type: t2 + rotation: 0 + r: + type: t1 + rotation: 0 + r: + type: C + rotation: 1 + r: + type: l1 + rotation: 0 diff --git a/examples/programme-house/cd39357b1ba79aec4943411cdca51668.dom b/examples/programme-house/cd39357b1ba79aec4943411cdca51668.dom new file mode 100644 index 0000000..7945148 --- /dev/null +++ b/examples/programme-house/cd39357b1ba79aec4943411cdca51668.dom @@ -0,0 +1,97 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 3 +division: + - 0.378863235215717 + - 0.352107342964516 +height: 3.6 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + rotation: 3 + division: + - 0.272046320711251 + - 0.273135719824572 + l: + type: t3 + rotation: 0 + r: + type: C + rotation: 0 +r: + type: O + rotation: 3 +above: + rotation: 2 + division: + - 0.266815892313844 + - 0.352107342964516 + height: 3.6 + l: + rotation: 0 + division: + - 0.493276493743343 + - 0.273135719824571 + l: + type: t2 + rotation: 3 + r: + rotation: 3 + division: + - 0.43648440957823 + - 0.438889102194046 + l: + type: C + rotation: 0 + r: + type: b2 + rotation: 0 + r: + type: l1 + rotation: 0 + above: + rotation: 0 + division: + - 0.377536726416306 + - 0.352107342964516 + height: 2.7 + l: + type: O + rotation: 0 + r: + rotation: 1 + division: + - 0.291520902452743 + - 0.293447447950506 + l: + rotation: 3 + division: + - 0.449571715787478 + - 0.450335315550294 + l: + type: C + rotation: 3 + r: + type: t1 + rotation: 0 + r: + type: b1 + rotation: 0 diff --git a/examples/programme-house/cf0b8a77e8b2325f92a7e7d150184a55.dom b/examples/programme-house/cf0b8a77e8b2325f92a7e7d150184a55.dom new file mode 100644 index 0000000..5305a3b --- /dev/null +++ b/examples/programme-house/cf0b8a77e8b2325f92a7e7d150184a55.dom @@ -0,0 +1,85 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 0 +division: + - 0.578543227251483 + - 0.582980121644112 +height: 2.7 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + type: l1 + rotation: 3 +r: + rotation: 1 + division: + - 0.557652324732633 + - 0.548937275313322 + l: + type: C + rotation: 3 + r: + rotation: 1 + division: + - 0.471840059771973 + - 0.471840059771971 + l: + type: t3 + rotation: 3 + r: + type: t2 + rotation: 0 +above: + rotation: 0 + division: + - 0.392460883830656 + - 0.579270520642693 + height: 2.7 + l: + rotation: 0 + division: + - 0.440558760302351 + - 0.426954119829303 + l: + type: O + rotation: 1 + r: + type: b2 + rotation: 3 + r: + rotation: 2 + division: + - 0.50761281882239 + - 0.498909221226122 + l: + type: C + rotation: 3 + r: + rotation: 1 + division: + - 0.471840059771973 + - 0.475220839533421 + l: + type: b1 + rotation: 3 + r: + type: t1 + rotation: 1 diff --git a/examples/programme-house/de9468f607f5d0a88cc554ad1776b537.dom b/examples/programme-house/de9468f607f5d0a88cc554ad1776b537.dom new file mode 100644 index 0000000..b42d184 --- /dev/null +++ b/examples/programme-house/de9468f607f5d0a88cc554ad1776b537.dom @@ -0,0 +1,105 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 3 +division: + - 0.681796364796382 + - 0.666507842783208 +height: 2.7 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + rotation: 1 + division: + - 0.385154624230216 + - 0.387037179575097 + l: + rotation: 1 + division: + - 0.504420563349265 + - 0.49129340676569 + l: + type: t3 + rotation: 0 + r: + type: O + rotation: 0 + r: + type: O + rotation: 2 +r: + rotation: 1 + division: + - 0.5660761955678 + - 0.566318926462522 + l: + type: C + rotation: 0 + r: + type: O + rotation: 0 +above: + rotation: 0 + division: + - 0.484437318510146 + - 0.666507842783208 + height: 2.7 + l: + rotation: 2 + division: + - 0.385154624230216 + - 0.387037179575097 + l: + type: t2 + rotation: 0 + r: + type: b1 + rotation: 0 + r: + rotation: 3 + division: + - 0.5660761955678 + - 0.566318926462522 + l: + type: C + rotation: 0 + r: + type: t1 + rotation: 0 + above: + rotation: 1 + division: + - 0.265337858323527 + - 0.666507842783208 + height: 2.7 + l: + type: l1 + rotation: 0 + r: + rotation: 3 + division: + - 0.486999816770624 + - 0.566318926462522 + l: + type: C + rotation: 0 + r: + type: b2 + rotation: 0 diff --git a/examples/programme-house/eebf1980a672d9ec11cfc69c029d6796.dom b/examples/programme-house/eebf1980a672d9ec11cfc69c029d6796.dom new file mode 100644 index 0000000..1c1314c --- /dev/null +++ b/examples/programme-house/eebf1980a672d9ec11cfc69c029d6796.dom @@ -0,0 +1,105 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +rotation: 1 +division: + - 0.684109406065675 + - 0.652747284085531 +height: 2.7 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + rotation: 1 + division: + - 0.552667996439813 + - 0.553992277622933 + l: + type: t3 + rotation: 0 + r: + type: O + rotation: 0 +r: + rotation: 3 + division: + - 0.524756062727084 + - 0.525261869779856 + l: + type: O + rotation: 0 + r: + type: C + rotation: 0 +above: + rotation: 2 + division: + - 0.49990203159115 + - 0.652747284085531 + height: 3.45 + l: + type: l1 + rotation: 0 + r: + rotation: 3 + division: + - 0.464829388570383 + - 0.525261869779856 + l: + type: b1 + rotation: 0 + r: + rotation: 3 + division: + - 0.422410539241151 + - 0.421388355648712 + l: + type: C + rotation: 0 + r: + type: t2 + rotation: 0 + above: + rotation: 3 + division: + - 0.684109406065675 + - 0.652747284085531 + height: 2.85 + l: + rotation: 2 + division: + - 0.501690204557081 + - 0.50266044892288 + l: + type: b2 + rotation: 0 + r: + type: O + rotation: 1 + r: + rotation: 2 + division: + - 0.468115978163956 + - 0.525261869779856 + l: + type: O + rotation: 1 + r: + type: C + rotation: 0 diff --git a/examples/programme-house/generated.dom b/examples/programme-house/generated.dom new file mode 100644 index 0000000..f0a24e1 --- /dev/null +++ b/examples/programme-house/generated.dom @@ -0,0 +1,80 @@ +node: +- - 1.67100188077385 + - 11.9169190395339 +- - 8.72124918939699 + - 13.7119442286569 +- - 6.79637028658874 + - 21.3797854212389 +- - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: null + c: null + d: null +rotation: 0 +division: +- 0.48477626972176296 +- 0.48477626972176296 +height: 3.0 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 +l: + rotation: 3 + division: + - 0.4736445268585117 + - 0.4736445268585117 + l: + rotation: 3 + division: + - 0.5508166679097796 + - 0.5508166679097796 + l: + type: O + rotation: 0 + r: + type: t2 + rotation: 0 + r: + type: C + rotation: 0 +r: + type: l1 + rotation: 1 +above: + rotation: 0 + division: + - 0.4869945206673567 + - 0.4869945206673567 + height: 3.0 + l: + rotation: 3 + division: + - 0.4733409870804918 + - 0.4733409870804918 + l: + rotation: 3 + division: + - 0.547000872727425 + - 0.547000872727425 + l: + type: b2 + rotation: 0 + r: + type: t1 + rotation: 1 + r: + type: C + rotation: 0 + r: + rotation: 1 + division: + - 0.19283930420628767 + - 0.19283930420628767 + l: + type: t3 + rotation: 2 + r: + type: b1 + rotation: 0 diff --git a/examples/programme-house/init.dom b/examples/programme-house/init.dom new file mode 100644 index 0000000..e732b02 --- /dev/null +++ b/examples/programme-house/init.dom @@ -0,0 +1,25 @@ +--- +node: + - + - 1.67100188077385 + - 11.9169190395339 + - + - 8.72124918939699 + - 13.7119442286569 + - + - 6.79637028658874 + - 21.3797854212389 + - + - -0.42152047183069 + - 19.9368564494913 +perimeter: + a: private + b: ~ + c: ~ + d: ~ +type: O +rotation: 0 +height: 3 +elevation: 0.0 +wall_inner: 0.08 +wall_outer: 0.25 diff --git a/examples/programme-house/patterns.config b/examples/programme-house/patterns.config new file mode 100644 index 0000000..63d9ddf --- /dev/null +++ b/examples/programme-house/patterns.config @@ -0,0 +1,96 @@ +--- +# Example patterns.config for programme-driven building evolution +# +# This file demonstrates how to define a building programme within +# the standard patterns.config file format. The presence of the +# 'spaces' key automatically triggers programme-driven mode. + +# Building programme: 2-bedroom house with ensuite +spaces: + b1: + name: Master Bedroom + size: + - 16.0 + - 4.0 + width: + - 4.0 + - 1.0 + proportion: + - 1.5 + - 0.5 + adjacency: + - c + t1: + name: Ensuite Bathroom + size: + - 5.0 + - 1.5 + width: + - 2.5 + - 0.5 + adjacency: + - b1 + b2: + name: Second Bedroom + size: + - 12.0 + - 3.0 + width: + - 3.5 + - 0.8 + adjacency: + - c + t2: + name: Guest Bathroom + size: + - 4.0 + - 1.5 + adjacency: + - c + l1: + name: Living/Dining/Kitchen + size: + - 35.0 + - 8.0 + width: + - 4.5 + - 1.0 + proportion: + - 2.0 + - 0.8 + level: 0 + adjacency: + - c + t3: + name: Ground Floor WC + size: + - 3.0 + - 1.0 + adjacency: + - c + level: 0 + +# Building constraints +storey_minimum: 2 +storey_limit: 5 +force_roof_garden: 0 + +# Circulation ratio (penalise excessive corridors) +ratio_circulation: + - 0.00 + - 0.15 + +# Outside space ratio +ratio_outside: + - 0.30 + - 0.15 + +# Staircase requirements +staircase_min: 1 +staircase_max: 1 + +# Other standard parameters can be included +value_inside: 300.0 +value_circulation: 50.0 +value_outside: 100.0 +value_supported: 300.0 diff --git a/tests/test_dom_corpus.py b/tests/test_dom_corpus.py index 56161fe..4f5bd69 100644 --- a/tests/test_dom_corpus.py +++ b/tests/test_dom_corpus.py @@ -12,9 +12,9 @@ import pytest from homemaker import dom, solver -CORPUS = Path("/home/bruno/src/urb/examples/programme-house") +CORPUS = Path(__file__).parent.parent / "examples" / "programme-house" -pytestmark = pytest.mark.skipif(not CORPUS.is_dir(), reason="Urb corpus not available") +pytestmark = pytest.mark.skipif(not CORPUS.is_dir(), reason="Corpus not available") def test_roundtrip_idempotent_and_area_preserving(tmp_path): diff --git a/tests/test_driver.py b/tests/test_driver.py index be1396a..04952b2 100644 --- a/tests/test_driver.py +++ b/tests/test_driver.py @@ -7,11 +7,11 @@ import pytest from homemaker import dom, driver, innerloop, solver -CORPUS = Path("/home/bruno/src/urb/examples/programme-house") +CORPUS = Path(__file__).parent.parent / "examples" / "programme-house" SEED_FILE = CORPUS / "c964435454c459f86c3ed9a5a7621132.dom" INIT_FILE = CORPUS / "init.dom" -pytestmark = pytest.mark.skipif(not CORPUS.is_dir(), reason="Urb corpus not available") +pytestmark = pytest.mark.skipif(not CORPUS.is_dir(), reason="Corpus not available") def test_free_with_keys_aligns_with_free_branches(): diff --git a/tests/test_genome.py b/tests/test_genome.py index 6765ea8..a534c08 100644 --- a/tests/test_genome.py +++ b/tests/test_genome.py @@ -6,9 +6,9 @@ import pytest from homemaker import dom, genome, solver -CORPUS = Path("/home/bruno/src/urb/examples/programme-house") +CORPUS = Path(__file__).parent.parent / "examples" / "programme-house" -pytestmark = pytest.mark.skipif(not CORPUS.is_dir(), reason="Urb corpus not available") +pytestmark = pytest.mark.skipif(not CORPUS.is_dir(), reason="Corpus not available") def corpus(): diff --git a/tests/test_graph.py b/tests/test_graph.py index 4c66f36..2acc2e9 100644 --- a/tests/test_graph.py +++ b/tests/test_graph.py @@ -15,9 +15,9 @@ from homemaker import dom, geometry from homemaker.dom import merge_divided, levels from homemaker.graph import build_graphs -CORPUS = Path("/home/bruno/src/urb/examples/programme-house") +CORPUS = Path(__file__).parent.parent / "examples" / "programme-house" -pytestmark = pytest.mark.skipif(not CORPUS.is_dir(), reason="Urb corpus not available") +pytestmark = pytest.mark.skipif(not CORPUS.is_dir(), reason="Corpus not available") # --------------------------------------------------------------------------- # Perl-oracle edge counts per file (generated from Urb::Quad::Graph, door=1.2) diff --git a/tests/test_operators.py b/tests/test_operators.py index 73795b2..7ff5fd7 100644 --- a/tests/test_operators.py +++ b/tests/test_operators.py @@ -7,12 +7,12 @@ import pytest from homemaker import dom, genome, operators -CORPUS = Path("/home/bruno/src/urb/examples/programme-house") +CORPUS = Path(__file__).parent.parent / "examples" / "programme-house" FILES = ["2f45907abd9accac2a124d311732f749.dom", "candidate-002.dom", "c964435454c459f86c3ed9a5a7621132.dom"] TYPES = ["k1", "l1", "b1", "b2", "t1", "C", "O"] -pytestmark = pytest.mark.skipif(not CORPUS.is_dir(), reason="Urb corpus not available") +pytestmark = pytest.mark.skipif(not CORPUS.is_dir(), reason="Corpus not available") def canonical(root: dom.Node) -> None: