Technische Details

Hoe werkt de simulatie?

De simulatie gebruikt een day-ahead optimization strategie:

  1. Elke dag om 13:00 worden de prijzen voor de komende 35 uur bekend
  2. De optimizer berekent de optimale laad/ontlaad strategie voor deze periode
  3. 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

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:

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

Simulatie met PV en Verbruik

De "Met PV" pagina simuleert een realistischer scenario met zonnepanelen en huishoudelijk verbruik:

Zelfverbruik en Zelfvoorziening

De simulator berekent twee belangrijke metrics:

Zelfverbruik (Self-Consumption): Hoeveel van de opgewekte PV-energie wordt zelf gebruikt (niet teruggeleverd)?

Zelfvoorziening (Self-Sufficiency): Hoeveel van je verbruik wordt gedekt door eigen opwek (niet van het net)?

NB: Bij dynamische prijzen kan de batterij zowel vanaf PV als vanaf het net worden geladen. De zelfvoorzieningsmetric telt alle batterij-ontlading, ongeacht de bron. Dit geeft een praktische maat voor de totale onafhankelijkheid van het net op elk moment.

Vier scenario's

  1. Vast contract zonder batterij: Vaste inkoop/teruglevering prijzen, geen batterij
  2. Vast contract met batterij: Greedy strategie om zelfverbruik te maximaliseren
  3. Dynamisch zonder batterij: EPEX prijzen, geen batterij
  4. Dynamisch met batterij: MILP optimalisatie op basis van EPEX prijzen

Greedy strategie (vast met batterij)

Bij vaste prijzen is er geen arbitrage mogelijk. De batterij maximaliseert zelfverbruik:

  1. PV → direct naar verbruik
  2. Overschot PV → batterij laden
  3. Tekort → batterij ontladen
  4. Net alleen als laatste optie

Verbruiks- en PV-profielen

De simulatie ondersteunt realistische Nederlandse profielen:

Eigen P1 Data Upload

De "Eigen Data" pagina ondersteunt upload van eigen P1 meter data:

CSV Format

Verwacht formaat: time, Import T1 kWh, Import T2 kWh, Export T1 kWh, Export T2 kWh

Meterstanden zijn cumulatief. De simulator berekent automatisch de deltas tussen opeenvolgende metingen.

Automatische Interval Detectie

De parser detecteert automatisch het meetinterval (5 min, 10 min, 15 min, 60 min, etc.) en aggregeert naar het fijnste prijsdata interval:

Drill-down Navigatie

Net als de arbitrage simulatie biedt de P1 data pagina drill-down navigatie:

  1. Maandoverzicht: Klik op een maand om dagdetails te zien
  2. Dagoverzicht: Klik op een dag om uur/kwartier grafiek te zien
  3. Timestep grafiek: Multi-axis chart met SoC, grid flows, battery flows en prijzen

De grafiek toont automatisch uurlijkse of kwartier data afhankelijk van het prijsdata interval.

Beperkingen

Broncode

Deze implementatie is gebaseerd op een Python simulator en is volledig herschreven in JavaScript voor client-side uitvoering.

Technologieën: