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
Last synced: 10 months ago · JSON representation

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
Created almost 3 years ago · Last pushed almost 2 years ago
Metadata Files
Readme License

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 analyses
  • sensitivity_analysis_gurobipy.py: Nearly same as sensitivity_analysis.py but 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:

Python:

See requirements.txt

Owner

  • Name: Battery Intelligence Lab
  • Login: Battery-Intelligence-Lab
  • Kind: organization

GitHub Events

Total
  • Watch event: 3
Last Year
  • Watch event: 3

Dependencies

requirements.txt pypi
  • cvxpy *
  • itertools *
  • matplotlib *
  • scikit-learn *