This project implements a deep learning model to forecast the active power generated by photovoltaic (PV) solar panels, with the aim of achieving minimal errors and a high R².
Building upon the model described in [3], I applied data-processing steps from that work and then enhanced the architecture by integrating Variational Mode Decomposition (VMD) into the flow of the existing Seasonal‑Trend decomposition using LOESS (STL) → Parallel [TimesNet + BiLSTM] model.
- VMD (Variational Mode Decomposition) – Extracts intrinsic signal modes.
- STL (Seasonal-Trend decomposition using LOESS) – Separates trend, seasonality, and residuals.
- TimesNet – advanced times series model to capture multi-scale patterns.
- BiLSTM (Bidirectional Long Short-Term Memory) – Processes sequential data in both time directions for prediction.
- Source: Desert Knowledge Australia Solar Centre (DKASC) [1]
- Source: Solar station site 8 (Nominal capacity-30MW) [2]
Source: Figshare [2]
- Data processing notebook:
/notebooks/Study_data_figshare.ipynb - Processed dataset:
/data/processed/dataset_figshare_modified.csv - Data split: 60 % training, 20 % validation, 20 % test
Source: DKASC [1]
- Several features were rejected: Current_Phase_Average_Mean, Weather_Daily_Rainfall, Hail_Accumulation, Wind_Direction, and Air_Pressure.
- The feature Active_Energy_Delivered_Received was modified to only include the “Received” portion (renamed Active_Energy_Received).
- Data processing notebook:
/notebooks/Modify_data_Yulara.ipynb - Processed dataset:
/data/processed/dataset_Laundry_modified.csv - Data split: 60 % training, 20 % validation, 20 % test
Hardware configuration
- GPU: NVIDIA GeForce RTX 3050
- CUDA version: 13.0
- OS: Ubuntu 22.04
- RAM: 15 GB
Main libraries & frameworks
- PyTorch – deep learning
- Pandas – data management
- NumPy – linear algebra
- Matplotlib – visualization
- Scikit-learn – preprocessing & metrics
- Statsmodels – STL decomposition
- tqdm – progress tracking
Model settings
- Optimizer: Adam
- Loss: MSE
- No early stopping
- Lookback (sequence_length): 48
- Prediction horizon (prediction_length): 1 (i.e., 15 minutes)
Parameters can be modified in /configs/parameters.yaml for new experiments.
- Check the requirements.txt
pip install -r requirements.txt- To train and evaluate a new model
python src/app/main.py[1] Desert Knowledge Australia Solar Centre, “327.6kw, poly-si, fixed, 2016, laundry,” https://dkasolarcentre.com.au/source/yulara/yulara-4-fixed-laundry, 2025.
[2] Chen, Yongbao (2021). Solar and wind power data from the Chinese State Grid Renewable Energy Generation Forecasting Competition. figshare. Dataset. https://doi.org/10.6084/m9.figshare.17304221.v4
[3] J. Gong and et.al, “Parallel timesnet-bilstm model for ultra-short-term photovoltaic power forecasting using stl decomposition and auto-tuning,” Energy, vol. 320, p. 135286, 2025.
