Valeri's decisions (1) competitors from the library, (2) variant a. (1) Chandrupatla is scipy.optimize.elementwise.find_root, Brent is brentq, no more per-problem best_of. Our Chandrupatla stopped on a bracket twice as wide as every other method (the factor the protocol corrects for ITP); fixed (+0.5*xtol) in baselines.py and in the two copies found by grep (stage16_blend, stage19_modern) and the traced mirror, and pinned: ours == library on every problem. Regenerating sweep_full.json changed exactly three rows - chandrupatla APS 2785->2787, CHA 2423->2441, brent CHA 4099->4115 - and nothing else (diff_sweeps.py: 0 unexpected).
(2) The proposed method is again the scheduled projection (2806/3220/6026), its budget multiplier DECLARED as the one free constant: the canonical total is the same for every multiplier 1.25-4, the wide-bracket one is not. The earned projection is the constant-free variant (3568/3020/6588). What the old tables hid: problem by problem the proposed rule beats Chandrupatla on the canonical set 87/24/42, exact sign test p = 9e-5, while trailing him by 0.7% in total; on the wide-bracket set he is genuinely stronger (26 to 9, p = 0.006). Gap decomposition recomputed with the library: 244 (was 262), 160 of it on the flat families (two thirds), fun1 58 (a quarter, not a third as the abstract said). Also corrected on the way: the 'subsumed by Chandrupatla' pin claimed he is better on the worst single problem - true only with the looser tolerance (84 against the credit rule's 83 once fixed); §8.3 still called zero slack degenerate, which Table 1a refutes; §5.2's Brent figure is our pure-Python implementation and now says so. verify_article.py 286/286, 802 tests pass twice. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -52,8 +52,16 @@ def test_the_guarded_worst_case_is_at_bisection_level(name, rule):
|
||||
|
||||
def test_the_similarity_method_is_subsumed_by_chandrupatla():
|
||||
"""Stated as a test so the paper cannot drift back to claiming otherwise.
|
||||
Chandrupatla is better on total, on the worst case, and on stability,
|
||||
with the same number of constants (none) and the same 193 solved."""
|
||||
Chandrupatla is better on total, with the same number of constants (none)
|
||||
and the same 193 solved.
|
||||
|
||||
CORRECTED 2026-09-21. This test used to assert that he is also better on
|
||||
the worst single problem. That held only while our implementation of his
|
||||
method stopped on a bracket twice as wide as every other method's; with
|
||||
the tolerance corrected (it now matches scipy's elementwise.find_root on
|
||||
all 199 problems) his worst problem costs 84 evaluations against the
|
||||
credit rule's 83. The worst cases are level, to one evaluation, and the
|
||||
test now says exactly that."""
|
||||
from simroot.pure import pure_root
|
||||
XTOL, MAXFEV, ACC = 1e-12, 200, 1e-6
|
||||
ours_t = ours_w = ours_s = 0
|
||||
@@ -79,4 +87,4 @@ def test_the_similarity_method_is_subsumed_by_chandrupatla():
|
||||
cha_w = max(cha_w, n) if ok else cha_w
|
||||
assert cha_s == ours_s == 193
|
||||
assert cha_t < ours_t, (cha_t, ours_t)
|
||||
assert cha_w <= ours_w, (cha_w, ours_w)
|
||||
assert abs(cha_w - ours_w) <= 1, (cha_w, ours_w)
|
||||
|
||||
Reference in New Issue
Block a user