Доки: 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,
|
CPU-эталоном — расхождение exit_v **0.084%** (tests/test_batch_sweep.py,
|
||||||
test_batch_integrator.py). Стиффные конфиги, переполняющие фикс-шаг,
|
test_batch_integrator.py). Стиффные конфиги, переполняющие фикс-шаг,
|
||||||
честно бракуются (blew_up), а не записываются мусором.
|
честно бракуются (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 даёт
|
Для сравнения на одной и той же эволюции: v1 давал «38%» там, где v2 даёт
|
||||||
~8% — столько стоили неучтённые скин и трение.
|
~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
|
## Требования пользователя, закрытые после Этапа 8
|
||||||
|
|
||||||
|
|||||||
18
README.md
18
README.md
@@ -16,6 +16,8 @@
|
|||||||
- **Физика** (`src/gausse/physics/`): RLC-разряд конденсаторной банки через
|
- **Физика** (`src/gausse/physics/`): RLC-разряд конденсаторной банки через
|
||||||
катушку с ферромагнитным снарядом; насыщение железа через единое
|
катушку с ферромагнитным снарядом; насыщение железа через единое
|
||||||
потокосцепление λ(x,I) (энергия сохраняется); вихревые потери в снаряде;
|
потокосцепление λ(x,I) (энергия сохраняется); вихревые потери в снаряде;
|
||||||
|
коэффициент заполнения (тонкий снаряд не усиливает весь поток) и
|
||||||
|
диффузия поля (за импульс намагничивается только скин-кольцо);
|
||||||
скин-эффект + эффект близости обмотки (метод Доуэлла); трение о трубку и
|
скин-эффект + эффект близости обмотки (метод Доуэлла); трение о трубку и
|
||||||
сопротивление воздуха; одиночный импульс (тиристор не перезапускается);
|
сопротивление воздуха; одиночный импульс (тиристор не перезапускается);
|
||||||
паспортные импульсные токи ключей (ITSM/IDM/ICM из даташитов).
|
паспортные импульсные токи ключей (ITSM/IDM/ICM из даташитов).
|
||||||
@@ -27,7 +29,8 @@
|
|||||||
полировкой; всё в одну SQLite-базу (WAL, писатель поверх очереди).
|
полировкой; всё в одну SQLite-базу (WAL, писатель поверх очереди).
|
||||||
- **GPU** (`src/gausse/gpu/`): батч-интегратор RK4 (numpy/cupy), весь шаг
|
- **GPU** (`src/gausse/gpu/`): батч-интегратор RK4 (numpy/cupy), весь шаг
|
||||||
слит в одно cupy.fuse-ядро — на GTX 1070 ~3.8x к CPU; многоступенчатый
|
слит в одно 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/`): веб-дашборд с
|
- **Отчёты** (`src/gausse/report/`, `src/gausse/web/`): веб-дашборд с
|
||||||
drill-down до каждой детали и энергобаланса ступени, графики ток/поле/
|
drill-down до каждой детали и энергобаланса ступени, графики ток/поле/
|
||||||
скорость, GIF-анимация выстрела (равномерное физическое время, результат
|
скорость, GIF-анимация выстрела (равномерное физическое время, результат
|
||||||
@@ -65,9 +68,9 @@ pytest
|
|||||||
|
|
||||||
## Автономная работа на сервере
|
## Автономная работа на сервере
|
||||||
|
|
||||||
Эволюция оформлена как systemd-сервис `gausse-evolve` (вечный цикл: 80
|
Эволюция оформлена как systemd-сервис `gausse-evolve` (вечный цикл: 120
|
||||||
поколений × 300 особей, по окончании — новый цикл со свежей случайной
|
поколений × 1000 особей на GPU, по окончании — новый цикл со свежей
|
||||||
популяцией; `Restart=always`, автозапуск при загрузке). Дашборд — Docker-
|
случайной популяцией; `Restart=always`, автозапуск при загрузке). Дашборд — Docker-
|
||||||
сервис `web` на :8000, читает ту же базу. Счётчик «запланировано» на
|
сервис `web` на :8000, читает ту же базу. Счётчик «запланировано» на
|
||||||
дашборде — план **текущего цикла**, а не всего поиска: поиск бесконечен.
|
дашборде — план **текущего цикла**, а не всего поиска: поиск бесконечен.
|
||||||
|
|
||||||
@@ -75,13 +78,12 @@ pytest
|
|||||||
|
|
||||||
- Индуктивность — инженерная модель (Уилер + размагничивание сфероида +
|
- Индуктивность — инженерная модель (Уилер + размагничивание сфероида +
|
||||||
tanh-перекрытие), не МКЭ; точная картина поля требует FEA.
|
tanh-перекрытие), не МКЭ; точная картина поля требует FEA.
|
||||||
- Вихревые потери снаряда — сосредоточенный виток на характерной частоте
|
- Вихревые потери снаряда — сосредоточенный виток; диффузия поля в снаряд —
|
||||||
импульса; диффузия поля (скин-эффект в самом снаряде) не решается.
|
одночастотная оценка скин-кольца, а не решение уравнения диффузии.
|
||||||
- Доуэлл берёт одну характерную частоту ω=1/√(LC), без спектра импульса.
|
- Доуэлл берёт одну характерную частоту ω=1/√(LC), без спектра импульса.
|
||||||
- Воздух — лобовое сопротивление; поршневой эффект столба воздуха в трубе
|
- Воздух — лобовое сопротивление; поршневой эффект столба воздуха в трубе
|
||||||
не учтён. Трение — константа 0.35 (сталь-пластик), не измерено.
|
не учтён. Трение — константа 0.35 (сталь-пластик), не измерено.
|
||||||
- Гистерезис снаряда посчитан и сознательно не включён в динамику (<0.1%).
|
- Гистерезис снаряда посчитан и сознательно не включён в динамику (<0.1%).
|
||||||
- Нагрев провода за импульс и от серии выстрелов не моделируется.
|
- Нагрев провода за импульс и от серии выстрелов не моделируется.
|
||||||
|
|
||||||
Версия физики пишется в каждую запись (`model_version`, сейчас
|
Версия физики пишется в каждую запись (`model_version`, сейчас `gausse-physics-v4`) — прогоны разных моделей не смешиваются.
|
||||||
`gausse-physics-v2`) — прогоны разных моделей не смешиваются.
|
|
||||||
|
|||||||
Reference in New Issue
Block a user