fxi ba81 maximum price sell
This commit is contained in:
@@ -309,6 +309,7 @@ begin
|
||||
v_discharge_target_wh := v_exportable * v_discharge_buf;
|
||||
|
||||
-- Rozpočet na půl dne (Europe/Prague): 00:00–12:00 vs 12:00–24:00; chybějící segment dostane celý budget.
|
||||
-- Nabíjecí rozpočet dál dělíme 50/50 (kvůli rozprostření v rámci dne), ale exportní vybíjení volíme globálně podle sell_price.
|
||||
select
|
||||
coalesce(
|
||||
count(*) filter (
|
||||
@@ -328,18 +329,12 @@ begin
|
||||
if v_n_am <= 0 then
|
||||
v_chg_am_wh := 0;
|
||||
v_chg_pm_wh := v_grid_target_wh;
|
||||
v_dis_am_wh := 0;
|
||||
v_dis_pm_wh := v_discharge_target_wh;
|
||||
elsif v_n_pm <= 0 then
|
||||
v_chg_am_wh := v_grid_target_wh;
|
||||
v_chg_pm_wh := 0;
|
||||
v_dis_am_wh := v_discharge_target_wh;
|
||||
v_dis_pm_wh := 0;
|
||||
else
|
||||
v_chg_am_wh := v_grid_target_wh / 2.0;
|
||||
v_chg_pm_wh := v_grid_target_wh - v_chg_am_wh;
|
||||
v_dis_am_wh := v_discharge_target_wh / 2.0;
|
||||
v_dis_pm_wh := v_discharge_target_wh - v_dis_am_wh;
|
||||
end if;
|
||||
|
||||
-- charge mask (sloupce temp tabulky kvalifikujeme: RETURNS TABLE dělá PL proměnné stejných jmen)
|
||||
@@ -390,22 +385,9 @@ begin
|
||||
for r_slot in
|
||||
select wk.slot_ord
|
||||
from _ems_plan_slot_wk wk
|
||||
where extract(hour from wk.interval_start at time zone 'Europe/Prague') < 12
|
||||
order by wk.sell_price desc, wk.slot_ord desc
|
||||
loop
|
||||
exit when v_cum >= v_dis_am_wh;
|
||||
exit when v_per_slot_discharge_wh <= 0;
|
||||
update _ems_plan_slot_wk wk set allow_discharge_export = true where wk.slot_ord = r_slot.slot_ord;
|
||||
v_cum := v_cum + v_per_slot_discharge_wh;
|
||||
end loop;
|
||||
v_cum := 0;
|
||||
for r_slot in
|
||||
select wk.slot_ord
|
||||
from _ems_plan_slot_wk wk
|
||||
where extract(hour from wk.interval_start at time zone 'Europe/Prague') >= 12
|
||||
order by wk.sell_price desc, wk.slot_ord desc
|
||||
loop
|
||||
exit when v_cum >= v_dis_pm_wh;
|
||||
exit when v_cum >= v_discharge_target_wh;
|
||||
exit when v_per_slot_discharge_wh <= 0;
|
||||
update _ems_plan_slot_wk wk set allow_discharge_export = true where wk.slot_ord = r_slot.slot_ord;
|
||||
v_cum := v_cum + v_per_slot_discharge_wh;
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
- měkký cíl na konci 24h přes `_soc_security_profile` + tvrdé dvouúrovňové pravidlo výše.
|
||||
- **Dynamická ekonomická podlaha (fáze 2):**
|
||||
- `_dynamic_arb_floor_wh_series`: podle součtu FVE výkonu v dalších ~8 h (`ARB_LOOKAHEAD_SLOTS`) se `arb_floor_wh[t]` posouvá mezi `min_soc_wh` a rezervou z DB – silné očekávané slunce ji sníží (ráno / po obloze); vynutit konstantní chování lze `battery.disable_dynamic_arb_floor=True` jen pro testy / ladění.
|
||||
- **Výběr exportních slotů (`allow_discharge_export`):** `ems.fn_load_planning_slots_full` omezuje, ve kterých slotech smí solver vybíjet baterii „nad rámec spotřeby“ pro export do sítě (anti-mikrocyklování). Aktuálně se sloty pro exportní vybíjení vybírají **globálně** podle `sell_price desc` přes celé okno (ne 50/50 AM/PM), aby solver neodkládal vybíjení do levnějších ranních slotů, pokud jsou dražší sloty už večer.
|
||||
- **Záporná nákupní cena:**
|
||||
- horní mez `grid_import` zahrnuje `load_baseline_w` + nabíjení/EV/TČ (bez nekonečného importu).
|
||||
- **Uložené vstupy plánu** (`planning_interval`): `load_baseline_w`, `pv_*_forecast_raw_w`, `pv_*_forecast_solver_w` pro UI a audit.
|
||||
|
||||
Reference in New Issue
Block a user