Files
sim-numerics/PREREG_points_and_direction_2026-09-21.md

7.0 KiB
Raw Permalink Blame History

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