Een rioolwaterzuiveringsinstallatie is uitgerust met veel sensoren die (near) real-time data leveren over zaken als luchtcompressors, klepstanden, stikstofgehaltes etc.. Deze data kan worden gebruikt voor optimalisatie van processen.
We gebruiken neurale netwerken, gebouwd in Tensorflow, om juiste waarden in te schatten voor onbetrouwbare sensoren. Daarnaast wordt d.m.v. reinforcement learning een controle-strategie geleerd voor continue aansturing van het beluchtingsproces in de installatie. Dit moet leiden tot een lager energieverbruik en minder uitstoot van schadelijke gassen.
In deze presentatie doorlopen we het verloop van het project en alle praktische aspecten die erbij komen kijken.
2. • Robert van Straalen
• Lead data scientist @ Data Science Lab
• Data scientist @ ING
• Database marketing, BI, Software development
• Studie Kunstmatige Intelligentie @ Universiteit Utrecht
EVEN VOORSTELLEN.
5. • Rioolwater stroomt binnen
• Primaire behandeling...
• Microbacteriën worden toegevoegd
• Slib wordt nu actiefslib
• Bacteriën zetten NH4 en O2 om naar NO3
en H2O
• Bacteria hebben zuurstof nodig, dus we
pompen er lucht doorheen
• Tertiaire behandeling...
• Schoon water!
HOE WERKT EEN RWZI?
8. • Deel 1: Basis
• Bepaal continu (i.e. elke minuut):
• Hoeveel lucht er naar elke AT stroomt
• Hoeveel energie er verbruikt wordt door elke AT
• Deel 2: Optimalisatie
• Bepaal een control strategy die continu (i.e. elke minuut):
• Het beluchtingsproces aanstuurt
• Blowerstanden
• Klepstanden
• Zodanig dat
• de juiste hoeveelheid lucht door elke AT wordt gepompt
• met minimaal energieverbruik
PROBLEEMDEFINITIE.
9. • Doel: bepaal airflow en energieverbruik per AT
• Aanpak:
1. Bepaal airflow (luchtdebiet) per AT
1. Gebruik data van flowmeter voor AT 5 (betrouwbaar)
2. Bouw model op deze data
3. Gebruik model om flow voor overige AT’s te voorspellen
2. Bepaal totale energieverbruik 6 blowers
3. Energieverbruik AT = (airflow AT / airflow totaal) * energieverbruik totaal
AANPAK.
11. • Input scaling in lambda layers
• Luchtdruk puur afhankelijk van blowers
en kleppen
• ➤ geen bias
• ➤ non-negative constraints
• Output layers:
• Linear activation
• Gebruik bias initializer met
gemiddelde output-waarde
• Tune loss_weights voor juiste balans
• Adam optimizer; learning rate 0.0003
NEURAAL NETWERK.
12. MODEL PERFORMANCE.
• Luchtdruk:
Mean absolute error 0.37
(op een range van ± 0-90)
• Airflow:
Mean absolute error 177
(op een range van ± 0-11.000)
• Energieverbruik:
Mean absolute error 3.1
(op een range van 0-400)
13. • predict.py
• Python module om modelvoorspellingen op te halen
• api.py
• Flask script voor API-definitie
• Gunicorn
• web server om API te ontsluiten
• Dockerfile:
• Python + packages
• Starten Gunicorn
DEPLOYMENT.
14. • In het eerste deelproject hebben we airflow en energieverbruik
voorspeld adhv blower- en klepstanden
• In dit vervolgtraject willen we blower- en klepstanden zodanig
controleren/aansturen dat
• de benodigde airflow gerealiseerd wordt
• met minimaal energieverbruik
Pffff en dat was nog maar deel 1!
15. 1. Observeer benodigde airflow
• Afleiden uit waterdebiet + zuurstof-/ammoniummetingen
2. Bepaal nieuwe standen blowers en kleppen
• Dit doet het controlemodel
3. Observeer resulterende airflow en energieverbruik
• Dit doet het voorspelmodel uit het 1e deelproject
4. Beoordeel resultaat
• Bestraf afwijkingen van benodigde airflow
• Bestraf energieverbruik
5. Pas het model aan n.a.v. het resultaat
6. Terug naar 1.
AANPAK.
16. • Observeer state s0
• Kies beste actie a0 gegeven s0
• Voer actie a0 uit in de environment
• Observeer reward r0 en state s1
• Evalueer keuze van actie a0 in state s0,
gegeven reward r0
• Herhaal
REINFORCEMENT LEARNING.
17. • Deep Deterministic Policy Gradient
• Lijkt op Deep Q-learning, maar dan voor
continuous action spaces
• Model opgesplitst in 2 delen:
• Actor bestuurt beluchting
• Critic beoordeelt het resultaat
• Beide worden iteratief getraind o.b.v.
geobserveerde data
• Eerdere model is simulator van de environment
DDPG ALGORITME.
18. • Environment in OpenAI’s gym format
• Definiëer mogelijke acties
• Definiëer hoe de states eruit zien
• Definiëer een functie die, gegeven een state en een actie, een reward terug geeft
• Gebruikt het eerder gebouwde model
• DDPG d.m.v. Keras-RL library
• Relatief overzichtelijk en begrijpelijk; DDPG geïmplementeerd
• States: Luchtdruk, Airflow, Blowers, Kleppen
• Actions: Blowers, Kleppen
• Reward: benodigde vs. behaalde airflow + energieverbruik
IMPLEMENTATIE.
19. • Actor: State ➤ Action
• Input = State (Luchtdruk, Airflow, Blowers, Kleppen)
• Scaling
• 2 dense layers met ReLU activatie
• Output met tanh activatie ➤ Blowers + Kleppen
• Critic: State + Action ➤ Reward
• Input = State + Action
• Scaling
• 2 dense layers met ReLU activatie
• Output met linear activatie ➤ Reward
N.B. Actor netwerk is pre-trained op huidige control strategy
ACTOR & CRITIC.
21. • Wie heeft de domeinkennis?
• Welke data is betrouwbaar?
• Data augmentatie voor betere generalisatie
• Andrej Karpathy’s Recipe for training neural networks:
• Tensorboard: write_images laat logs exploderen, maar helpt wel om gewichten te valideren
• Neuraal netwerk tunen obv loss curve is een ding, maar reinforcement learning agent tunen op
reward curve...
• Reinforcement learning staat nog in de kinderschoenen
• Pre-training helpt
LEARNINGS.
22. • Impediment:
• blowers & kleppen direct besturen
voorlopig niet mogelijk
• Scope:
• niet meer alleen kijken naar
energieverbruik
• maar ook (of eigenlijk met name) naar
uitstoot
STATUS QUO.
23. • Een nieuw environment model dat
• gegeven een ‘state’ (metingen)
• gegeven voorgestelde actie / control settings
• de volgende state voorspelt (metingen)
• Een influent forecast model dat
• gegeven een datum en tijd
• het verwachte influent voorspelt
• Een control strategy model dat
• gegeven een ‘state’
• gegeven een influent forecast
• de beste actie / control settings voorspelt
VERVOLGPLANNEN.
+ ➤
➤
➤