Technische Details
Hoe werkt de simulatie?
De simulatie gebruikt een day-ahead optimization strategie:
- Elke dag om 13:00 worden de prijzen voor de komende 35 uur bekend
- De optimizer berekent de optimale laad/ontlaad strategie voor deze periode
- Deze strategie wordt uitgevoerd tot de volgende dag om 13:00, wanneer een nieuwe planning gemaakt wordt
Optimizer Algoritme
De implementatie gebruikt MILP (Mixed Integer Linear Programming) met de HiGHS solver:
Formulering
- Beslissingsvariabelen: Voor elke periode t:
- charge[t] = DC energie naar batterij (kWh)
- discharge[t] = DC energie uit batterij (kWh)
- soc[t] = State of Charge aan eind van periode t (kWh)
- Objectieve functie: Maximaliseer winst
profit = Σ[sell_price[t] × (discharge[t] × η_discharge) - buy_price[t] × (charge[t] / η_charge)]
- Constraints:
- SoC dynamica: soc[t] = soc[t-1] + charge[t] - discharge[t]
- Vermogen limieten: 0 ≤ charge[t] ≤ P_max, 0 ≤ discharge[t] ≤ P_max
- SoC limieten: SoC_min ≤ soc[t] ≤ SoC_max
HiGHS solver: Professionele LP/MILP solver ontwikkeld door University of Edinburgh, gecompileerd naar WebAssembly voor browser gebruik.
Deze implementatie volgt exact dezelfde MILP formulering als de originele Python implementatie met PuLP.
Efficienties
De simulatie gebruikt DC power als basis:
- Laden: AC van grid → omvormer → DC naar batterij
- Ontladen: DC uit batterij → omvormer → AC naar grid
De totale efficiëntie is: inverter_efficiency × battery_efficiency
Prijzen
De simulator ondersteunt vier prijs modes:
1. Standaard met salderen (Tibber 2025)
Inkoop: (EPEX + €0,10154) × 1,21 + €0,0248
Teruglevering: (EPEX + €0,10154) × 1,21 + €0,0248
EPEX is in EUR/kWh. Door saldering is inkoop = teruglevering. Formule bevat energiebelasting (€0,10154/kWh), BTW (21%) en Tibber inkoopvergoeding (€0,0248/kWh).
2. Standaard zonder salderen (Tibber 2025)
Inkoop: (EPEX + €0,10154) × 1,21 + €0,0248
Teruglevering: EPEX + €0,0248/1,21
Inkoop inclusief energiebelasting, BTW en Tibber inkoopvergoeding. Teruglevering is EPEX zonder BTW plus de Tibber inkoopvergoeding zonder BTW (€0,0248/1,21 = €0,0205/kWh).
3. Kaal (EPEX zonder BTW)
Inkoop: EPEX
Teruglevering: EPEX
Puur EPEX day-ahead prijzen zonder toeslagen of BTW.
4. Geavanceerd (eigen formules)
Gebruikers kunnen eigen JavaScript formules invoeren voor inkoop en teruglevering prijzen. De variabele epex
(in EUR/kWh) is beschikbaar.
Cycles Berekening
Aantal cycles wordt berekend als:
cycles = gemiddelde_doorvoer / capaciteit
Waarbij gemiddelde doorvoer = (totaal_geladen + totaal_ontladen) / 2
Een volledige cyclus = 1× capaciteit laden + 1× capaciteit ontladen
Beperkingen
- Geen onbalans of intraday markten
- Geen eigen verbruik of PV-productie
- Vaste efficiency curves (geen variatie met vermogen)
Broncode
Deze implementatie is gebaseerd op een Python simulator en is volledig herschreven in JavaScript voor client-side uitvoering.
Technologieën:
- Vanilla JavaScript (geen frameworks)
- HiGHS solver (WebAssembly) voor MILP optimalisatie
- Chart.js voor visualisaties
- 100% client-side (privacy vriendelijk)