odow / SDDP.jl

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

SDDiP #195

Closed odow closed 5 years ago

odow commented 5 years ago

Currently, an implementation of SDDiP lives in https://github.com/lkapelevich/SDDiP.jl.

I've had some discussions with @lkapelevich about bringing it into the fold with first-class support.

odow commented 5 years ago

We now have pre- and post-optimize hooks https://github.com/odow/SDDP.jl/blob/9b5ebc986fb8a1a621c556c4852a4e6618dc5d7f/src/algorithm.jl#L262-L295 but we don't distinguish between forward and backward passes, and we still call out to JuMP.optimize.

@lkapelevich, what would you need to re-implement SDDiP.jl? (This should also enable SLDP #210.)

lkapelevich commented 5 years ago

Is there any reason (for SDDiP) not to just use JuMP's optimize hook? Since my understanding of https://github.com/odow/SDDP.jl/blob/88af622304a44a6481485dfaf2f6ca15255143f4/src/algorithm.jl#L167 is that we can just ovewrite the duals? I think we have all the data we need. So just to figure out how to use it...

Your order is 1) pre-hook 2) JuMP.optimize 3) get duals 4) post-hook.

As far as I understand for SDDiP we would want to either:

odow commented 5 years ago

I've just realized that most of the time, we use JuMP in direct mode. Therefore, we can't do the "overwriting the duals" trick anymore.

We should probably just do something more drastic like a way to set the solve_subproblem function, and make the existing one the default.