odow / SDDP.jl

A JuMP extension for Stochastic Dual Dynamic Programming
https://sddp.dev
Other
309 stars 61 forks source link

User-specified nominal distributions in DRO #117

Closed lkapelevich closed 4 years ago

lkapelevich commented 6 years ago

The DRO computations currently assume equal probabilities for all scenarios as the nominal distribution. We can tweak the code to work around any user specified distribution.

odow commented 6 years ago

Can you provide some guidance as to how one would go about implementing this since you are probably the only one that understands what's going on?

lkapelevich commented 6 years ago

Yep! We were assuming equal probabilities for all scenarios just to keep the code simpler. The distributionally robust SDDP paper is more general.

To generalise, the DRO object would have

type DRO
    radius::Float64
    q::Vector{Float64}
end

with q being the center of the DRO ball.

The worst case probability is essentially computed with a one line formula: https://github.com/odow/SDDP.jl/blob/master/src/risk_measures/DRO.jl#L103 (which appears in a loop with iterator k) following algorithm 2 in http://www.epoc.org.nz/papers/DROPaperv52.pdf, and to generalise, we would use algorithm 1 instead.

odow commented 5 years ago

Calling this an enhancement instead of a bug because Kokako now has a check for uniformity of the nominal distribution.

odow commented 4 years ago

Closed by #328