72 lines
7.0 KiB
Markdown
72 lines
7.0 KiB
Markdown
# PREREG — гейт на УСТОЙЧИВОСТИ НАКЛОНА (форма, а не прогресс)
|
||
|
||
Составлено до реализации. Основание — два измерения этой линии:
|
||
|
||
1. `FINDINGS_prestep_gate.md`: гейт по **прогрессу скобки** обваливает ремонты (77.5 % → 15.9 %) и
|
||
впервые берёт цель ITP на CHA (**2851 ≤ 2857**), но APS дорожает 2806 → **4449**, потому что
|
||
прогресс скобки — **неверная валюта отказа**: секущий шаг обрушивает ошибку, почти не двигая
|
||
скобку (в проекте это уже измерено: **150 против 86**).
|
||
2. `FINDINGS_logarithmic.md` §3: Chandrupatla отказывает не по прогрессу, а по **форме конфигурации**
|
||
(`ξ`, `φ` — безразмерные отношения; полоса есть окрестность линейного случая), и его отказ стоит
|
||
**ноль** вызовов.
|
||
|
||
**Гипотеза:** нужный признак отказа — не «сколько обещает шаг», а «установилась ли модель, которой
|
||
шаг доверяет». Наш шаг доверяет **локальному наклону**, значит вопрос доверия — **устойчивость
|
||
наклона**.
|
||
|
||
---
|
||
|
||
## 1. Признак, выведенный для НАШЕГО шага (и без единой константы)
|
||
|
||
Метод оценивает наклон на каждом шаге (`derived` — по двум последним точкам, `derived3` — по трём).
|
||
Две последовательные оценки `slope_prev` и `slope` дают безразмерное сравнение. Объявленный признак
|
||
отказа — **несогласие знака**:
|
||
|
||
> если `slope_prev` и `slope` оба не нули и **их знаки различны**, локальная модель не установилась
|
||
> (функция локально даже не монотонна в одном направлении) ⇒ шаг заменяется делением пополам.
|
||
|
||
Почему это беспараметрично: сравнивается **знак**, а не величина; порога нет, множителя нет,
|
||
сравнения с выбранным числом нет. Почему это форма, а не прогресс: признак читается из конфигурации
|
||
данных (две оценки наклона), а не из обещанной длины шага.
|
||
|
||
**Почему ожидается инертность на каноническом наборе** (то, чего не хватило прошлой попытке): у
|
||
простого корня гладкой функции знак наклона устойчив, значит гейт молчит и APS не дорожает. Срабатывать
|
||
он должен в плоских областях широких скобок, где оценки наклона мелкие и болтаются.
|
||
|
||
**Чего НЕ делаем:** не вводим порог на отношение величин наклонов (`|s1|/|s2| < k` — это константа
|
||
`k`); не переносим полосу `1−√(1−ξ) < φ < √ξ` (выведена для обратной квадратичной интерполяции).
|
||
|
||
**Режим:** `prestep="slope"`; `"none"` остаётся по умолчанию и побитово прежним; `"progress"` остаётся
|
||
в коде как **измеренный отрицательный результат**, помеченный в докстринге.
|
||
|
||
## 2. Предсказания и фальсификаторы
|
||
|
||
| # | Предсказание | ФАЛЬСИФИКАТОР → вывод |
|
||
|---|---|---|
|
||
| **S1** | APS-154 **не дорожает**: по-наборный лучший ≤ **2806** | >2806 → шестая попытка тем же трейдом; признак «форма» тоже не спасает, линия закрывается |
|
||
| **S2** | CHA-45 дешевеет против x-пространства: по-наборный лучший < **4516** | не дешевеет → гейт инертен всюду, гипотеза о наклоне неверна |
|
||
| **S3** | доля ремонтов сторожем падает против 77.5 % | не падает → гейт не бьёт в механизм |
|
||
| **S4** | гарантия `2⌈log₂(w/xtol)⌉+3` цела: `over2x = 0` | нарушена → закрытие немедленно |
|
||
| **S5** | качество пробы на CHA растёт против 1.422 | не растёт → отказ не улучшает пробу, только переставляет расходы |
|
||
|
||
**Правило остановки:** S1 или S4 ложны ⇒ режим не принимается. S1 верна и S2 верна ⇒ **это первый
|
||
режим линии, который берёт широкие скобки, не продавая узкие**, и тогда следующий шаг — свип по всей
|
||
сетке и проверка, попадает ли лучшая конфигурация в цель <6026 на двух наборах.
|
||
|
||
## 3. Протокол и гейты реализации
|
||
|
||
Протокол статьи: 154 APS + 45 CHA, цена — вызовы `f`, провал = полный бюджет, граница `2×` на каждом
|
||
решённом прогоне, конфигурация фиксируется выводом до рейтинга, числа только с **Linux**, свип пишется
|
||
в свой `sweep_slope.json`.
|
||
|
||
| # | Условие реализации | Проверка тестом |
|
||
|---|---|---|
|
||
| **T1** | `prestep="none"` побитово как раньше | равенство кортежей возврата на наборе задач и сторожей |
|
||
| **T2** | в гейте нет ни одной константы | греп по коду гейта (без комментариев): допустимы только `0.0` и `0.5` |
|
||
| **T3** | гейт инертен там, где знак наклона устойчив | на гладкой монотонной задаче число вызовов совпадает с `prestep="none"` |
|
||
| **T4** | гейт срабатывает там, где знак наклона меняется | на задаче с немонотонностью `stats['pre_refused'] ≥ 1` |
|
||
| **T5** | отказ не добавляет вызова | `pre_refused ≤ nfev − 2` |
|
||
|
||
**Дисциплина:** аудит после правки и до запуска; смоук ×2 локально; свип на сервере с замороженной
|
||
копией; числа немедленно.
|