solver: select skyline candidate policy
Make candidate ordering an explicit deterministic policy and benchmark ascending, descending, and exact-width-first choices. Keep ascending as the default because it produces the best measured time to first solution despite best-fit's slightly smaller tree. Retain the benchmark v1 interface and document why randomized and duplicate-work portfolio policies are deferred. Tests: Release and Debug CTest (10 passed each) Refs: #12
This commit was merged in pull request #24.
This commit is contained in:
+12
-8
@@ -12,14 +12,18 @@ ctest --test-dir build --output-on-failure
|
||||
The tests independently check board dimensions, square multiplicities, bounds,
|
||||
overlap, and complete coverage. They cover small unsatisfiable solver inputs, a
|
||||
known order-8 solution, invalid placement diagnostics, and construction of an
|
||||
order-9 solution from the order-8 fixture. The routed order-9 solver test
|
||||
checks that its search counters exactly match order 8. The skyline tests check
|
||||
smallest-width valley selection and deterministic tie-breaking, validate an
|
||||
order-8 result with descending candidates, and independently validate a direct
|
||||
order-9 search with ascending candidates. That direct test is deliberately
|
||||
separate from the public order-9 route, which uses even-predecessor
|
||||
construction. The rendering test also formats the known order-8 solution and
|
||||
checks the resulting grid dimensions and coverage.
|
||||
order-9 solution from the order-8 fixture. The routed best-fit order-9 solver
|
||||
test checks that its search counters exactly match order 8. The skyline tests
|
||||
check smallest-width valley selection and deterministic tie-breaking, validate
|
||||
an order-8 result with descending candidates, and independently validate a
|
||||
direct order-9 search with ascending candidates. An
|
||||
exhaustive infeasible order also checks that all three policies visit the same
|
||||
search space. The direct order-9 test is deliberately separate from the
|
||||
public order-9 route, which uses even-predecessor construction. Orders 10 and
|
||||
11 are not routine tests because both public routes require the same long
|
||||
direct order-10 search; the route-boundary test still checks that order 11
|
||||
selects odd construction. The rendering test also formats the known order-8
|
||||
solution and checks the resulting grid dimensions and coverage.
|
||||
|
||||
When Python is available, `reference-support` also tests the dependency-free
|
||||
placement JSON validator. If the optional OR-Tools package is present, it
|
||||
|
||||
Reference in New Issue
Block a user