Git Product home page Git Product logo

dualsddp.jl's Introduction

DualSDDP

DualSDDP implements the Dual SDDP algorithm for multistage stochastic linear problems with stagewise independent uncertainty, allowing for polyhedral risk measures such as Expectation-AV@R. The theory is developped in https://arxiv.org/abs/2107.10930.

It also implements, for comparison:

  • A primal SDDP algorithm
    • with outer approximations of the value function, and
    • stochastic sampling in the scenario tree.
  • a deterministic DDP algorithm
    • with inner and outer approximations for the value function, and
    • worst-gap selection in the scenario tree.

Usage

  • Create a module M, of type MSLBO, containing the problem data;
  • Determine the number of stages of the problem;
  • Choose the E-AV@R parameters and create builder functions (primal or dual) using mk_primal_avar and mk_copersp_avar (respectively);
  • Set the LP solver for subproblems;
  • Set the initial value;
  • Set the number of iterations of the algorithm;
  • call primalsolve, dualsolve or problem_child_solve.

Examples

The examples directory contains both "one shot" examples (in subdirectories), as well as Config.jl batches and configs.

The first time you use the examples directory, you'll have to instantiate it. The fastest way of doing so is using Pkg commands (in the examples directory):

pkg> activate .
pkg> dev ..

This will use the Project.toml we provide, then the current checkout for the DualSDDP package, and finally resolve all packages.

In so doing, it will also require that the Gurobi package is installed, which was used for some of the examples. If that is not desired, one can remove it from the Packages.toml file, or simply issue pkg> rm Gurobi.

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.