88 lines
7.0 KiB
Markdown
88 lines
7.0 KiB
Markdown
# PREREG — похожесть в двух ещё незанятых местах: СОСТАВ ТОЧЕК и НАПРАВЛЕНИЕ
|
||
|
||
Составлено до реализации. Основание — `FINDINGS_slope_gate.md`: решает **валюта и место** чтения
|
||
похожести. Одна и та же идея «отказывайся до шага» дала 4449 вызовов на APS при отказе по прогрессу
|
||
скобки и 2848 при отказе по форме модели — разница 1601 вызов. Карта мест решения показала два
|
||
незанятых:
|
||
|
||
| место | чем решается сейчас |
|
||
|---|---|
|
||
| **состав точек для модели** | **давностью**: `x_prev2 ← x_prev ← x ← x_new`, всегда три последних |
|
||
| **направление** (какой конец «дальний») | **расстоянием**: `far = B if \|B−x\| ≥ \|A−x\| else A` |
|
||
|
||
---
|
||
|
||
## 1. Режим A — состав точек по ФОРМЕ (`points="shape"`)
|
||
|
||
Оценка наклона строится на тройке точек. Сейчас тройка берётся по давности, даже если она
|
||
плохо обусловлена. Brent, TOMS 748 и Chandrupatla все **управляют составом точек** — это часть их
|
||
конструкции, а у нас этого места нет вовсе.
|
||
|
||
**Признак — та же валюта, что уже сработала: форма конфигурации, безразмерно.** Для тройки
|
||
`(x, u, v)` считаются два отношения в духе Chandrupatla:
|
||
|
||
ξ = (x − u)/(v − u) — отношение ПОЗИЦИЙ
|
||
φ = (f(x) − f(u))/(f(v) − f(u)) — отношение ЗНАЧЕНИЙ
|
||
|
||
Для линейной `f` выполняется `φ = ξ` точно, поэтому `|φ − ξ|` — безразмерная мера непохожести
|
||
конфигурации на линейную. Правило: **argmin |φ − ξ|** по объявленному списку кандидатов.
|
||
|
||
**Список кандидатов объявляется здесь и не расширяется по результату:**
|
||
|
||
T1 = (x, x_prev, x_prev2) — нынешнее правило давности
|
||
T2 = (x, x_prev, far) — свежая точка плюс дальний конец скобки
|
||
T3 = (x, A, B) — оба конца доказанной скобки
|
||
|
||
Вырожденные (совпадающие абсциссы или значения) выбрасываются. Порога нет: это **argmin по
|
||
имеющимся вариантам**, а не сравнение с числом. Правило корпуса «select, never weight» соблюдено —
|
||
тройка **выбирается**, оценки не взвешиваются.
|
||
|
||
## 2. Режим B — направление по НЕПОХОЖЕСТИ (`direction="dissimilar"`)
|
||
|
||
Сейчас «дальний» конец — геометрически более удалённый. Похожесть даёт другой ответ: дальним считать
|
||
конец, чьё `|f|` **больше**, то есть менее похожее на ноль. Ни константы, ни порога — сравнение двух
|
||
имеющихся величин.
|
||
|
||
**Режимы независимы и мерятся отдельно** (правило «менять одно за раз»); комбинация A+B мерится
|
||
третьим прогоном только если оба по отдельности не ухудшили APS.
|
||
|
||
## 3. Цели
|
||
|
||
Точка отсчёта — уже достигнутое гейтом на наклоне (`slope.ratio.derived3.project`):
|
||
APS **2848**, CHA **3074**, два набора **5922**, 193/199, `over2x = 0`.
|
||
|
||
| величина | цель |
|
||
|---|---|
|
||
| APS-154 | **≤ 2848** (не хуже текущего; идеально — вернуть 2806) |
|
||
| CHA-45 | **≤ 2857** (недобранная цель ITP; сейчас 2903 по-наборно) |
|
||
| два набора | **< 5922** |
|
||
| решено | ≥ 193/199 |
|
||
| гарантия `2⌈log₂(w/xtol)⌉+3` | `over2x = 0` |
|
||
|
||
## 4. Предсказания и фальсификаторы
|
||
|
||
| # | Предсказание | ФАЛЬСИФИКАТОР → вывод |
|
||
|---|---|---|
|
||
| **A1** | режим A не ухудшает APS (≤2848) и улучшает CHA (<2903) | ухудшает APS → состав точек не то место, режим отвергается |
|
||
| **A2** | выбор тройки **не инертен**: отличается от давностной в ≥5 % шагов | <1 % → режим ничего не меняет, замер НЕ является свидетельством ни за, ни против |
|
||
| **B1** | режим B не ухудшает APS (≤2848) | ухудшает → направление по непохожести отвергается |
|
||
| **B2** | выбор конца отличается от геометрического в ≥5 % шагов | <1 % → инертен, замер пуст |
|
||
| **C** | гарантия цела в обоих режимах | нарушена → немедленное закрытие режима |
|
||
|
||
**Правило остановки:** APS ухудшился или гарантия нарушена ⇒ режим не принимается. Инертность (A2/B2)
|
||
⇒ результат не толкуется как подтверждение: это отсутствие эксперимента, а не его исход.
|
||
|
||
## 5. Гейты реализации (тесты ДО рейтинга)
|
||
|
||
| # | Условие | Проверка |
|
||
|---|---|---|
|
||
| **P1** | `points="recent"` и `direction="distance"` дают побитово прежний результат | равенство кортежей на наборе задач и сторожей |
|
||
| **P2** | в обоих признаках нет констант | греп по коду (без комментариев): только `0.0`, `0.5`, `1.0` |
|
||
| **P3** | счётчики `stats['triple_changed']`, `stats['dir_changed']` считают неинертность | тест на обоих |
|
||
| **P4** | вырожденные тройки отбрасываются, а не дают деление на ноль | тест на совпадающих абсциссах и значениях |
|
||
| **P5** | ни один режим не добавляет вызовов `f` | число вызовов ≤ число шагов + 2 |
|
||
|
||
**Дисциплина:** аудит после правки и до запуска; смоук ×2 локально; свипы в свои файлы
|
||
(`sweep_points.json`, `sweep_direction.json`), `sweep_full.json` не трогать; числа только с Linux;
|
||
замороженные копии; числа показываются немедленно.
|