tuning prodeje
This commit is contained in:
@@ -93,20 +93,18 @@ 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. **v38 — zákaz předčasného / levného večerního vývozu** (`evening_early_export_penalty_ts` → tvrdé `ge_bat[t] = 0`):
|
||||
- v **nočním okně** pro profitable sloty **mimo** `evening_push_ts` (včetně slotů **po** prvním push — v27 je omezoval jen na čas před prvním push);
|
||||
- pokud `sell < max_sell_v_nočním_úseku − 0,05` (v30: max přes půlnoc);
|
||||
2. **v41 — zákaz večerního vývozu mimo špičku** (`evening_early_export_penalty_ts` → tvrdé `ge_bat[t] = 0`):
|
||||
- v **celém nočním okně** pro **všechny** sloty s `allow_discharge_export` **mimo** `evening_push_ts` (výjimky: pre-neg / neg-evening větve);
|
||||
- **nezakazuje** přebytek FVE do sítě (`ge_pv`).
|
||||
|
||||
3. **v38 — plný výkon v top večerních slotech** (`evening_push_ts`):
|
||||
- kandidáti: profitable ∩ noční okno ∩ **peak pásmo** (`max sell v úseku − degrad`, shodně s R__063);
|
||||
3. **v41 — plný výkon jen ve slotech s max sell v nočním úseku** (`evening_push_ts`):
|
||||
- kandidáti: profitable ∩ noční okno ∩ **`sell = max` v nočním úseku** (ne široké pásmo peak−degrad);
|
||||
- push = nejdražší kandidáti **`sell` desc**, dokud `kumulované_Wh ≤ push_budget`; `per_slot` ≈ min(BMS, export cap) × účinnost × 0,25 h;
|
||||
- **počet slotů dynamický** — např. ~40 kWh rozpočet a 3,4 kWh/slot (13,5 kW export) → ~11 slotů, ne pevné 3;
|
||||
- **rolling hysteresis:** při `|Δ peak sell| < 0,5` Kč a `|Δ SoC| < 5 %` držet `evening_push_ts` z předchozího aktivního runu (`_rolling_evening_push_override`);
|
||||
- **v28 push fyzika:** cap `ge_bat ≈ min(export_cap, max_discharge − load)` a v push slotech BMS `load + ge_bat ≤ max_discharge` (ne `bd+ge_bat`, které dvojí započítávalo export); odpovídá Deye SELL — load z baterie, zbytek do sítě až po site cap;
|
||||
- **výsledek:** jeden nejdražší slot → export řádově kW; další drahé sloty **po** prvním push mohou exportovat dle ekonomiky LP.
|
||||
- **`peak_export_shortfall`** se v nočním okně neaplikuje (jinak LP rozplizňoval export do levnějších sousedních slotů);
|
||||
- **v28 push fyzika:** cap `ge_bat ≈ min(export_cap, max_discharge − load)`;
|
||||
- **výsledek:** plný export (~13,5 kW u home-01) v max-sell slotu; **sousední levnější sloty neprodávají** (`export_mode=NONE`).
|
||||
|
||||
**Není to** „prodávat jen v jednom jediném nejdražším slotu“ — je to „prodávat **plným výkonem** v **tolika nejdražších večerních** slotech, kolik unese baterie“.
|
||||
**Není to** „prodávat v každém lehce ziskovém večerním slotu“ — je to „prodávat **plným výkonem** jen ve **max-sell** nočních slotech, kolik unese baterie“.
|
||||
|
||||
#### Co v26 opravilo oproti starému chování
|
||||
|
||||
@@ -116,7 +114,7 @@ flowchart TD
|
||||
| Měkká `peak_export_shortfall` → často ~50 % výkonu v mnoha slotech | Na `evening_push` slotech tvrdý push na cap; shortfall na push vypnutý |
|
||||
| `grid_setpoint = gi − ge` → Deye vidí ~0 W při velkém `ge_bat` | `_dispatch_grid_setpoint_w` z reálného exportu |
|
||||
|
||||
**Funkce:** `_evening_battery_export_push_indices`, `_evening_early_export_penalty_indices`, `_rolling_evening_push_override`, `_evening_push_discharge_budget_wh`, `_evening_push_battery_export_w`, `_dispatch_grid_setpoint_w` v `planning_engine.py`. Tag: `2026-05-28-evening-export-dynamic-v38`.
|
||||
**Funkce:** `_evening_push_peak_candidates`, `_evening_battery_export_push_indices`, `_evening_early_export_penalty_indices`, `_rolling_evening_push_override`, `_evening_push_discharge_budget_wh`, `_evening_push_battery_export_w`, `_dispatch_grid_setpoint_w` v `planning_engine.py`. Tag: **`2026-05-29-evening-peak-only-export-v41`** (dříve v38).
|
||||
|
||||
### Arbitráž baterie — účtování mezi sloty (povinné čtení)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user