feat(planner): EV anti-fragmentace + 3f power floor (Fix B)

3f floor (phases>=3 → 6A×fáze×230 ≈4140W, ruší 1f trickle) + block-start penalta
(asset_ev_charger.planner_ev_start_penalty_czk V108, default 0=no-op). Golden gate
zelená (363 passed). Postaveno paralelním worktree agentem, zvalidováno sériově.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dusan Vojacek
2026-06-14 22:55:17 +02:00
parent fd7012e23d
commit a32839bf67
6 changed files with 134 additions and 10 deletions

View File

@@ -0,0 +1,11 @@
-- EV anti-fragmentace (Fix B): per-wallbox cena za START nabíjecí dávky.
-- solver_v2 zavádí per-slot binárku ev_on a hranu ev_start[t] >= ev_on[t] - ev_on[t-1];
-- do objektivu přidá Σ ev_start × tato cena. Drobná penalta (filozofie v2: nejistota /
-- opotřebení = cena) tlačí solver k SOUVISLÉ dávce místo rozsekaného nabíjení přes
-- nesouvislé sloty. Default 0 = no-op (golden gate beze změny); kalibruje se per site.
alter table ems.asset_ev_charger
add column if not exists planner_ev_start_penalty_czk numeric(6, 3) not null default 0;
comment on column ems.asset_ev_charger.planner_ev_start_penalty_czk is
'Cena (Kč) za START nabíjecí dávky v solver_v2: do objektivu jde Σ ev_start × tato hodnota (ev_start = náběžná hrana ev_on mezi sloty). Drobná penalta proti fragmentaci nabíjení (rozsekané nesouvislé sloty) — souvislá dávka na 3f místo scattered 1f trickle. 0 = vypnuto (no-op, golden-safe). Kalibruje se per wallbox.';