‘The aim of FLEXINet is a system that accelerates the energy transition. We hope to make a substantial contribution to reaching climate targets by cleverly combining various techniques – think of blending recycled batteries with flexible heat pumps and the charging of electric cars.’
This repository contains the code for reproducing the Case Studies presented in Ageing-aware. The code is based on the EMSmodule library, JuMP.jl and InfiniteOpt.jl.
First, clone this repository and Pkg.instantiate() to install the dependencies.
The functions to run the EMS are in the files:
runRollingHorizon.jl # Script to run the Case Study 1: Residential MCES with different battery models and tunning weights.
runLFPvsNMC.jl # Script to run the Case Study 2: Cathode Chemistry comparison
runFreshvsAged.jl # Script to run the Case Study 3: Compare used and new batteries in a residential MCES.
runTermCondBESS.jl # Script to run the Appendix B: Compare different terminal conditions for the battery in a residential MCES.The plotting and analysis is done in the files:
plotFigs_AppEnergyDA.jl # Script to analyze and plot the results of Case Study 1
notebooks/CS1_benchmarks_AppEnergy.ipynb
notebooks/CS2_NMCvsLFP_AppEnergy.ipynb
notebooks/CS3_FreshvsAged_AppEnergy.ipynb
notebooks/makeElaadFits.ipynb # Fitting EV mobility distributions.
notebooks/makeLoadForecasts.ipynb # Fitting load forecasts.
notebooks/makePriceForecasts.ipynb # Fitting price forecasts.Following the Universal Modelling Framework (UMF) this package implements Direct Lookahead (DLA) Policies. The DLA is a model-based policy that uses a model of the system to predict the future and optimize the control actions. The available DLAs are a day-ahead (DA) planner and a Model Predictive Controller (MPC). The basic algorithm is depicted in the following figure:
The DA planner uses a model of the system to predict the future and optimize the control actions for the next 24 hours. The MPC uses a model of the system to predict the future and optimize the control actions for the next 24 hours, but it also uses the actual measurements to update the model and the optimization problem every hour. The MPC is an economic non-linear MPC (NLP-eMPC) receding horizon controller.
The main function to run the sequential market operation is rollingHorizon() in the runRollingHorizon.jl file. This function implements the sequential operation of the DA and MPC policies. The DA policy is solved first, and its results are used to initialize the MPC policy. The MPC policy is then solved, and its results are used to update the system state. This process is repeated for the entire simulation horizon.
This repository contains the work produced for the FLEXINET project by the DCE&S group, Electrical Sustainable Energy Dept. of the TU Delft. The work belongs to Dario Slaifstein, Gautam Rituraj, and Joel Alpizar.
MIT License
Cite as:
@article{Slaifstein2026,
author = {Darío Slaifstein and Gautham Ram Chandra Mouli and Laura Ramirez-Elizondo and Pavol Bauer},
doi = {10.1016/J.EST.2026.122889},
issn = {2352-152X},
journal = {Journal of Energy Storage},
keywords = {Battery degradation,Energy management,Multi-carrier energy system},
month = {9},
pages = {122889},
publisher = {Elsevier},
title = {Ageing-aware energy management for residential multi-carrier energy systems},
volume = {173},
url = {https://www.sciencedirect.com/science/article/pii/S2352152X26025533?via%3Dihub},
year = {2026}
}

