RDDP.jl

Julia implementation of robust dual dynamic programming (RDDP)
Author zidanessf
Popularity
0 Stars
Updated Last
2 Years Ago
Started In
April 2021

Robust Dual Dynamic Programming (RDDP)

Usage

pkg> add RDDP

Example

# inventory management under uncertain demand
using RDDP,Gurobi,JuMP
N = 10
msro = RDDP.buildMultiStageRobustModel(
    N_stage = N, # number of stages
    optimizer = Gurobi.Optimizer, # choose an optimizer
    MaxIteration = 100, # maximum epoches
    MaxTime = 60, # maximum trainning time
    Gap = 0.01, # optimal gap
    use_maxmin_solver = false # using a vertex enumeration by default
) do ro::JuMP.Model,t::Int
    # defining operator's strategy
    @variable(ro,0 <= x <= 5>,RDDP.State,initial_value = 0) # state variable (stock level)
    @variable(ro,0 <= u <= 1>) # control variable (supply)
    @variable(ro,0 <= ξ[i = 1:2] <= 1,RDDP.Uncertain) # uncertain parameter (demand)
    @constraint(ro,sum(ξ) <= 1>) # constraint abount uncertain parameter
    @constraint(ro, x.out == x.in - u + sum(ξ)) # state transition (temporal dependence of stock level)
    @objective(ro,Min,x) # minimize the stock
end
RDDP.train(msro)

Citing RDDP.jl

If you use RDDP.jl, we ask that you please cite the following:

@article{rddp.jl,
  title={Enhancing the Flexibility of Storage Integrated Power System by Multi-stage Robust Dispatch},
  author={Shi, Yunhui and Guo, Chuangxin and Dong, Shufeng and Chen, Zhe and Wang, Luyu},
  journal={IEEE Transactions on Power Systems},
  year={2020},
  publisher={IEEE}
}

@article{georghiou2019robust,
  title={Robust dual dynamic programming},
  author={Georghiou, Angelos and Tsoukalas, Angelos and Wiesemann, Wolfram},
  journal={Operations Research},
  volume={67},
  number={3},
  pages={813--830},
  year={2019},
  publisher={INFORMS}
}

Used By Packages

No packages found.