Skip to main content

ScenarioReducer

License Issues

This library implements several approximate scenario reduction algorithms. Given a probability distribution with finite support, they aim to determine a probability measure with support of reduced and fixed cardinality by selecting the closest to the original one in terms of a selected statistical distance.

Installation

  1. (Recommended) The easiest way to install and use ScenarioReducer is through pip:

        pip install ScenarioReducer
    
  2. (Alternative) You can directly clone the repository

        git clone https://github.com/DanieleGioia/ScenarioReducer.git
    

Code structure

|____main_example.py
|____scenarioReducer
| |____scenario_reducer.py
| |______init__.py
| |____fast_forward.py
|____tests
| |____test_fast_forward.py

ScenarioReducer Class

It is an abstract class for a scenario reducer that suggests the methods that a scenario reducer should possess. The main method reduce, given a fixed n, must reduce an original set of scenarios with cardinality N to a smaller one of cardinality n.

Different strategies can vary, for example, w.r.t.:

  • The statistical distance.
  • The selection order (Fast Forward, Backward, Simultaneous Backward, ...).

Fast_forward class

This class implements a scenario reducer that follows a Fast Forward (FF) technique from:

[1] Heitsch, Holger, and Werner Römisch. "Scenario reduction algorithms in stochastic programming." Computational optimization and applications 24.2-3 (2003): 187-206.

FF is preferred for $n\le \frac{N}{4}$ , where $n$ is the new reduced cardinality of the support and $N$ is the original one. For further details please refer to the article.

Example

An easy example to familiarize yourself with the library is provided in main_example.py

Available tests

  1. test_fast_forward creates a starting set of one-dimensional Gaussian distributed scenarios of known mean and variance. The test then uses the Fast_Forward class to reduce the number of scenarios. Mean, standard deviation, and 0.05, 0.5, and 0.95 quantiles are eventually compared between the original scenario set and the reduced scenario set to confirm that such statistical measures are close.

Metadata

Release files for ScenarioReducer 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ScenarioReducer 1.0.0
File Size Uploaded
scenarioreducer-1.0.0.tar.gz 4.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ScenarioReducer 1.0.0
File Interpreter ABI Platform
scenarioreducer-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 9.9 kB

Release files / scenarioreducer-1.0.0.tar.gz

Download URL scenarioreducer-1.0.0.tar.gz
Size 4.3 kB
Tags Source
SHA-256 checksum
How to use checksums
01a4aa62c96592b16c208891ef7fab738c5c9a96fe281059caca4a8a27f98115
BLAKE2b-256 checksum
How to use checksums
e59a52718353bc15849c5041099dac72b8266549dd545b7d9215a6d675a7c814
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.4

Release files / scenarioreducer-1.0.0-py3-none-any.whl

Download URL scenarioreducer-1.0.0-py3-none-any.whl
Size 5.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
194d7437787babce4e459402903a315d69d92ab852bd347c1a94b4be8544a3ee
BLAKE2b-256 checksum
How to use checksums
f8c4f60b3611b48a29874b8e113f35968b7ccd3b561faa8c5659abeb1e5ea443
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.10.4

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page