Repository navigation
Record candidate: T16 owner map from class-level re-solve and guided realisation on the selected supplier (κ=0.001673614205725695), with a proved packing ceiling - #2169
Conversation
Registered research package research/complex-t16-two-stage-cycles: a conditional T16 owner map on the unchanged selected PR1094 supplier, built on open PR1407 (head d8640f5, pinned by content). Two ejection cycle stages (16 whole-helper placements) turn idle residuals 3+3+3 into 8+1. Unchanged PR1087 strict replay passes with controls 69/12/6/15; seed67 audit, pinned-engine pricing and the PR1069 sweep agree on kappa 0.001672684510394236 (conservative 0.001672684507542306), +3.69e-9 over PR1407. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Scope note relating this PR to open #2081 (T16 invoice-boundary audit):
|
…ng-ceiling fraction Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ion cycles, min-diff to 70 rows vs selected Standalone against the selected PR1094 map (no PR1407 dependency); unchanged PR1087 strict replay, seed67 audit, pinned pricing and PR1069 sweep all pass. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Updated to κ = 0.001672702955495933, +2.556e-5 relative over the selected record. The map now comes from CP-SAT large-neighbourhood search alternating with ejection cycles, then a min-diff reassignment at the same κ, so it changes only 70 of 69,120 rows relative to the selected PR1094 map (55 relocations, 15 offset-only). The package no longer depends on open PR1407. PR1407 and PR2077 remain credited as the starting point and the idea. The unchanged PR1087 strict replay passes all 11 stages (controls 69/12/6/15), and the seed67 audit (11 controls), pinned pricing and the PR1069 sweep all agree. Both registered package checks pass. The search was stopped while still improving, so a further update may follow. |
… repack, min-diff to 1,435 relocations The T16 owner map now comes from a global class-level repack (CP-SAT pattern/flow model per (capacity, window) class, max-flow realisation) followed by the chain2 + CP-SAT LNS loop. The raw map (61,985 relocations against the selected PR1094 map) was replaced by a class-level min-diff map at the same idle profile: 1,661 changed rows, 1,435 relocated, 226 offset-only. Strict replay passes (11 stages, 69/12/6/15), actual_73column_sigmas 10055. +2.3553e-4 relative over the selected record; 2.709% of the complex endpoint gap. Adds the repack, loop and min-diff scripts to search/; winbound.py/aggbound.py are labelled as uncertified heuristic ceilings. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Update (349e985): κ = 0.001673054161426948, +2.3553e-4 relative over the selected record. On the PR1240 endpoint this is 2.709% of the complex packing gap (the previous version was 0.294%).
|
…n-diff to 1,415 relocations
The T16 owner map now comes from the third version's map continued with a new
CP-SAT LNS neighbourhood (evac: stranded nearly empty cap-48 bins re-packed
exactly together with bins whose windows contain their calls) inside the
chain2/LNS loop (search/loopy.sh), then the class-level min-diff toward the
selected PR1094 map at the same idle profile.
- κ 0.001673341928508063 (conservative 0.001673341925655596), +4.0757e-4
relative over the selected record; 4.688% of the complex endpoint gap.
- Idle profile {1:2355, 2:2, 3:172, 7:3, 16:11, 48:4874} strictly majorizes
the selected one again; check.py asserts the partial-sum comparison and
verify.py requires it. PROOF.md restores the Karamata argument; κ itself
still comes from the exact engines and the strict replay.
- DIFF-vs-selected.json: 1,638 changed rows (1,415 relocated, 223
offset-only); actual_73column_sigmas 10006 read from the native audit.
- mindiff_cls1.py gains a BAN option (class 9's stage-1 pattern was
unrealisable); lns.py gains the evac mode; κ values are compared as Decimal
in lns.py, check.py and verify.py.
- SEARCH.json moves the previous record under third_version.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Update (01b15ae): κ = 0.001673341928508063, +4.0757e-4 relative over the selected record. On the PR1240 endpoint this is 4.688% of the complex packing gap (the previous version was 2.709%).
|
…ve and guided realisation, proved packing ceiling
Fifth version of the T16 owner map on the selected PR1094 supplier.
Idle profile {1:2392, 2:8, 3:107, 4:1, 7:5, 16:1, 48:4880} (still
majorizes the selected one). Min-diff to 2,537 changed rows (2,170
relocations), actual_73column_sigmas 10011, strict replay PASS.
Adds ceiling_bound.py and a PROOF.md section: every legal map has at
most 4,887 empty cap-48 bins and surrogate sum f ln f <= 908,139.013
(exact integer checks, run by verify.py). Bounds the surrogate, not κ.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Update (4452c98): κ = 0.001673614205725695, now with a proved packing ceiling. On the PR1240 endpoint this is +5.7035e-4 relative to the selected record and 6.560% of the complex gap.
|
Contribution
This PR adds
research/complex-t16-two-stage-cycles, a registered researchpackage. It is a conditional T16 owner map on the unchanged selected PR1094
supplier, with no new mechanism, plus a proved packing ceiling for that
supplier.
(0.001672660197076918) and +9.334e-7 over open PR1407
(0.001672680818492982). Over this PR's earlier versions it is +9.297e-7
(first, 0.001672684510394236), +9.113e-7 (second, 0.001672702955495933),
+5.600e-7 (third, 0.001673054161426948) and +2.723e-7, or +1.6271e-4
relative (fourth, 0.001673341928508063).
{1:2276, 3:377, 7:7, 48:4866}(selected) to{1:2392, 2:8, 3:107, 4:1, 7:5, 16:1, 48:4880}. Rank mass 1,041,408 anddeficit 5,120 are unchanged. The new residual vector majorizes the selected
one (equal totals 237,024;
check.pyasserts the partial-sum comparison), soby Karamata's inequality the complex moment strictly decreases for any
strictly concave per-residual weight. The value of κ comes from the pinned
exact engines and the strict replay.
DIFF-vs-selected.jsonchanges 2,537 of 69,120 rows: 2,170 helpers move to another bin and 367 rows
only change their slice offset. Widths, call order, windows and the local and
bit suppliers are unchanged. No open PR is needed.
69/12/6/15.
actual_73column_sigmasis 10011: the strict audit recomputesthis chart count for the realized map and
assemble.pypins it.with the pinned exact engines and the PR1069 sweep agree with the replay.
With the PR1240 local-word ceiling endpoint a_hi = 0.001690054109089, this map
realises 6.560% of the complex endpoint gap (fourth version: 4.688%; third:
2.709%; second: 0.294%; first: 0.167%; PR1407: 0.142%).
It claims no packing optimum and no unconditional theorem. All PR1094
inherited assumptions remain.
Proved packing ceiling
PROOF.md("A proved packing ceiling") andceiling_bound.py(standardlibrary, exact integer arithmetic, run by
verify.py) prove two bounds forevery legal owner map on this supplier. The proof relaxes the problem to
plain bin packing: windows and the family rule are dropped.
7,168, 7,168, 7,168) and 69,120 helpers (widths 4, 5, 7, 8, 9; counts
144 × (56, 32, 30, 122, 240)). Both are derived from the package data.
and each bin weight ⌊7c/9⌋ (6, 12, 24, 37). The helpers in a bin never weigh
more than the bin. The total slack is 587,776 − 406,944 = 180,832 for every
map, and an empty cap-48 bin uses 37 of it. This map has 4,880 empty cap-48
bins; the selected map has 4,866.
Σ f ln fis at most 4,887 · 48 ln 48 + 17 ln 17 =908,139.013. This comes from an exact knapsack over the per-bin slack. A
plain LP dual gives 908,156.14. This map is at 907,271.883.
IP reach the same optimum, so windows do not tighten the bound.
This bounds the surrogate and the number of empty cap-48 bins, not κ. As
an indication only, pricing the bound-attaining idle multiset
{1:2431, 17:1, 48:4887}with the pinned engines gives κ 0.001674088611862992(9.822% of the complex endpoint gap). This replaces the earlier version's
"≈908.1k" heuristic ceiling, which could not be reproduced.
How the map was found
Inside a physical family the bins' windows never overlap. So the family rule
reduces to at most one helper per bin per call, and bins with the same capacity
and the same allowed calls are interchangeable. κ is close to linear in the
surrogate
Σ f ln fover idle fragments, which the search uses as itsobjective; only the exact engines decide acceptance.
cycle/LNS loop (third version), then an evacuation LNS neighbourhood
(fourth version), up to κ 0.001673341928508063.
search/winlp.py). The window model is anIP over (capacity, window) classes: pattern counts, flows of each
(call, width) to each class, time and width balance, and aggregate R4 cuts
for each family group and call. Each step re-solves it warm-started from
the current map. Only a random 12–24-class subset may change, drawn from
the classes that differ from a full-model target. Each step must gain a
minimum surrogate amount and pays a penalty per unit of change.
search/lns2.pymodeguide). The neighbourhoodis the bins holding helpers whose class (call, width) count must drop, plus
the bins whose pattern count must drop. CP-SAT then maximises the surrogate
exactly over it, and a result is kept only if the exact κ rises.
search/gloop.shandsearch/sloop.shloop this. Strict-replayedcheckpoints: 0.001673373170972473, 0.001673393061983855,
0.001673535326871893 and 0.001673614205725695. The search was stopped
while still improving.
raw map relocates 63,109 rows against the selected map. The class-level
min-diff tools (
search/mindiff_cls1.py,mindiff_cls2.py,mindiff_lns.py,mindiff_lns2.py,realize.py) give 63,109 → 2,210 →2,170 relocations, i.e. 2,537 changed rows of which 367 are offset-only.
Two stage-1 class patterns could not be realised, because several helpers of
one width in a bin need distinct calls. The README gives the counting
argument for each. Both were excluded with
BANand stage 1 was re-solvedlocally. The class-level relaxation implies at least 1,548 relocations for
any legal map with this profile (solver-reported). The min-diff stopped at
its two-hour budget, so the shipped map is not proven minimal.
SEARCH.jsonrecords the checkpoints and the commands.lns.py,lns2.py,the loops,
check.pyandverify.pycompare κ asDecimal, because thenative assembler can drop trailing zeros.
Earlier versions of this PR
PR1407's map, a 23-row successor of PR1407, with the ancestry checked by
content.
a min-diff re-assignment to 70 changed rows (55 relocations) against the
selected map; the PR1407 ancestry check was dropped.
the cycle/LNS loop, then a class-level min-diff re-assignment to 1,661
changed rows (1,435 relocations). Its idle profile did not majorize the
selected one, so it relied on the exact engines alone for the sign.
in the same loop, then the class-level min-diff to 1,638 changed rows (1,415
relocations); its profile majorized the selected one again.
This fifth version replaces the map, the diff and the search record, and adds
the proved packing ceiling. PR1407 (pai-scaffolde) remains the starting point
of the search line and the source of the whole-helper semantics and all-input
argument. PR2077 (lydakis) remains the origin of the vacancy-chain idea. Their
four literal moves still do not compose (
search/compose.py).Provenance
scripts/choose_research_task.py. Itwas self-selected as the review-and-compose task: a review of PR1407 and
PR2077, a test of whether they compose, and then a search on the stronger
map.
TASK.jsonrecords it under the closest card,selected-packing, withscope_status: changedand this reason.0fdd7d82. The 287 pinned inputs are listed inINPUTS.jsonandSOURCES.json.semantics and all-input argument.
supplier and map.
Opus 5.5) assistance. No independent human review is claimed.
Reproduce
The full replay takes about 60 s and uses only the standard library. The
search is optional and needs numpy, ortools, scipy and highspy; the README and
SEARCH.jsongive the commands.🤖 Generated with Claude Code