I’m an energy engineer / data scientist who likes to build models to control energy systems. I’ve worked on industrial & district energy projects at a international energy utility and on demand side flexibility at an early stage company.
Currently I’m the director at Data Science Retreat - an advanced Berlin bootcamp. I’m also doing a bit of teaching on topics I am passionate about - backpropagation, bash + Git, test driven development and reinforcement learning.
Reinforcement learning for energy systems
Mixed integer linear programming of battery storage and combined heat and power
import energypylinear as epl model = epl.Battery(power=2, capacity=4, efficiency=1.0) prices = [10, 50, 10, 50, 10] info = model.optimize(prices, timestep='30min')
UK and Australian grid data
The Australian grid is a unique combination of high coal penetrations, quality potential renewable resources (and high penetration in South Australia) and a deregulated, volatile electricity market. It also has good data availability - if you know where to look for it.
Combined heat and power
I spent four years working as an industrial energy engineer, and worked with a lot of CHP plant. energy-py-linear has a CHP model that can be configured with a number of gas and steam turbines, then optimized as a function of gas and electricity prices.
from energypylinear.chp import Boiler, GasTurbine, SteamTurbine assets = [ GasTurbine(size=10, name='gt1'), Boiler(size=100, name='blr1'), Boiler(size=100, name='blr2', efficiency=0.9), SteamTurbine(size=6, name='st1') ] info = optimize( assets, gas_price=20, electricity_price=1000, site_steam_demand=100, site_power_demand=100, )
I’ve also written about Average versus Marginal Carbon Emissions, the Four Inconvenient Truths of the Clean Energy Transition and the intersection of energy and machine learning.
Parallelized Cross Entropy Method
CEM on CartPole and Pendulum. Parallelized across processes and through batch.
$ python cem.py cartpole --num_process 6 --epochs 8 --batch_size 4096 $ python cem.py pendulum --num_process 6 --epochs 15 --batch_size 4096