https://github.com/battery-intelligence-lab/batteryopportunity
Battery Opportunity Cost Minimisation
https://github.com/battery-intelligence-lab/batteryopportunity
Science Score: 23.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
○.zenodo.json file
-
○DOI references
-
✓Academic publication links
Links to: arxiv.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (9.7%) to scientific vocabulary
Repository
Battery Opportunity Cost Minimisation
Basic Info
- Host: GitHub
- Owner: Battery-Intelligence-Lab
- License: bsd-3-clause
- Language: MATLAB
- Default Branch: main
- Size: 14.3 MB
Statistics
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
- Releases: 0
Metadata Files
README.md
BatteryOpportunity
Battery Opportunity Cost Minimisation
This is a study to understand the value of battery degradation for energy arbitrage operation. It involves a toy model and long-term rolling horizon optimisation. For detailed information please refer to the paper:
Depreciation Cost is a Poor Proxy for Revenue Lost to Aging in Grid Storage Optimization
Kumtepeli, Volkan and Hesse, Holger and Morstyn, Thomas and Nosratabadi, Seyyed Mostafa and Aunedi, Marko and Howey, David. A.
Also see the project website: EPSRC-DIGEST

Abstract
Dispatch of a grid energy storage system for arbitrage is typically formulated into a rolling-horizon optimization problem that includes a battery aging model within the cost function. Quantifying degradation as a depreciation cost in the objective can increase overall profits by extending lifetime. However, depreciation is just a proxy metric for battery aging; it is used because simulating the entire system life is challenging due to computational complexity and the absence of decades of future data. In cases where the depreciation cost does not match the loss of possible future revenue, different optimal usage profiles result and this reduces overall profit significantly compared to the best case (e.g., by 30–50%). Representing battery degradation perfectly within the rollinghorizon optimization does not resolve this—in addition, the economic cost of degradation throughout life should be carefully considered. For energy arbitrage, optimal economic dispatch requires a trade-off between overuse, leading to high return rate but short lifetime, vs. underuse, leading to a long but not profitable life. We reveal the intuition behind selecting representative costs for the objective function, and propose a simple moving average filter method to estimate degradation cost. Results show that this better captures peak revenue, assuming reliable price forecasts are available.
Files to run:
sensitivity_analysis.py: Runs sensitivity analysessensitivity_analysis_gurobipy.py: Nearly same assensitivity_analysis.pybut uses gurobipy library instead of cvxpy.
Dependencies
This library uses Python for optimisation and MATLAB for plotting. Unfortunately, I am better at plotting in MATLAB and didn't have much time to recreate MATLAB plotting functions in Python.
MATLAB:
https://github.com/StackOverflowMATLABchat/coordinate2normalized
Python:
See requirements.txt
Owner
- Name: Battery Intelligence Lab
- Login: Battery-Intelligence-Lab
- Kind: organization
- Website: https://howey.eng.ox.ac.uk
- Repositories: 17
- Profile: https://github.com/Battery-Intelligence-Lab
GitHub Events
Total
- Watch event: 3
Last Year
- Watch event: 3
Dependencies
- cvxpy *
- itertools *
- matplotlib *
- scikit-learn *