explained, with numbers: Chandrupatla wins the probe by REFUSING its model cheaply, not by trusting it — it accepts the interpolation on only 28% of steps, its gate costs zero evaluations (read from data already in hand) and its refusal branch still halves the bracket; ours repairs 77.5% of evaluations after the fact and drops to 0.92 halvings/eval on fun8/fun9, worse than bisection. In similarity terms: their similarity is a PRE-step GATE on dimensionless ratios (a neighbourhood of the linear configuration), ours is an IN-step SCALE on the residual magnitude — the PLACEMENT of the reading matters more than its form

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
vvs
2026-09-20 23:05:22 +01:00
co-authored by Claude Opus 5
parent 84ff1c796f
commit be10fc0b22
3 changed files with 251 additions and 0 deletions
+48
View File
@@ -88,3 +88,51 @@
Chandrupatla-1997 (2423 против наших 4516) при **нуле** настроечных констант, то есть существующий
алгоритм уже делает то, чего мы добиваемся, и объяснение его преимущества — отдельная задача
(качество пробы, `stage4_why.py`), а не новая шкала шага.
---
## 3. 🟢 ЧЕМ Chandrupatla выигрывает пробу — измерено, и это переводится на язык похожести
Инструмент: `explain_chandrupatla.py` (лог `results_explain_chandrupatla.txt`). Трассируемая копия
опубликованной процедуры; её верность **проверена** — совпадение с оригиналом по числу вызовов и
исходу на всех 45 задачах. Метрика пробы беспараметрическая: **половинок скобки на вызов**
`= log₂(w₀/xtol)/nfev`, деление пополам = 1.0.
| величина (45 задач CHA) | Chandrupatla | наш `ratio.derived3.credit` |
|---|---|---|
| вызовов всего (провал = 200) | **1488** | 2073 |
| **половинок на вызов** | **2.310** | 1.422 |
| модель принята | **28.0 % шагов** | — |
| сторож ремонтировал | — | **77.5 % вызовов** |
Семейства `fun8`/`fun9`: у них 8–15 вызовов при 3–5 половинках, у нас 44–50 вызовов при **0.92** —
то есть **хуже деления пополам**, при 93 % ремонтов.
### Ответ
**Он выигрывает не тем, что больше доверяет модели, а тем, что дешевле от неё отказывается.**
Интерполяция принимается лишь в 28 % шагов; в остальных 72 % он делит пополам. Гейт считается из уже
имеющихся `x1,x2,x3,f1,f2,f3` — **ноль новых вызовов**, а ветвь отказа сама снимает половину скобки.
Наш отказ **платный**: шаг сделан, лёг плохо, сторож ремонтирует, ремонт — это вызов.
### Перевод
| | где читается похожесть | на чём | цена отказа |
|---|---|---|---|
| Chandrupatla | **до** шага, как **ГЕЙТ** | на форме конфигурации: `ξ = (x1−x2)/(x3−x2)`, `φ = (f1−f2)/(f3−f2)` — два отношения, инвариантные к масштабу по `x` и по `f`; полоса `1−√(1−ξ) < φ < √ξ` есть окрестность **линейной** конфигурации (для линейной `f` точно `φ = ξ`, и она внутри полосы) | **0 вызовов** |
| наш метод | **внутри** шага, как **МАСШТАБ** | на величине остатка `\|f\|/σ` | **1 вызов** |
**Следствие, которое дороже самого объяснения:** решает не форма функции похожести, а **её место в
алгоритме**. Похожесть, прочитанная ДО шага на отношениях, стоит ноль и отсекает недостоверную
модель; похожесть, прочитанная ВНУТРИ шага на величине, требует сторожа, и сторож платит. Это
дополняет закон корпуса «рассуждение платит тем больше, чем хуже похожесть»: здесь **расположение
чтения важнее его формы**.
### Что из этого следует как проверяемый шаг (пред-регистрировать до реализации)
Добавить в наш метод **предшаговый гейт на отношениях** — читать похожесть конфигурации к
хорошо обусловленной ДО того, как шаг сделан, и при отказе сразу делить пополам, вместо
масштабированного шага с последующим ремонтом. Новой константы это не вводит: границы полосы у
Чандрупатлы выведены из требования «проба модели не должна выйти за скобку» — того же требования,
которое наш проекционный сторож выполняет, но **после** факта. Цель замера: довести долю ремонтов с
77.5 % к уровню их 72 % отказов **без** роста цены на APS-154.