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.
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.
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.
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
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-forecastingAlternatively, use a Python 3.9 virtual environment:
python -m pip install --upgrade pip
python -m pip install -r requirements.txtThe 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.
The following command checks the archived monthly results without importing TensorFlow or retraining any model:
python verify_package.pyAfter placing T1.csv in data/, also verify its checksum:
python verify_package.py --require-dataRun all commands from the package root.
python verify_package.py --require-dataThis 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 --forceFor a single month:
python archived_proposed_results/run_12_month_generalization_seed_reset.py --months 4 --forceThe 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 --forceTo validate the required inputs without training:
python comparison_experiment/run_comparison_experiment.py --validate-onlyTo regenerate only the aggregate CSV files from monthly results:
python comparison_experiment/run_comparison_experiment.py --aggregate-onlyThe ablation script does not retrain models. It assembles the five ablation stages from the archived monthly results:
python ablation_experiment/run_ablation_experiment.pyThis script retrains the April models and may take substantial time:
python comparison_experiment/generate_april_step_figures.pyThe figures and their supporting CSV files are written to
comparison_experiment/april_step_visualization/.
- 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.
comparison_experiment/all_months_horizon_results.csvcomparison_experiment/all_months_model_summary.csvcomparison_experiment/overall_model_summary.csvablation_experiment/all_months_horizon_results.csvablation_experiment/all_months_model_summary.csvablation_experiment/overall_model_summary.csvablation_experiment/ablation_step_improvements.csv
The monthly folders contain the horizon-level source results used to build these summary files.
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.
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.
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.