oprava ranniho nabijeni a oprava bodu T
Some checks failed
CI and deploy / migration-check (push) Failing after 13s
CI and deploy / deploy (push) Has been skipped

This commit is contained in:
Dusan Vojacek
2026-05-26 14:09:19 +02:00
parent 58b0a2f882
commit d1ba864fc0
6 changed files with 415 additions and 76 deletions

View File

@@ -130,7 +130,7 @@ Navazuje na [`planning.md`](planning.md), [`planning-arbitrage-accounting.md`](p
### 4.4 v35 — rampa SoC z PV B, bod T, přebytek ✅
**Tag:** `2026-05-28-neg-sell-b-ramp-v35`
**Tag:** `2026-05-28-neg-sell-b-ramp-v35` (bod T opraven v **v36** — viz níže).
**Kód:** `_neg_sell_pv_b_charge_wh`, `_neg_sell_day_phases` (rampa), `_neg_sell_e_surplus_after_t_wh`, `_neg_sell_day_pv_b_usable_wh` (cushion v33).
@@ -141,6 +141,27 @@ Navazuje na [`planning.md`](planning.md), [`planning-arbitrage-accounting.md`](p
**Ověření:** `NegSellSocPhaseTests::test_b_ramp_t_detach_and_surplus_meta`, MCP `solver_params`.
### 4.5 v36 — přípravné okno neg dne ✅
**Tag:** `2026-05-28-neg-prep-window-v36`
| Problém v35 | Oprava v36 |
|-------------|------------|
| **T** hned na 1. `sell<0` → celý den curtail A | `t_detach``soc_need[t] ≥ 85 % soc_max` + suffix B ≥ zbytek do 100 % |
| Ráno 2. neg dne nabíjí místo exportu | **Pre-neg per den** + cushion **A+B**; `pre_neg_pv_export_slots` pro každý pražský den zvlášť |
| Večer nevybije před zítřejším neg | `neg_evening_before_neg_slots` — výboj večer **D1** |
**Cílová časová osa (např. 27. 5.):**
```text
0709:30 sell ≥ 0 → export FVE (pre-neg, cushion OK)
09:45+ sell < 0 → nabíjení A+B po rampě
~1113 bod T → uvolnění / curtail A, B do domu nebo export
večer 26.5 → vybít bat před neg 27.5 (headroom)
```
**Ověření:** `NegSellPrepWindowV36Tests`, `solver_params.inputs.pre_neg_cushion_by_day`, `neg_evening_before_neg_slots`.
---
## 5. Specifikace rampy (v35 — reference)
@@ -185,18 +206,16 @@ soc_need[t-1] = soc_need[t] - charge_b[t] # clamp ≥ min_soc_wh
Výsledkem je **`soc_need[t]`** — požadované SoC na **konci** slotu `t`, kdyby stačilo jen B.
### 5.3 Bod T (`t_detach`)
### 5.3 Bod T (`t_detach`) — v36
**Definice:** nejmenší `t` v prep části, kde:
**Definice (implementováno v36):** první prep slot `t`, kde současně:
```text
soc_need[t] ≤ soc_detach_wh
soc_need[t] ≥ max(0,85 × soc_max, 0,92 × soc_need[tail_start])
Σ charge_b[t..konec] ≥ (soc_max soc_need[t]) × 1,05
```
kde `soc_detach_wh` může být:
- konfigurovatelné % (náhrada za fixních 80 %), nebo
- odvozené z `soc_need` v okamžiku přechodu („natural“ detach).
**Zrušeno (chyba v35):** `soc_need[t] ≤ soc_need[tail_start]` — platilo vždy na začátku okna.
**Interpretace:**