Доки: v3/v4 в хронологии честности, GPU-эволюция, актуальные ограничения
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
24
PLAN.md
24
PLAN.md
@@ -102,7 +102,13 @@ L(x, I)-модель с coenergy-выводом силы — в разделе "
|
||||
CPU-эталоном — расхождение exit_v **0.084%** (tests/test_batch_sweep.py,
|
||||
test_batch_integrator.py). Стиффные конфиги, переполняющие фикс-шаг,
|
||||
честно бракуются (blew_up), а не записываются мусором.
|
||||
- [ ] (опция) дослить cut-логику в ядро (>3.8x); GPU-батч внутрь эволюции.
|
||||
- [x] cut-логика дослита: весь шаг = 2 fused-ядра (одно не влезает в лимит
|
||||
параметров CUDA 4096Б). Оценка 1000 геномов: 98.5с → 6.6с (15x), ~150
|
||||
геномов/с на 1070, сверка с numpy-эталоном 0.001%.
|
||||
- [x] GPU-батч в эволюции: `run_evolution(use_gpu=True)` оценивает всё
|
||||
поколение одним батчем (`evaluate_genomes_gpu`), та же формула фитнеса;
|
||||
полировка (Nelder-Mead) остаётся точной на CPU. Сервис `gausse-evolve`
|
||||
переведён на venv+GPU: 120 поколений × 1000 особей, ~115/с стабильно.
|
||||
|
||||
## Физика: найденные завышения КПД и их исправления (хронология честности)
|
||||
|
||||
@@ -134,6 +140,22 @@ L(x, I)-модель с coenergy-выводом силы — в разделе "
|
||||
слегка отрицательным (трение съело больше слабой катушки) — это честно.
|
||||
Для сравнения на одной и той же эволюции: v1 давал «38%» там, где v2 даёт
|
||||
~8% — столько стоили неучтённые скин и трение.
|
||||
6. **gausse-physics-v3**: эволюция нашла «КПД 82%» → вскрытие генома: тонкий
|
||||
снаряд (⌀4мм) в толстой катушке (⌀29мм) — модель умножала ВСЮ L на
|
||||
(μ_eff−1), как будто железо заполняет всё сечение. Фикс: коэффициент
|
||||
заполнения A_снаряда/A_катушки (iron_fill_factor). Плюс лечение зависаний
|
||||
решателя: tanh-сглаживание сухого трения (разрывный sign(v) дробил шаг
|
||||
бесконечно), событие тока удержания ключа (передемпфированный хвост),
|
||||
полная формула отражения вихрей (ωM)²R₂/(R₂²+(ωL₂)²), гард вырожденных
|
||||
катушек (L/R<100нс). Бенч: 200 геномов 608с → 22с.
|
||||
7. **gausse-physics-v4**: эволюция нашла «30%» через МЕДЛЕННУЮ катушку
|
||||
(600+ витков, ~1мс, 36А — там слабы и Доуэлл, и вихревые, и трение).
|
||||
Неучтённая физика: за импульс поле проникает в сталь на глубину скин-слоя
|
||||
(~доли мм) — внутренность снаряда не намагничивается. Фикс:
|
||||
iron_penetration_fraction = 1−(1−δ/a)² множит fill factor. После v4
|
||||
лучший КПД эволюции — единицы процентов, что соответствует реальным
|
||||
reluctance-пушкам. Урок зафиксирован: подозрительно красивый КПД =
|
||||
вскрывать лучший геном и искать обойдённый канал потерь.
|
||||
|
||||
## Требования пользователя, закрытые после Этапа 8
|
||||
|
||||
|
||||
18
README.md
18
README.md
@@ -16,6 +16,8 @@
|
||||
- **Физика** (`src/gausse/physics/`): RLC-разряд конденсаторной банки через
|
||||
катушку с ферромагнитным снарядом; насыщение железа через единое
|
||||
потокосцепление λ(x,I) (энергия сохраняется); вихревые потери в снаряде;
|
||||
коэффициент заполнения (тонкий снаряд не усиливает весь поток) и
|
||||
диффузия поля (за импульс намагничивается только скин-кольцо);
|
||||
скин-эффект + эффект близости обмотки (метод Доуэлла); трение о трубку и
|
||||
сопротивление воздуха; одиночный импульс (тиристор не перезапускается);
|
||||
паспортные импульсные токи ключей (ITSM/IDM/ICM из даташитов).
|
||||
@@ -27,7 +29,8 @@
|
||||
полировкой; всё в одну SQLite-базу (WAL, писатель поверх очереди).
|
||||
- **GPU** (`src/gausse/gpu/`): батч-интегратор RK4 (numpy/cupy), весь шаг
|
||||
слит в одно cupy.fuse-ядро — на GTX 1070 ~3.8x к CPU; многоступенчатый
|
||||
GPU-sweep раунд-за-раундом; сверен с CPU-эталоном (<0.1%).
|
||||
GPU-sweep раунд-за-раундом И GPU-эволюция (use_gpu=True: всё поколение —
|
||||
один батч, ~150 геномов/с на 1070); сверено с CPU-эталоном (<0.1%).
|
||||
- **Отчёты** (`src/gausse/report/`, `src/gausse/web/`): веб-дашборд с
|
||||
drill-down до каждой детали и энергобаланса ступени, графики ток/поле/
|
||||
скорость, GIF-анимация выстрела (равномерное физическое время, результат
|
||||
@@ -65,9 +68,9 @@ pytest
|
||||
|
||||
## Автономная работа на сервере
|
||||
|
||||
Эволюция оформлена как systemd-сервис `gausse-evolve` (вечный цикл: 80
|
||||
поколений × 300 особей, по окончании — новый цикл со свежей случайной
|
||||
популяцией; `Restart=always`, автозапуск при загрузке). Дашборд — Docker-
|
||||
Эволюция оформлена как systemd-сервис `gausse-evolve` (вечный цикл: 120
|
||||
поколений × 1000 особей на GPU, по окончании — новый цикл со свежей
|
||||
случайной популяцией; `Restart=always`, автозапуск при загрузке). Дашборд — Docker-
|
||||
сервис `web` на :8000, читает ту же базу. Счётчик «запланировано» на
|
||||
дашборде — план **текущего цикла**, а не всего поиска: поиск бесконечен.
|
||||
|
||||
@@ -75,13 +78,12 @@ pytest
|
||||
|
||||
- Индуктивность — инженерная модель (Уилер + размагничивание сфероида +
|
||||
tanh-перекрытие), не МКЭ; точная картина поля требует FEA.
|
||||
- Вихревые потери снаряда — сосредоточенный виток на характерной частоте
|
||||
импульса; диффузия поля (скин-эффект в самом снаряде) не решается.
|
||||
- Вихревые потери снаряда — сосредоточенный виток; диффузия поля в снаряд —
|
||||
одночастотная оценка скин-кольца, а не решение уравнения диффузии.
|
||||
- Доуэлл берёт одну характерную частоту ω=1/√(LC), без спектра импульса.
|
||||
- Воздух — лобовое сопротивление; поршневой эффект столба воздуха в трубе
|
||||
не учтён. Трение — константа 0.35 (сталь-пластик), не измерено.
|
||||
- Гистерезис снаряда посчитан и сознательно не включён в динамику (<0.1%).
|
||||
- Нагрев провода за импульс и от серии выстрелов не моделируется.
|
||||
|
||||
Версия физики пишется в каждую запись (`model_version`, сейчас
|
||||
`gausse-physics-v2`) — прогоны разных моделей не смешиваются.
|
||||
Версия физики пишется в каждую запись (`model_version`, сейчас `gausse-physics-v4`) — прогоны разных моделей не смешиваются.
|
||||
|
||||
Reference in New Issue
Block a user