homemaker-layout/pyproject.toml
Bruno Postle cf634ae949 homemaker-py-2g7.5: CP-SAT exact room-code assignment (seeder + reassign op)
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
2026-08-04 09:19:36 +01:00

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