Git Product home page Git Product logo

prescriptive_trees_power_apps's Introduction

Prescriptive Trees for Value-oriented Forecasting and Optimization

This repository contains the code to reproduce the experiments of the following work:

@unpublished{stratigakos:hal-03363876, TITLE = {{Prescriptive Trees for Value-oriented Forecasting and Optimization: Applications on Storage Scheduling and Market Clearing}}, AUTHOR = {Stratigakos, Akylas and Camal, Simon and Michiorri, Andrea and Kariniotakis, Georges}, URL = {https://hal.archives-ouvertes.fr/hal-03363876}, NOTE = {working paper or preprint}, YEAR = {2021}, MONTH = Oct, PDF = {https://hal.archives-ouvertes.fr/hal-03363876/file/Preprint_PrescriptiveTrees_Submission.pdf}, HAL_ID = {hal-03363876}, HAL_VERSION = {v1}, }

You can also cite our published work on the same methodology:

@article{stratigakos2022prescriptive, title={Prescriptive trees for integrated forecasting and optimization applied in trading of renewable energy}, author={Stratigakos, Akylas and Camal, Simon and Michiorri, Andrea and Kariniotakis, Georges}, journal={IEEE Transactions on Power Systems}, volume={37}, number={6}, pages={4696--4708}, year={2022}, publisher={IEEE} }

Each application is contained in a separate folder. The key components are:

  • GreedyPrescriptiveTree.py: Train a prescriptive with greedy node splits (similar to CART).
  • EnsemblePrescriptiveTree.py: Train an ensemble of prescriptive trees (prescriptive forest). Different randomization algorithms are implemented (Random Forests, ExtraTrees).
  • opt_problem.py: Function that defines the specific optimization problem. During learning, it returns a Sample Average Approximation (SAA) of the original problem, for the specific data subset. During prediction, determines a weighted SAA conditioned on features.
  • *_main.py: Run the experiments.

Intro

Decision-making in the presence of contextual information is a ubiquitous problem in modern power systems. The typical data-decisions pipeline comprises forecasting and optimization components deployed in sequence. However, the loss function employed during learning is only a proxy for task-specific costs (e.g. scheduling, trading). This work describes a data-driven alternative to improve prescriptive performance in conditional stochastic optimization problems based on nonparametric machine learning. Specifically, we describe prescriptive trees that minimize task-specific costs during learning, embedded with a scenario reduction procedure to reduce computations, and then derive a weighted Sample Average Approximation of the original problem. We present experimental results for two problems: storage scheduling for price arbitrage and stochastic market clearing with network constraints, respectively associated with electricity price and load forecasting.

Storage Scheduling and Electricity Price Forecasting ๐Ÿ”‹

Experiments on scheduling a generic storage device for price arbitrage.

storage
|
|--- data: contains input data
|--- figures: stores plots
|--- results: stores results
|--- storage_scheduling_main.py: run the experiments, generate plots
|--- Utility_functions.py: helper functions for data manipulation and probabilistic Forecasting

Stochastic Market Clearing and Load Forecasting ๐Ÿ”Œ

Stochastic market clearing with uncertain load and network constraints.

market_clearing
|
|--- data: contains input data
|--- figures: stores plots
|--- results
    |--- aggregated_results: results per sample size. To recreate plots, store results in the respective folder
    |--- CPU_results: results with scenario reduction
|--- market_clearing_main.py: run the main experiment
|--- cpu_time_test.py: run the scenario reduction experiment
|--- results_graphs.py: generate results tables and plots
|--- forecast_utility_functions.py: helper functions for data manipulation, probabilistic forecasting, and scenario generation
|--- optimization_utility_functions.py: load the network data

prescriptive_trees_power_apps's People

Contributors

akylasstrat avatar

Stargazers

Linwei Sang avatar  avatar Samarth Mistry avatar  avatar Xianbang avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.