7.0 KiB
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;
замороженные копии; числа показываются немедленно.