protazeni exportniho okna az do rana pred vyrobu FVE (prichazeli sme o prilezitosti mezi pulnoci a ranem)
Some checks failed
CI and deploy / migration-check (push) Failing after 23s
CI and deploy / deploy (push) Has been skipped

This commit is contained in:
Dusan Vojacek
2026-05-26 00:00:06 +02:00
parent b03f08d3a0
commit 25c864db61
4 changed files with 228 additions and 44 deletions

View File

@@ -64,9 +64,9 @@ Solver optimalizuje celý horizont (typicky do konce známých OTE dat, strop z
- pohled dopředu (ráno ví že přes poledne bude záporná cena → prodává z baterie)
- kompromisy mezi prodejem, nabíjením, TČ a EV v globálním optimu
### Večerní export z baterie (v24v27) — co plánovač dělá a co ne
### Večerní / noční export z baterie (v24v30) — co plánovač dělá a co ne
Cíl zůstává **maximální ekonomický užitek v celém horizontu**: prodat (a nabít) v časech, kdy to dává smysl podle cen a kapacity baterie. Večerní logika **neřeší ráno před FVE** a **nevnucuje jediný slot**.
Cíl zůstává **maximální ekonomický užitek v celém horizontu**: prodat (a nabít) v časech, kdy to dává smysl podle cen a kapacity baterie. **v30:** noční okno **přes půlnoc** (17:00 → 05:00 Prague), konec při **východu FVE** (`pv_a+pv_b > load + 500 W`); **tvrdý push baterie** jen v tmavých slotech, ne po východu slunce.
#### Co se řeší jinde (není „večerní v26“)
@@ -74,14 +74,15 @@ Cíl zůstává **maximální ekonomický užitek v celém horizontu**: prodat (
|---------------|------------------|---------|
| Ráno **511** před prvním `sell < 0` | R__063 ranní pásmo + LP `morning_pre_neg_export_ts` | Export před záporným výkupním oknem, ne „před FVE“ jako takové |
| Odpoledne / noc, obecně profitable | `allow_discharge_export` z rozpočtu Wh + LP `peak_export_shortfall` | Kdekoliv v horizontu, pokud marže sedí |
| **≥ 17:00** večer | v24 Wh push + **v26** doplnění níže | Špička OTE večer |
| **≥ 17:00** večer + **05:00** (v30) | v24 Wh push + v26/v28 + **noční peak přes půlnoc** | OTE špička i kolem půlnoci |
| Po východu FVE | konec nočního okna | push / peak jen `pv` pod prahem |
#### Tři vrstvy večerního chování (od 17:00 Prague)
#### Tři vrstvy nočního chování (v30: 17:00 → půlnoc → do východu FVE)
```mermaid
flowchart TD
A[LP: globální optimum v horizontu] --> B{slot >= 17h a profitable export?}
B -->|sell pod dennim vecer. max - 0.05| C[ge_bat = 0: baterie ne pred spickou]
B -->|sell pod nocnim max - 0.05| C[ge_bat = 0: baterie ne pred spickou]
B -->|sell v top pasme max - 0.05| D[evening_push kandidat]
D --> E[Seradit sell desc, pridat sloty az do Wh rozpoctu]
E --> F[ge_bat >= plny vykon na cap v kazdem push slotu]
@@ -92,8 +93,8 @@ flowchart TD
1. **SQL masky (R__063, vrstva 2)** — které večerní sloty *smí* export z baterie vůbec (`allow_discharge_export`): mimo jiné sloty v pásmu „denní večerní max degrad“ (SQL), plus globální Wh rozpočet (vrstva 1).
2. **v27 — zákaz předčasného večerního vývozu** (`evening_early_export_penalty_ts` → tvrdé `ge_bat[t] = 0`):
- jen **hodiny ≥ 17** a **časově před** prvním slotem v `evening_push_ts` (ne po něm — v26 blokovalo i 1921 h);
- jen pokud `sell < max_večer 0,05` Kč/kWh;
- jen v **nočním okně** (`_in_night_battery_export_window`) a **časově před** prvním slotem v `evening_push_ts`;
- jen pokud `sell < max_sell_v_nočním_úseku 0,05` (v30: max přes půlnoc, ne per kalendářní den);
- **nezakazuje** přebytek FVE do sítě (`ge_pv`).
3. **v24 + v27 — plný výkon v top večerních slotech** (`evening_push_ts`):

View File

@@ -5,6 +5,14 @@ Formát: **datum (ISO)** · stručný důvod · soubory · chování / ověřen
---
## 2026-05-28 — Noční export přes půlnoc, konec při východu FVE (v30)
**Problém (home-01 run 17388):** Večerní peak **per kalendářní den** → export v **23:30** (3,29 Kč), slot **00:00** (3,59 Kč) bez `BATTERY_SELL` (nový den, hour &lt; 17).
**Změna (tag `2026-05-28-night-export-window-midnight-v30`):** `_night_export_window_segments` — okno **≥17h** + **05h** Prague, konec při `pv_a+pv_b > load + 500 W`. `_evening_peak_export_indices` / push / `evening_early` používají **jeden max sell v nočním úseku** (přes půlnoc). Po východu FVE žádný tvrdý push baterie.
**Ověření:** `pytest … -k night_window_includes_midnight or midnight_higher_sell` · `planner_build_tag` **v30**.
## 2026-05-28 — FVE při kladném sell: solver místo pv_store curtail (v29)
**Problém (home-01 odpoledne):** `ge_pv = 0` když `sell < max(future_sell)` (např. 3 Kč vs. večerních 6 Kč) při plné baterii → **curtail** celého pole A. Záměr „držet na večerní peak“ měl platit pro **baterii** (`ge_bat`), ne blokovat export FVE.