Skip to content

Repository files navigation

CEEMDAN-AdaptiveEWT-DualChannelGRU

Official implementation and archived experiment results for:

Multi-Step Wind Power Forecasting via CEEMDAN-Based Adaptive EWT and a Frequency-Selective Dual-Channel GRU

Repository: https://github.com/linxuanbin/CEEMDAN-AdaptiveEWT-DualChannelGRU

This package contains the experiment code and archived numerical results used for the twelve-month comparative and ablation studies reported in the manuscript.

Reproducibility Scope

The repository provides:

  • source code for the proposed-model family, comparative experiments, and ablation analysis;
  • the recorded software environment and deterministic seed configuration;
  • archived horizon-level and monthly numerical results used to construct the manuscript tables and figures;
  • dataset acquisition instructions and a SHA-256 checksum; and
  • a package-integrity checker that can be run before model training.

The third-party SCADA dataset is not redistributed. Users must download it from the public source described below. Exact numerical equality can still depend on hardware, low-level numerical libraries, and GPU determinism; the archived results are included to make the reported aggregation and evaluation traceable.

Package Structure

CEEMDAN-AdaptiveEWT-DualChannelGRU/
|-- README.md
|-- requirements.txt
|-- environment.yml
|-- verify_package.py
|-- data/
|   `-- README.md
|-- comparison_experiment/
|   |-- run_comparison_experiment.py
|   |-- generate_april_step_figures.py
|   |-- month_01/ ... month_12/
|   `-- april_step_visualization/
|-- archived_proposed_results/
|   |-- run_12_month_generalization_seed_reset.py
|   `-- month_01/ ... month_12/
`-- ablation_experiment/
    `-- run_ablation_experiment.py

The archived monthly CSV files are retained because the comparative and ablation summaries reuse the seed-controlled results of the decomposition-based models. The scripts use paths relative to this package and do not depend on the original development computer.

Dataset

The experiments use T1.csv from the public Wind Turbine SCADA Dataset:

https://www.kaggle.com/datasets/berkerisen/wind-turbine-scada-dataset

The original Kaggle page currently reports an unspecified license. To avoid redistributing a third-party dataset with unclear reuse terms, T1.csv is not included in this archive. Download the dataset from the link above and place it at:

data/T1.csv

The expected file metadata is:

Rows: 50,530 data records
SHA-256: 19837D3B1BFA20089E23093A51965B30BA2FE3125BFB96285CA25D213B8BDBA8

Environment

The recorded experiment environment is Python 3.9.25. The package versions in requirements.txt were recovered directly from the Conda environment used for the original experiments. Create the environment with Conda:

conda env create -f environment.yml
conda activate wind-power-forecasting

Alternatively, use a Python 3.9 virtual environment:

python -m pip install --upgrade pip
python -m pip install -r requirements.txt

The recorded environment passed pip check without broken requirements. These versions are retained to document the software configuration that produced the archived results rather than replacing it with a newly inferred environment.

Quick Integrity Check

The following command checks the archived monthly results without importing TensorFlow or retraining any model:

python verify_package.py

After placing T1.csv in data/, also verify its checksum:

python verify_package.py --require-data

Reproduction Workflow

Run all commands from the package root.

1. Validate inputs and archived results

python verify_package.py --require-data

2. Reproduce the proposed-model family

This is the computationally expensive stage. It trains the fixed/adaptive EWT and single-/dual-channel recurrent variants for all twelve months:

python archived_proposed_results/run_12_month_generalization_seed_reset.py --force

For a single month:

python archived_proposed_results/run_12_month_generalization_seed_reset.py --months 4 --force

3. Reproduce the comparative experiment

The script trains SVR, XGBoost, LSTM, GRU, BiGRU, and CEEMDAN-GRU, then combines them with the archived CEEMDAN-EWT-LSTM and proposed-model results:

python comparison_experiment/run_comparison_experiment.py --force

To validate the required inputs without training:

python comparison_experiment/run_comparison_experiment.py --validate-only

To regenerate only the aggregate CSV files from monthly results:

python comparison_experiment/run_comparison_experiment.py --aggregate-only

4. Regenerate the ablation summaries

The ablation script does not retrain models. It assembles the five ablation stages from the archived monthly results:

python ablation_experiment/run_ablation_experiment.py

5. Regenerate the April figures

This script retrains the April models and may take substantial time:

python comparison_experiment/generate_april_step_figures.py

The figures and their supporting CSV files are written to comparison_experiment/april_step_visualization/.

Experimental Configuration

  • Chronological split within each month: 70% training, 10% validation, 20% test.
  • Input window: 12 observations.
  • Direct forecast horizon: 6 observations.
  • Neural-network optimizer: Adam, learning rate 0.001.
  • Batch size: 64.
  • Maximum epochs: 200.
  • Early-stopping patience: 15 epochs.
  • Scalers: fitted on the training segment and reused for validation and test.
  • Base random seed: 1234 with deterministic month/component-specific offsets.

Main Result Files

  • comparison_experiment/all_months_horizon_results.csv
  • comparison_experiment/all_months_model_summary.csv
  • comparison_experiment/overall_model_summary.csv
  • ablation_experiment/all_months_horizon_results.csv
  • ablation_experiment/all_months_model_summary.csv
  • ablation_experiment/overall_model_summary.csv
  • ablation_experiment/ablation_step_improvements.csv

The monthly folders contain the horizon-level source results used to build these summary files.

Citation

If this repository supports your research, please cite the accompanying manuscript. Formal journal citation details will be added after publication. The repository also includes a CITATION.cff file for GitHub's citation interface.

Repository Versioning

The manuscript submission should be associated with a fixed Git tag and GitHub release, such as v1.0.0, so that later code updates do not change the version used to produce the reported results.

License

This project is licensed under the GNU General Public License v3.0. See LICENSE for the complete terms. Modified and redistributed versions must remain available under the same license.

About

Reproducibility code and archived results for CEEMDAN-based adaptive EWT and frequency-selective dual-channel GRU wind power forecasting.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages