Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (8.8%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

Basic Info
  • Host: GitHub
  • Owner: paulinash
  • License: mit
  • Language: Jupyter Notebook
  • Default Branch: main
  • Size: 37.7 MB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created about 1 year ago · Last pushed 9 months ago
Metadata Files
Readme License Citation

README.md

Intra-Day Scheduling of Residential PV Battery Systems

License: MIT

This repository contains the Python implementation for the master's thesis:

[Multi-Objective Optimization for Intra-Day Scheduling of Residential PV Battery Systems]
Author: Paulina Hering

Repository Structure

``` . ├── forecasting/ │ ├── createquantileforecasts.ipynb # Create quantile prosumption forecasts based on real-world data │ ├── convertforecasts.ipynb # Convert quantile forecasts to parametric form │ ├── getinfinitehorizonforecasts.ipynb # Convert quantile forecasts to parametric form for every starting hour │ ├── visualizeforecasts.ipynb # Visualize forecasts PDFs for every starting hour │ └── visualizedata.ipynb # Visualize forecasted PDFs

│ ├── data/ │ ├── groundtruth/ # Contains the ground-truth of prosumption of selected │ ├── electricitycosts # Contains electricity costs for selected time interval to include in future works

real-world example │ ├── quantileforecasts/ # Contains the quantile forecasts │ ├── parametricforecasts/ # Contains parametric forecasts for gaussian distribution and every starting hour │ └── parameters/ # Contains json files with params such as cost-function weights, battery specifications, ... │ └── optimization/ ├── inputdata.py # Load forecasts and parameters ├── experimenttracking.py # Tracks the experiment in MLFlow ├── optimizationmodel.py # Contains the optimization problem ├── intradayoptimizationmodel.py # Contains the optimization problem for intra-Day run ├── epsilonconstoptimizationmodel.py # Contains the optimization problem for Intra-Day in epsilon constraint form ├── intradaysolve.py # Contains functions that handle the structure of Intra-Day Scheduling ├── visualizecosts.py # Manually takes cost values and plots results ├── main.py # Executes the optimization problem ├── resultsprocessing.py # Visualizes the results ├── intradayresultsprocessing.py # Visualizes results of Intra-Day run ├── paretofront.py # Runs consecutive and MOO runs and plots pareto fronts ├── intraday_utils.py # Contains utility functions for Intra-Day functionality └── utils.py # Contains utility functions such as parametric pdf implementations

```

Installation

  1. Install virtualenv pip install virtualenv
  2. Create a Virtual Environment virtualenv myenv
  3. Activate the Virtual Environment source myenv/Scripts/activate
  4. Install Packages specified in requirements-optimization.txt python -m pip install -r requirements-optimization.txt Furthermore, ensure that IPOPT is properly installed. For more information, see IPOPT

Execution

In order to start an optimization process, execute main.py. python optimization/main.py

Reproduce results

In order to reproduce the results shown in the paper, execute the optimization process with the corresponding parameter file. The necessary forecasts are included in the repository.
To run Intra-Day Scheduling set intradayapproach=True in main.py. To run and plot 3D Pareto fronts set multipleparetofronts=True in main.py Both Intra-Day Scheduling and 3D Pareto fronts can be run for any resolution (timeslots=[4,10] corresponds to scheduling at 6am (Day-Ahead), 10am and 8pm. Can be up to timeslots=time_slots = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23], Be aware that the cost values are only sensible for an hourly resolution [1,2,3...,23])

Day 1, Day 2 and Day 3 in thesis correspond to timeframe1, timeframe2, timeframe3 in main.py. The weights for MOO approach can be set as weights=[gridweights, ssweights] in line 67 in main.py

In order to reproduce the forecasts, the following steps need to be done: 1. Install corresponding forecasting requirements python -m pip install -r requirements-forecasting.txt 2. Execute createquantileforecasts.ipynb with the following specifications: - The forecast were generated seeded using a system with the following specs, os, python version: - Processor: Intel 13th Gen Core i9-13900 - Memory: 64 GB RAM - Graphics: NVIDIA GeForce RTX 3090 (Driver Version: 555.42.02 / CUDA Version: 12.5) - OS: Ubuntu 22.04.4 LTS - PYTHON: 3.12.5

Owner

  • Login: paulinash
  • Kind: user

Citation (CITATION.cff)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: >-
  Day-Ahead Battery Scheduling based on Mixed Random
  Variables
message: >-
  If you use this software, please cite it using the
  metadata from this file.
type: software
authors:
  - given-names: Janik
    family-names: Pinter
    email: janik.pinter@kit.edu
    affiliation: Karlsruhe Institute of Technology (KIT)
    orcid: 'https://orcid.org/0009-0000-4494-8416'
repository-code: 'https://github.com/JaMoPinter/Day-Ahead-Battery-Scheduling'
keywords:
  - Day-Ahead Battery Scheduling
  - Stochastic Optimization
  - Prosumer Integration
  - Mixed Random Variables
license: MIT
date-released: '2024-10-31'

GitHub Events

Total
  • Member event: 1
  • Push event: 25
  • Create event: 2
Last Year
  • Member event: 1
  • Push event: 25
  • Create event: 2

Dependencies

requirements-forecasting.txt pypi
  • Cython ==3.0.11
  • Flask ==3.0.3
  • Jinja2 ==3.1.4
  • Mako ==1.3.5
  • MarkupSafe ==2.1.5
  • PyYAML ==6.0.2
  • SQLAlchemy ==2.0.35
  • Werkzeug ==3.0.4
  • adagio ==0.2.6
  • aiohappyeyeballs ==2.4.0
  • aiohttp ==3.10.5
  • aiosignal ==1.3.1
  • alembic ==1.13.2
  • annotated-types ==0.7.0
  • appdirs ==1.4.4
  • arch ==7.0.0
  • attrs ==24.2.0
  • autots ==0.6.15
  • blinker ==1.8.2
  • certifi ==2024.8.30
  • charset-normalizer ==3.3.2
  • click ==8.1.7
  • cloudpickle ==3.0.0
  • cmdstanpy ==1.2.4
  • colorlog ==6.8.2
  • contourpy ==1.3.0
  • coreforecast ==0.0.12
  • cycler ==0.12.1
  • darts ==0.30.0
  • dash ==2.18.1
  • dash-core-components ==2.0.0
  • dash-html-components ==2.0.0
  • dash-table ==5.0.0
  • dtaidistance ==2.3.12
  • dtw-python ==1.5.3
  • filelock ==3.16.1
  • fonttools ==4.53.1
  • frozenlist ==1.4.1
  • fs ==2.4.16
  • fsspec ==2024.9.0
  • fugue ==0.9.1
  • gluonts ==0.15.1
  • greenlet ==3.1.0
  • holidays ==0.57
  • idna ==3.10
  • importlib_resources ==6.4.5
  • ipywidgets ==8.1.5
  • itsdangerous ==2.2.0
  • joblib ==1.4.2
  • jsonschema ==4.23.0
  • jsonschema-specifications ==2023.12.1
  • jupyterlab_widgets ==3.0.13
  • kiwisolver ==1.4.7
  • lazy_loader ==0.4
  • lightning-utilities ==0.11.7
  • llvmlite ==0.43.0
  • matplotlib ==3.9.2
  • mne ==1.8.0
  • mpmath ==1.3.0
  • msgpack ==1.1.0
  • multidict ==6.1.0
  • networkx ==3.3
  • neuralforecast ==1.7.5
  • nfoursid ==1.0.1
  • numba ==0.60.0
  • numpy ==1.26.4
  • nvidia-cublas-cu12 ==12.1.3.1
  • nvidia-cuda-cupti-cu12 ==12.1.105
  • nvidia-cuda-nvrtc-cu12 ==12.1.105
  • nvidia-cuda-runtime-cu12 ==12.1.105
  • nvidia-cudnn-cu12 ==9.1.0.70
  • nvidia-cufft-cu12 ==11.0.2.54
  • nvidia-curand-cu12 ==10.3.2.106
  • nvidia-cusolver-cu12 ==11.4.5.107
  • nvidia-cusparse-cu12 ==12.1.0.106
  • nvidia-nccl-cu12 ==2.20.5
  • nvidia-nvjitlink-cu12 ==12.6.68
  • nvidia-nvtx-cu12 ==12.1.105
  • optuna ==3.6.1
  • pandas ==2.2.2
  • patsy ==0.5.6
  • pillow ==10.4.0
  • plotly ==5.24.1
  • pmdarima ==2.0.4
  • polars ==1.7.1
  • pooch ==1.8.2
  • prophet ==1.1.5
  • protobuf ==5.28.2
  • pyaml ==24.7.0
  • pyarrow ==17.0.0
  • pycatch22 ==0.4.5
  • pydantic ==2.9.2
  • pydantic_core ==2.23.4
  • pyod ==2.0.2
  • pyparsing ==3.1.4
  • pytorch-lightning ==2.4.0
  • pytz ==2024.2
  • ray ==2.37.0
  • referencing ==0.35.1
  • requests ==2.32.3
  • retrying ==1.3.4
  • rpds-py ==0.20.0
  • scikit-base ==0.8.3
  • scikit-learn ==1.5.2
  • scikit-optimize ==0.10.2
  • scikit-posthocs ==0.9.0
  • scipy ==1.14.1
  • seaborn ==0.13.2
  • seasonal ==0.3.1
  • setuptools ==73.0.1
  • shap ==0.46.0
  • skforecast ==0.13.0
  • skpro ==2.5.1
  • sktime ==0.33.0
  • slicer ==0.0.8
  • stanio ==0.5.1
  • statsforecast ==1.7.8
  • statsmodels ==0.14.3
  • sympy ==1.13.3
  • tbats ==1.1.3
  • tenacity ==9.0.0
  • tensorboardX ==2.6.2.2
  • threadpoolctl ==3.5.0
  • toolz ==0.12.1
  • torch ==2.4.1
  • torchmetrics ==1.4.2
  • tqdm ==4.66.5
  • triad ==0.9.8
  • triton ==3.0.0
  • tzdata ==2024.1
  • u8darts ==0.30.0
  • urllib3 ==2.2.3
  • utilsforecast ==0.2.5
  • wheel ==0.44.0
  • widgetsnbextension ==4.0.13
  • xarray ==2024.9.0
  • xgboost ==2.1.1
  • yarl ==1.11.1
requirements-optimization.txt pypi
  • Cython ==3.0.11
  • DateTime ==5.5
  • Deprecated ==1.2.14
  • Flask ==3.0.3
  • GitPython ==3.1.43
  • Jinja2 ==3.1.4
  • Mako ==1.3.5
  • Markdown ==3.6
  • MarkupSafe ==2.1.5
  • PyYAML ==6.0.1
  • Pygments ==2.18.0
  • Pyomo ==6.7.3
  • SQLAlchemy ==2.0.31
  • Werkzeug ==3.0.3
  • adagio ==0.2.6
  • aiohappyeyeballs ==2.4.3
  • aiohttp ==3.10.10
  • aiosignal ==1.3.1
  • alembic ==1.13.2
  • aniso8601 ==9.0.1
  • appdirs ==1.4.4
  • asttokens ==2.4.1
  • attrs ==24.2.0
  • blinker ==1.8.2
  • cachetools ==5.4.0
  • certifi ==2024.7.4
  • charset-normalizer ==3.3.2
  • click ==8.1.7
  • cloudpickle ==3.0.0
  • colorama ==0.4.6
  • comm ==0.2.2
  • contourpy ==1.2.1
  • coreforecast ==0.0.13.1
  • cycler ==0.12.1
  • darts ==0.31.0
  • databricks-sdk ==0.29.0
  • debugpy ==1.8.1
  • decorator ==5.1.1
  • docker ==7.1.0
  • entrypoints ==0.4
  • executing ==2.0.1
  • fastjsonschema ==2.20.0
  • filelock ==3.16.1
  • fonttools ==4.53.0
  • frozenlist ==1.5.0
  • fs ==2.4.16
  • fsspec ==2024.10.0
  • fugue ==0.9.1
  • gitdb ==4.0.11
  • google-auth ==2.32.0
  • graphene ==3.3
  • graphql-core ==3.2.3
  • graphql-relay ==3.2.0
  • greenlet ==3.0.3
  • holidays ==0.59
  • idna ==3.7
  • importlib_metadata ==7.2.1
  • ipykernel ==6.29.4
  • ipython ==8.25.0
  • itsdangerous ==2.2.0
  • jedi ==0.19.1
  • joblib ==1.4.2
  • jsonschema ==4.23.0
  • jsonschema-specifications ==2023.12.1
  • jupyter_client ==8.6.2
  • jupyter_core ==5.7.2
  • kiwisolver ==1.4.5
  • lightning-utilities ==0.11.8
  • llvmlite ==0.43.0
  • matplotlib ==3.9.0
  • matplotlib-inline ==0.1.7
  • mlflow ==2.16.1
  • mlflow-skinny ==2.16.1
  • mpmath ==1.3.0
  • multidict ==6.1.0
  • nbformat ==5.10.4
  • nest-asyncio ==1.6.0
  • networkx ==3.4.2
  • nfoursid ==1.0.1
  • numba ==0.60.0
  • numpy ==1.26.4
  • opentelemetry-api ==1.26.0
  • opentelemetry-sdk ==1.26.0
  • opentelemetry-semantic-conventions ==0.47b0
  • packaging ==24.1
  • pandas ==2.2.2
  • parso ==0.8.4
  • patsy ==0.5.6
  • pillow ==10.3.0
  • pip ==24.1.1
  • platformdirs ==4.2.2
  • plotly ==5.23.0
  • ply ==3.11
  • pmdarima ==2.0.4
  • prompt_toolkit ==3.0.47
  • propcache ==0.2.0
  • protobuf ==5.27.3
  • psutil ==5.9.8
  • pure-eval ==0.2.2
  • pyarrow ==15.0.2
  • pyasn1 ==0.6.0
  • pyasn1_modules ==0.4.0
  • pyod ==2.0.2
  • pyparsing ==3.1.2
  • python-dateutil ==2.9.0.post0
  • pytorch-lightning ==2.4.0
  • pytz ==2024.1
  • pyzmq ==26.0.3
  • querystring-parser ==1.2.4
  • referencing ==0.35.1
  • requests ==2.32.3
  • rpds-py ==0.20.0
  • rsa ==4.9
  • scikit-learn ==1.5.0
  • scipy ==1.14.0
  • setuptools ==70.0.0
  • shap ==0.46.0
  • six ==1.16.0
  • slicer ==0.0.8
  • smmap ==5.0.1
  • sqlparse ==0.5.1
  • stack-data ==0.6.3
  • statsforecast ==1.7.8
  • statsmodels ==0.14.4
  • sympy ==1.13.1
  • tbats ==1.1.3
  • tenacity ==9.0.0
  • tensorboardX ==2.6.2.2
  • threadpoolctl ==3.5.0
  • torch ==2.5.0
  • torchmetrics ==1.5.1
  • tornado ==6.4.1
  • tqdm ==4.66.6
  • traitlets ==5.14.3
  • triad ==0.9.8
  • typing_extensions ==4.12.2
  • tzdata ==2024.1
  • urllib3 ==2.2.2
  • utilsforecast ==0.2.7
  • waitress ==3.0.0
  • wcwidth ==0.2.13
  • wrapt ==1.16.0
  • xarray ==2024.10.0
  • xgboost ==2.1.2
  • yarl ==1.17.0
  • zipp ==3.19.2
  • zope.interface ==6.4.post2