Adds src/homemaker_layout/cpsat.py (OR-Tools CP-SAT) as an exact alternative to operators._assign_adjacency_aware's greedy/beam room-code placement, wired in as assign_solver="greedy"|"cpsat" (EXPERIMENTAL, default "greedy", byte-identical to before) through constructive_topology/lift_base_to_storeys/ driver.search, plus a new operators.mutate_reassign in-search repair operator (driver.search's enable_reassign=False default, mirrors enable_ruin_recreate). Both found and fixed a resize-fragility bug (a second CP-SAT pass against settled geometry, operators._cpsat_relabel_settled) and a CP-SAT symmetry-blowup stall (explicit interchangeable-code grouping). Seeder-level A/B on harbor-house is a solid, low-noise positive (~13% fewer real fitness-scored secondary-adjacency fails, 10 seeds). Full driver.search A/B is only pilot-scale (budget=3000 vs the bead's own 20k target) and inconclusive -- both flags stay default-off pending a larger-N confirmation. Full writeup: DESIGN.md §37.7. Bead left in_progress (own acceptance criteria not fully met); homemaker-py-5bv tracks the deferred post-collapse repair item. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LSwQwpEaHFBkeVSDDWd75S
36 lines
857 B
TOML
36 lines
857 B
TOML
[project]
|
|
name = "homemaker-layout"
|
|
version = "0.0.1"
|
|
description = "Programme-driven building layout search over slicing trees (Python successor to Urb)"
|
|
requires-python = ">=3.11"
|
|
dependencies = [
|
|
"pyyaml>=6.0",
|
|
"numpy>=1.26",
|
|
"scipy>=1.11",
|
|
"shapely>=2.0",
|
|
"networkx>=3.0",
|
|
"cma>=3.0",
|
|
"ortools>=9.10",
|
|
]
|
|
|
|
[project.scripts]
|
|
homemaker-evolve = "homemaker_layout.evolve:main"
|
|
homemaker-fitness = "homemaker_layout.fitness_cmd:main"
|
|
homemaker-collapse = "homemaker_layout.collapse_cmd:main"
|
|
homemaker-compose = "homemaker_layout.compose_cmd:main"
|
|
|
|
[project.optional-dependencies]
|
|
dev = ["pytest>=8.0", "ruff>=0.5"]
|
|
|
|
[build-system]
|
|
requires = ["setuptools>=68"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[tool.setuptools.packages.find]
|
|
where = ["src"]
|
|
|
|
[tool.pytest.ini_options]
|
|
pythonpath = ["src"]
|
|
|
|
[tool.ruff]
|
|
line-length = 100
|