SolarSys: Scalable Hierarchical Coordination for Distributed Solar Energy

SolarSys is a novel Hierarchical Multi-Agent Reinforcement Learning (HRL) system designed to manage energy storage and peer-to-peer (P2P) trading across large communities of solar-equipped residences. This repository contains the full source code for the SolarSys system, including the trained policies, the custom Gym environment, and the hierarchical diffusion model used for data generation.


System Architecture

The core of SolarSys is a two-level decision hierarchy:

  1. Low-Level (Intra-Cluster): Individual households use a MAPPO agent to make instantaneous decisions (charge, discharge, local P2P trade, grid trade) based on local meter readings and price signals.
  2. High-Level (Inter-Cluster): Cluster Managers use a Mean-Field policy to coordinate bulk energy transfers between clusters, ensuring the overall system remains balanced against grid constraints.

SolarSys Hierarchical Architecture


Data Generation Framework

To enable large-scale simulation with realistic temporal dynamics, SolarSys includes a Hierarchical Diffusion Model for generating synthetic, long-duration energy profiles that maintain both long-term (seasonal/monthly) and short-term (daily/hourly) characteristics.

  • Model: Hierarchical Diffusion U-Net
  • Input: Location based housing dataset(eg. Ausgrid dataset, newyork dataset)
  • Output: High-resolution time series for Grid Usage and Solar Generation (kWh). Hierarchical Diffusion Framework

To ensure all necessary libraries are available, install dependencies using the provided requirements.txt file:

pip install -r requirements.txt
---

## Repository Structure

The project is organized into core modules and data folders.

```tree
SolarSys_Hugging_face/
β”œβ”€β”€ assets/                             
β”œβ”€β”€ requirements.txt                    # Project Dependencies
β”œβ”€β”€ Dataset/                            # Energy Data (Raw, Processed, and Synthetic)
β”‚   β”œβ”€β”€ Data/                           
β”‚   β”‚   β”œβ”€β”€ Ausgrid_processed_data.zip  # Processed data (Australia)
β”‚   β”‚   β”œβ”€β”€ Ausgrid_raw_data/
β”‚   β”‚   └── Pecan_street_processed_data.zip # Processed data (US)
β”‚   └── Generated_Data.zip              # Example synthetic data (2000 agents)
β”œβ”€β”€ Data_generation_tool_kit/           # Hierarchical Diffusion Model Code
β”‚   β”œβ”€β”€ Hier_diffusion_energy/
β”‚   β”‚   β”œβ”€β”€ hierarchial_diffusion_model.py # H-Diffusion U-Net Architecture
β”‚   β”‚   └── global_scaler.gz            # Global normalization scaler, please delete and rerun if had problem
β”‚   β”œβ”€β”€ dataloader.py                   # 
β”‚   β”œβ”€β”€ train.py                        # Diffusion model training script
β”‚   └── generate.py                     # Script to generate long-term sequences
β”œβ”€β”€ Models/                             # Trained RL Policies for trial, please retrain your model for best results
β”‚   β”œβ”€β”€ 100agents_10size/
β”‚   β”‚   └── models/
β”‚   β”‚       β”œβ”€β”€ inter_ep10000.pth       # High-Level (Inter-Cluster) policy
β”‚   β”‚       └── low_clusterX_ep10000.pth # Low-Level (Intra-Cluster) policies
β”‚   └── (Additional scaling folders)    # e.g., 5agents_5size/, 1000agents_20size/, etc.
β”œβ”€β”€ SolarSys/                           # SolarSys Implementation (MAPPO + MeanField)
β”‚   β”œβ”€β”€ Environment/
β”‚   β”‚   β”œβ”€β”€ cluster_env_wrapper.py      # Vectorized environment wrapper
β”‚   β”‚   └── solar_sys_environment.py    # Core Gym environment definition
β”‚   β”œβ”€β”€ mappo/                          # MAPPO policy definition (Intra-Cluster)
β”‚   β”‚   └── trainer/
β”‚   β”‚       └── mappo.py                # MAPPO algorithm
β”‚   β”œβ”€β”€ meanfield/                      # MeanField policy definition (Inter-Cluster)
β”‚   β”‚   └── trainer/
β”‚   β”‚       └── meanfield.py            # MeanField algorithm core
β”‚   β”œβ”€β”€ cluster.py                      # Inter-Cluster Coordinator logic
β”‚   β”œβ”€β”€ training_freezing.py            # Main SolarSys HRL training script
β”‚   └── cluster_evaluation.py           # Evaluation script for SolarSys
└── Other_algorithms/                   # Baselines 
    β”œβ”€β”€ HC_MAPPO/                       # Hierarchical Cluster MAPPO 
    β”‚   β”œβ”€β”€ Environment/
    β”‚   β”œβ”€β”€ HC_MAPPO_train.py           # Training script for HC-MAPPO
    β”‚   └── HC_MAPPO_evaluation.py      # Evaluation script for HC-MAPPO
    └── Flat_System/                    # Flat Baselines 
        β”œβ”€β”€ maddpg/                     # Multi-Agent DDPG
        β”‚   β”œβ”€β”€ maddpg_train.py
        β”‚   └── maddpg_evaluation.py
        β”œβ”€β”€ mappo/                      # Flat MAPPO
        β”‚   β”œβ”€β”€ mappo_train.py
        β”‚   └── mappo_evaluation.py
        β”œβ”€β”€ meanfield/                  # Flat MeanField Actor-Critic (MFAC)
        β”‚   β”œβ”€β”€ meanfield_train.py
        β”‚   └── meanfield_evaluation.py
        β”œβ”€β”€ PG/                         # Policy Gradient (PG)
        β”‚   β”œβ”€β”€ pg_train.py
        β”‚   └── pg_evaluation.py
        └── solar_sys_environment.py    # Copy of the flat environment for baselines
Downloads last month

-

Downloads are not tracked for this model. How to track
Video Preview
loading