{"id":50311044,"url":"https://github.com/sileneer/nrp_2022_eee12","last_synced_at":"2026-05-28T21:01:07.660Z","repository":{"id":129091542,"uuid":"566244179","full_name":"sileneer/NRP_2022_EEE12","owner":"sileneer","description":"LSTM and GRU model to predict the SOH of the batteries","archived":false,"fork":false,"pushed_at":"2025-08-22T00:10:06.000Z","size":29989,"stargazers_count":57,"open_issues_count":1,"forks_count":9,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-08-22T02:26:53.836Z","etag":null,"topics":["electrical-engineering","electronics-engineering","gru","lstm","machine-learning","python"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sileneer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-11-15T09:11:03.000Z","updated_at":"2025-08-22T00:08:06.000Z","dependencies_parsed_at":"2024-11-19T23:33:49.118Z","dependency_job_id":null,"html_url":"https://github.com/sileneer/NRP_2022_EEE12","commit_stats":{"total_commits":42,"total_committers":4,"mean_commits":10.5,"dds":0.5,"last_synced_commit":"9e1e12814b3d351ba02788482ccc207a10c2ea5c"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sileneer/NRP_2022_EEE12","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sileneer%2FNRP_2022_EEE12","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sileneer%2FNRP_2022_EEE12/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sileneer%2FNRP_2022_EEE12/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sileneer%2FNRP_2022_EEE12/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sileneer","download_url":"https://codeload.github.com/sileneer/NRP_2022_EEE12/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sileneer%2FNRP_2022_EEE12/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33626142,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-28T02:00:06.440Z","response_time":99,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["electrical-engineering","electronics-engineering","gru","lstm","machine-learning","python"],"created_at":"2026-05-28T21:00:53.826Z","updated_at":"2026-05-28T21:01:07.646Z","avatar_url":"https://github.com/sileneer.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Data-Driven Method for Li-Ion Battery Health Monitoring\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Python 3.10](https://img.shields.io/badge/python-3.10-blue.svg)](https://www.python.org/downloads/release/python-3100/)\n[![PyTorch](https://img.shields.io/badge/PyTorch-2.7.0-orange.svg)](https://pytorch.org/)\n\n## Table of Contents\n\n- [Description](#description)\n- [Key Features](#key-features)\n- [Prerequisites](#prerequisites)\n- [Getting Started](#getting-started)\n  - [Download the Dataset](#download-the-dataset)\n  - [Setup](#setup)\n- [Usage](#usage)\n- [Project Structure](#project-structure)\n- [Results](#results)\n- [Contributing](#contributing)\n- [Credits](#credits)\n- [Acknowledgement](#acknowledgement)\n- [Star History](#star-history)\n\n## Description \n\nLi-Ion batteries are increasingly being used due to sustainable development goals and the numerous benefits they provide compared to other battery technologies. Accurate prediction of State-of-Health (SOH) for Li-Ion batteries has become critically important, and data-driven online SOH prediction models offer an efficient approach to address this challenge.\n\n**We propose a simple yet effective machine learning framework utilizing Long Short-Term Memory (LSTM) and Gated Recurrent Unit (GRU) models for SOH prediction, addressing the common issues of high complexity, low interpretability, and high training costs. Our GRU-based predictions demonstrate high accuracy with an average Root Mean Squared Error (RMSE) of 0.724%.**\n\n## Key Features\n\n- 🔋 **Battery Health Monitoring**: Advanced SOH prediction for Li-Ion batteries\n- 🧠 **Deep Learning Models**: Implementation of LSTM and GRU architectures\n- 📊 **High Accuracy**: Achieves 0.724% RMSE with GRU model\n- 📈 **Data-Driven Approach**: Utilizes real battery degradation data\n- 🚀 **Easy to Use**: Simple setup and execution with Jupyter notebooks\n- 📚 **Well Documented**: Comprehensive documentation and examples\n\n## Prerequisites\n\nBefore you begin, ensure you have the following installed:\n\n- **Python 3.10** or higher\n- **Jupyter Notebook** or **JupyterLab**\n- **Git** (for cloning the repository)\n- At least **4GB RAM** (recommended for dataset processing)\n- **500MB disk space** for dataset and dependencies\n\n## Getting Started\n\n### Download the Dataset\n\nThis project uses the open source [Oxford Battery Degradation Dataset 1](https://ora.ox.ac.uk/objects/uuid:03ba4b01-cfed-46d3-9b1a-7d4a7bdf6fac) [1].\n\n\u003e **Important**: These data are copyright (c) 2017, The Chancellor, Masters and Scholars of the University of Oxford, and the 'Oxford Battery Degradation Dataset 1' researchers. All rights reserved.\n\n\u003e The dataset is made available under the [Open Database License](http://opendatacommons.org/licenses/odbl/1.0/) with individual contents licensed under the [Database Contents License](http://opendatacommons.org/licenses/dbcl/1.0/).\n\n**Steps to download:**\n\n1. Visit the [dataset download page](https://ora.ox.ac.uk/objects/uuid:03ba4b01-cfed-46d3-9b1a-7d4a7bdf6fac/files/m5ac36a1e2073852e4f1f7dee647909a7)\n2. Download the file `Oxford_Battery_Degradation_Dataset_1.mat` (⚠️ **262MB file**)\n3. Place the downloaded file in the `./datasets/` directory\n\n📝 **Note**: The [dataset readme file](https://github.com/sileneer/NRP_2022_EEE12/blob/main/datasets/Readme.txt) contains detailed information about the data structure and format.\n\n### Setup\n\nFollow these steps to set up your development environment:\n\n1. **Clone the repository:**\n   ```bash\n   git clone https://github.com/sileneer/NRP_2022_EEE12.git\n   cd NRP_2022_EEE12\n   ```\n\n2. **Create a virtual environment:**\n   ```bash\n   python3.10 -m venv venv\n   source venv/bin/activate  # On Windows: venv\\Scripts\\activate\n   ```\n\n3. **Install dependencies:**\n   ```bash\n   pip install -r requirements.txt\n   ```\n\n4. **Launch Jupyter Notebook:**\n   ```bash\n   jupyter notebook\n   ```\n\n## Usage\n\nOnce you have completed the setup and downloaded the dataset:\n\n1. **Open the main notebook:**\n   - Launch Jupyter Notebook: `jupyter notebook`\n   - Open `main_torch.ipynb`\n\n2. **Run the analysis:**\n   - Execute cells sequentially to load data, train models, and generate predictions\n   - The notebook includes both LSTM and GRU model implementations\n   - Results and visualizations will be generated inline\n\n3. **Model Training:**\n   - The notebook automatically loads the Oxford dataset\n   - Preprocessing steps include data normalization and sequence preparation\n   - Both LSTM and GRU models are trained and compared\n\n## Project Structure\n\n```\nNRP_2022_EEE12/\n├── datasets/                    # Dataset directory\n│   ├── Readme.txt              # Dataset documentation\n│   └── Oxford_Battery_...mat   # Main dataset (download required)\n├── literature_reviews/         # Research papers and references\n├── saved_models/              # Trained model checkpoints\n├── main_torch.ipynb          # Main analysis notebook\n├── requirements.txt          # Python dependencies\n├── README.md                # This file\n└── LICENCE                  # MIT License\n```\n\n## Results\n\nOur machine learning framework demonstrates excellent performance in predicting Li-Ion battery State-of-Health:\n\n- **GRU Model Performance**: \n  - Average RMSE: **0.724%**\n  - High accuracy in SOH prediction\n  - Efficient training time\n  \n- **LSTM Model Performance**:\n  - Competitive accuracy\n  - Good generalization across different battery cells\n\nThe models successfully address common challenges in battery health monitoring:\n- ✅ **Low Complexity**: Simple architecture easy to understand and implement\n- ✅ **High Interpretability**: Clear model behavior and prediction rationale  \n- ✅ **Low Training Cost**: Efficient training process with minimal computational requirements\n\n## Contributing\n\nContributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.\n\nIf you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag \"enhancement\".\nDon't forget to give the project a star! Thanks again!\n\n**How to contribute:**\n\n1. **Fork the Project**\n2. **Create your Feature Branch** (`git checkout -b feature/AmazingFeature`)\n3. **Commit your Changes** (`git commit -m 'Add some AmazingFeature'`)\n4. **Push to the Branch** (`git push origin feature/AmazingFeature`)\n5. **Open a Pull Request**\n\n## Credits\n\nThis project uses the following open source libraries and frameworks:\n\n- **[PyTorch](https://pytorch.org/)** - Deep learning framework for model implementation\n- **[NumPy](https://numpy.org/)** - Numerical computing library\n- **[Pandas](https://pandas.pydata.org/)** - Data manipulation and analysis\n- **[Matplotlib](https://matplotlib.org/)** - Plotting and visualization\n- **[Scikit-learn](https://scikit-learn.org/)** - Machine learning utilities\n- **[SciPy](https://scipy.org/)** - Scientific computing library\n\n## Acknowledgement \n\nThis project is licensed under the [MIT License](https://github.com/sileneer/NRP_2022_EEE12/blob/main/LICENCE).\n\nWe extend our sincere appreciation to **David Howey** and **Christoph Birkl** for their invaluable work in collecting the `Oxford_Battery_Degradation_Dataset_1` and their ongoing research contributions. Their work can be found at: https://scholar.google.co.uk/citations?hl=en\u0026user=AZdBXIkAAAAJ\u0026view_op=list_works\u0026sortby=pubdate\n\n### References\n\n[1] Christoph R. Birkl, \"Diagnosis and Prognosis of Degradation in Lithium-Ion Batteries\", PhD thesis, Department of Engineering Science, University of Oxford, 2017.\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=sileneer/NRP_2022_EEE12\u0026type=Date)](https://star-history.com/#sileneer/NRP_2022_EEE12\u0026Date) \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsileneer%2Fnrp_2022_eee12","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsileneer%2Fnrp_2022_eee12","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsileneer%2Fnrp_2022_eee12/lists"}