solver: prune unplaceable large squares

A skyline may retain enough total empty area while no longer containing a box for its largest remaining square. Scan for the required consecutive low columns and reject such monotonic dead states.

Keep each pruning combination independently measurable and record the small public-path gain, the direct-order-9 regression, and the rejected periodic schedule.

Tests: Debug CTest (13 passed)

Tests: ASan+UBSan CTest (13 passed)

Refs: #15
This commit was merged in pull request #27.
This commit is contained in:
Codex instance
2026-07-31 08:25:36 +01:00
parent e27427d231
commit 220cec06a9
6 changed files with 264 additions and 43 deletions
+10 -4
View File
@@ -238,10 +238,16 @@ def main():
action="store_true",
help="disable unique-unit-square D4 symmetry breaking",
)
parser.add_argument(
"--pruning",
choices=("all", "valley-capacity", "large-square", "none"),
default="all",
help="select independently measurable pruning rules",
)
parser.add_argument(
"--no-pruning",
action="store_true",
help="disable valley-capacity pruning",
help="disable all pruning (compatibility alias for --pruning none)",
)
parser.add_argument(
"--measure-overhead",
@@ -275,7 +281,7 @@ def main():
args.search_policy,
"direct" if args.direct_search else "public",
"none" if args.no_symmetry else "d4",
"none" if args.no_pruning else "valley-capacity",
"none" if args.no_pruning else args.pruning,
args.timeout,
)
for trial in range(args.repetitions):
@@ -288,7 +294,7 @@ def main():
args.search_policy,
"direct" if args.direct_search else "public",
"none" if args.no_symmetry else "d4",
"none" if args.no_pruning else "valley-capacity",
"none" if args.no_pruning else args.pruning,
args.timeout,
)
)
@@ -318,7 +324,7 @@ def main():
"candidate_order": args.search_policy,
"search_route": "direct" if args.direct_search else "public",
"symmetry_breaking": "none" if args.no_symmetry else "d4",
"pruning": "none" if args.no_pruning else "valley-capacity",
"pruning": "none" if args.no_pruning else args.pruning,
"stdout": "captured; rendered grid suppressed by probe",
},
"cases": cases,