Skip to main content

Python Network Net Load Forecasting (PyNNLF): reproducible evaluation of net load forecasting models.

Project description

Welcome to PyNNLF

PyNNLF (Python for Network Net Load Forecast) is a tool to evaluate net load forecasting model performance in a reliable and reproducible way.

This tool evaluates net load forecasting models aiming to make new net load forecasting research more reliable and reproducible. It includes a library of public net load datasets and common forecasting models, including simple benchmark models. Users input the forecast problem and model specification, and the tool outputs evaluation results. It also allows users to add datasets, models, and modify hyperparameters. Researchers claiming a new or superior model can compare their model with existing ones on public datasets. The target audience includes researchers working in academia or industry focusing on evaluating and optimizing net load forecasting models.

A visual illustration of the tool's workflow is shown below.

Home Illustration

Input

  1. Forecast Target: Dataset and forecast horizon defined in the YAML spec at example_project/specs/experiment.yaml.
  2. Model Specification: Model and hyperparameters defined in the YAML spec at example_project/specs/experiment.yaml.

Output

  1. a1_experiment_result.csv – Contains accuracy (cross-validated test n-RMSE), stability (accuracy standard deviation), and training time.
  2. a2_hyperparameter.csv – Lists the hyperparameters used for each model.
  3. a3_cross_validation_result.csv – Detailed results for each cross-validation split.
  4. cv_plots/ – Folder with plots including:
    • Observation vs forecast (time plot)
    • Observation vs forecast (scatter plot)
    • Residual time plot
    • Residual histogram
  5. cv_test/ and cv_train/ – Folders containing time series of observations, forecasts, and residuals for each cross-validation split.

Tool Output Naming Convention

Format: [experiment_no][experiment_date][dataset][forecast_horizon][model]_[hyperparameter]

Example: E00001_250915_ds0_fh30_m6_lr_hp1

Installation Instruction

  1. Install the package: On macOS, use python3/pip3 if python/pip are not available.
python -m pip install pynnlf

How to Use The Tool

  1. Initialize a workspace in any directory you want (example name: my_project). By default, only the sample dataset (ds0) is included. You can choose to download all datasets if needed: On macOS, use python3 -c if python -c is not available.
python -c "import pynnlf; pynnlf.init('my_project')"
  1. Set up your experiment in example_project/specs/experiment.yaml.
  2. Run the experiment:
python -c "import pynnlf; pynnlf.run_experiment('my_project/specs/experiment.yaml')"
  1. View results under example_project/experiment_result.

CI

CI (Continuous Integration) is automated testing that runs on code changes. CI is available to run smoke tests on 3 models and check whether results fall within the standard benchmark.

Output

The tool will output the evaluation result in example_project/experiment_result as one folder.

Full Documentation

Detailed documentation including examples, testing, detailed guide, API reference, features & limitations, etc. can be seen here. PyNNLF Documentation

Acknowledgements

This project is part of Samhan's PhD study, supported by the University International Postgraduate Award (UIPA) Scholarship from UNSW, the Industry Collaboration Project Scholarship from Ausgrid, and the RACE for 2030 Scholarship. We also acknowledge Solcast and the Australian Bureau of Meteorology (BOM) for providing access to historical weather datasets for this research. We further acknowledge the use of Python libraries including Pandas, NumPy, PyTorch, Scikit-learn, XGBoost, Prophet, Statsmodels, and Matplotlib. Finally, we thank the reviewers and editor of the Journal of Open Source Software for their valuable feedback and guidance.

The authors declare that they have no competing financial, personal, or professional interests related to this work.

Contributors

  • M. Syahman Samhan (m.samhan@unsw.edu.au): Lead developer and researcher. Responsible for conceptualization, implementation, documentation, and experimentation.
  • Anna Bruce: Supervisor. Provided guidance on research direction and methodology.
  • Baran Yildiz: Supervisor. Provided guidance on research direction and methodology.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pynnlf-0.2.2.tar.gz (80.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pynnlf-0.2.2-py3-none-any.whl (96.2 kB view details)

Uploaded Python 3

File details

Details for the file pynnlf-0.2.2.tar.gz.

File metadata

  • Download URL: pynnlf-0.2.2.tar.gz
  • Upload date:
  • Size: 80.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for pynnlf-0.2.2.tar.gz
Algorithm Hash digest
SHA256 e1cff7d666954af5bb4d81dd5db751924312cab320b02913fbaea1dbf8543f8b
MD5 7e81cbbe78c2add1a12e02c90e9e0300
BLAKE2b-256 4aeeaa05f47d75cb590769f308394f058a93e64b572ee005e2a98c23e46ca811

See more details on using hashes here.

File details

Details for the file pynnlf-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: pynnlf-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 96.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for pynnlf-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 03392fac7ce6d780b0c005656a40d3957baf85f7e48323240a9be53616323b92
MD5 700d4b6adbfbb449e75933012ad0952d
BLAKE2b-256 52cd0d7adb2b6c28f704f4488d625019a36be6211b38e52b0f07ec3b9ed6d308

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page