Closed odow closed 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.)
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:
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.
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.