MillendRoy / A3C-based-Islanding-Detection

1 stars 0 forks source link

A3C Reinforcement Learning for Islanding Detection

This repository contains the implementation of an Asynchronous Advantage Actor-Critic (A3C) reinforcement learning model from scratch for islanding detection in a power grid. The model is trained to detect when part of the grid becomes an "island" and continues to operate independently. This repository focuses on implementing a reinforcement learning approach to enhance detection accuracy and speed.

Table of Contents

Project Overview

The project uses an A3C-based reinforcement learning approach to detect islanding in power grids. The main challenge is to identify situations where distributed generation continues to power a location despite disconnection from the grid.

The A3C algorithm is particularly well-suited for this task as it allows asynchronous updates and trains multiple agents in parallel, making the detection process faster and more efficient. This implementation includes:

A3C Algorithm Overview

The Asynchronous Advantage Actor-Critic (A3C) algorithm is a reinforcement learning algorithm that uses multiple agents interacting with different environments in parallel. Each agent learns both a policy (the "Actor") and a value function (the "Critic"). These agents contribute asynchronously to the global policy, which is then updated periodically. A3C is known for its fast convergence and scalability, especially in environments like this where real-time detection is critical.

Key features of the A3C algorithm:

Files in the Repository

How to Run

  1. Clone the repository to your local machine:

    
    git clone https://github.com/millendroy/your-repo-name.git
  2. Install the required dependencies:

    
      pip install -r requirements.txt
  3. Prepare the dataset: Ensure that overall.csv is placed in the appropriate directory.

  4. Run the A3C training script:

    
    python main.py
  5. After training, evaluate the model's performance on test data:

    
    python testt.py
  6. You can tweak hyperparameters (learning rates, discount factors, etc.) in the respective scripts to experiment with performance.

Technologies Used

Future Work

Contributions are welcome! If you'd like to contribute:

  1. Fork the repository.
  2. Create a new branch (git checkout -b feature-branch).
  3. Commit your changes (git commit -m 'Add new feature').
  4. Push to the branch (git push origin feature-branch).
  5. Open a pull request and describe your changes.

Thank you for checking out the project! Feel free to star the repository and share any feedback.