61 lines
5.1 KiB
Markdown
61 lines
5.1 KiB
Markdown
# PREREG — проверка двух сильнейших вариантов: абляция и новый корпус
|
||
|
||
Составлено до прогона, ветка `signfix-and-gates`. Валерий: «результат сильный и уже достоин
|
||
статьи»; «давай проверим оба сильнейших варианта».
|
||
|
||
## Зачем
|
||
|
||
Все решения сегодня принимались на тех же 199 задачах (APS 154 + Chandrupatla 45). Предрегистрация
|
||
защищает каждый шаг, но не цепочку: итоговые ячейки отобраны по этим наборам. Нужны (1) абляция
|
||
каждой составляющей и (2) задачи, на которых ничего не разрабатывалось.
|
||
|
||
## Варианты (проекция, tent, трёхточечный масштаб)
|
||
|
||
- **A** = Г2 + `contra+flatanalogmempt+exp+half` (APS 2559, CHA 2047)
|
||
- **B** = `defect+flatanalogmempt+exp`, без Г2 (APS 2531, CHA 1972)
|
||
- справочно: предложенный метод без добавок; соперники — библиотечные Чандрупатла
|
||
(`elementwise.find_root`), Брент (`brentq`), TOMS748.
|
||
|
||
## Часть 1 — новый корпус (`corpus_new.py`, зерно 20260921, закоммичен до прогона)
|
||
|
||
206 задач, не использованных в разработке: C0 — набор SciPy `original` (6); C1–C5 по 40,
|
||
параметры из заранее заданных распределений: C1 гладкий простой корень, C2 трансцендентный простой
|
||
(atan/tanh/expm1/sinh), C3 кратный/плоский корень |x−r|^p, p ~ U(2, 20), C4 экспоненциальный склон,
|
||
C5 почти сокращающиеся члены (как у fun9, параметры случайные). Корень известен по построению.
|
||
Учёт тот же: XTOL 10⁻¹², MAXFEV 200, решено при |x − r| ≤ 10⁻⁶, неудача = 200.
|
||
|
||
Для каждого варианта V ∈ {A, B}:
|
||
|
||
| # | ПРОЙДЕНО, если |
|
||
|---|---|
|
||
| **O1** | сумма вызовов V на корпусе меньше, чем у Чандрупатлы |
|
||
| **O2** | по задачам против Чандрупатлы побед больше, чем поражений, знаковый тест p < 0.05 |
|
||
| **O3** | гарантия: 0 нарушений (≤ 2⌈log₂(w/xtol)⌉ + 4 на решённых); решено не меньше, чем у Чандрупатлы |
|
||
| **O4** | сумма V меньше, чем у предложенного метода без добавок (добавки переносятся) |
|
||
|
||
**Вывод «переносится на новые задачи»** — только при O1, O2, O3 одновременно. Сообщается всё, по
|
||
каждому классу отдельно, против всех трёх соперников. **Никаких изменений метода после этого
|
||
прогона в рамках этой проверки**; корпус и критерии не меняются.
|
||
|
||
Классы C3–C5 близки к тому, на чём мы искали (плоские, экспонента, сокращение); C0–C2 — нейтральны
|
||
и выгодны модели Чандрупатлы. Вывод сообщается и отдельно по C0–C2.
|
||
|
||
## Часть 2 — абляция (APS, CHA и новый корпус)
|
||
|
||
Снимается по одной составляющей, Δ = (без неё) − (с ней), плюс = составляющая заслужена:
|
||
|
||
- A: Г2; `contra`; `half`; `exp`; точка (`flatanalogmempt` → `flatanalogmem`); весь плоский режим
|
||
(снять `flatanalogmempt` и `exp`).
|
||
- B: `defect`; `exp`; точка; весь плоский режим.
|
||
|
||
Составляющая с Δ ≤ 0 на всех трёх наборах **не заслужена** и из предложения убирается.
|
||
|
||
## Дополнение (после двух прогонов, до сервера) — воспроизводимость
|
||
|
||
Задача C0.05 = SciPy `original.05.00` — **случайная ступенчатая функция** (`random()` без зерна,
|
||
значения в общем кэше модуля, разделяемом всеми прогонами процесса). Два локальных прогона без
|
||
зерна разошлись только на ней (на 2–9 вызовов у каждого метода, включая соперников) и дали
|
||
**одинаковые вердикты** (A: O1–O3 ✓; B: O2 ✗). Поправка: перед каждым прогоном кэш очищается, зерно
|
||
20260921 — все методы встречают одну и ту же функцию, прогон воспроизводим. Задача остаётся в корпусе;
|
||
критерии и остальной корпус не меняются.
|