v2: denní SoC bezpečnostní rampa — ráno dotáhnout rezervu, pak prodávat
KV1 pozorování uživatele: ráno baterie na 11 % (min 10), prodává se do sítě — nenadálý odběr/mrak by se kupoval za fixních 6.35. v1 mělo denní rampu (safety_soc_target_wh z R__063: reserve 30 % ráno → reserve+noc večer, 6-19 h, flag planner_daytime_charge_target_enabled) — v2 ji ignoroval. Mechanismus (vzor nočního polštáře): deficit pod rampou platí za KAŽDÝ slot nájem buy×faktor (V091 asset_battery.planner_safety_soc_risk_factor, default 0.05; 0=vypnuto) → ráno se nejdřív doplní rezerva (4 h deficitu 1 kWh při buy 6.35 ≈ 5.1 Kč > sell ~2.5), extrémní sell špička smí deficit racionálně podstoupit. R__039 + db_io + 2 testy (KV1 scénář, spike). Eval fixtures beze změny (sloupec v context_json fixtures není → 0); živá produkce dostane faktor přes fn_planning_site_context. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
13
db/migration/V091__safety_soc_risk_factor.sql
Normal file
13
db/migration/V091__safety_soc_risk_factor.sql
Normal file
@@ -0,0 +1,13 @@
|
||||
-- Denní SoC bezpečnostní rampa ve v2: deficit pod safety_soc_target_wh
|
||||
-- (R__063: rampa reserve→reserve+noční potřeba, 6–19 h) platí za každý slot
|
||||
-- "nájem" = buy_cena × faktor. Ráno tak baterie nejdřív dotáhne na ~reserve
|
||||
-- (KV1/BA81 30 %) a teprve pak prodává — nenadálý odběr/mrak nekupuje za
|
||||
-- draho ze sítě. Extrémní sell špička smí deficit racionálně podstoupit.
|
||||
-- 0 = vypnuto; default 0.05 (deficit 1 kWh držený 4 h při buy 6 Kč ≈ 4.8 Kč).
|
||||
|
||||
alter table ems.asset_battery
|
||||
add column if not exists planner_safety_soc_risk_factor numeric(5, 3)
|
||||
not null default 0.05;
|
||||
|
||||
comment on column ems.asset_battery.planner_safety_soc_risk_factor is
|
||||
'v2: podíl buy ceny účtovaný za KAŽDÝ 15min slot deficitu pod safety_soc_target_wh (denní rampa z R__063). Ocenění rizika nenadálého odběru při slabé predikci. 0 = vypnuto.';
|
||||
@@ -76,7 +76,8 @@ begin
|
||||
'planner_neg_sell_prep_soc_percent', coalesce(ab.planner_neg_sell_prep_soc_percent, 80::numeric),
|
||||
'planner_neg_sell_full_soc_tail_slots', coalesce(ab.planner_neg_sell_full_soc_tail_slots, 4),
|
||||
'planner_neg_sell_vent_min_sell_czk_kwh', ab.planner_neg_sell_vent_min_sell_czk_kwh,
|
||||
'planner_pv_risk_frontload_czk_kwh', coalesce(ab.planner_pv_risk_frontload_czk_kwh, 0.01)
|
||||
'planner_pv_risk_frontload_czk_kwh', coalesce(ab.planner_pv_risk_frontload_czk_kwh, 0.01),
|
||||
'planner_safety_soc_risk_factor', coalesce(ab.planner_safety_soc_risk_factor, 0.05)
|
||||
)
|
||||
into v_b
|
||||
from ems.asset_battery ab
|
||||
|
||||
Reference in New Issue
Block a user