Closed odow closed 3 years ago
Since with the StrengthenedConicDuality option, SDDP finds a feasible solution, respecting the binary constraint, I would like to understand better how it works, how this parameter changes the way SDDP handles binary variables. Would you have some articles in particular to recommend to me?
On Mon, Aug 23, 2021 at 11:13 AM Oscar Dowson @.***> wrote:
StrengthenedConicDuality can't use the higher bounds because the continuous dual solution is likely infeasible. If the bounds are too tight, then we'll get an incorrect dual objective value.
There must be something like adding a feasibility cut. But I don't know how that would work computationally. Using wide bounds seems okay.
cc @zfornier https://github.com/zfornier this fixes the StrengthenedConicDuality case, but not the LagrangianDuality. I obviously need to play with your example more.
You can view, comment on, or merge this pull request online at:
https://github.com/odow/SDDP.jl/pull/457 Commit Summary
- Fix bug in lagrangian duality
File Changes
- M src/algorithm.jl https://github.com/odow/SDDP.jl/pull/457/files#diff-6648e580a1b8e07dc2dcc09b1ddee91561ad97e099277e156af85e18006b96ce (4)
- M src/plugins/duality_handlers.jl https://github.com/odow/SDDP.jl/pull/457/files#diff-46ced4534151233bd09ad231b4ca6d7353ae1242d20b1e43dc59efc67be52d83 (23)
Patch Links:
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/odow/SDDP.jl/pull/457, or unsubscribe https://github.com/notifications/unsubscribe-auth/AMV7TEWCU2FWA3EAFWFDVX3T6IGMTANCNFSM5CUESF6Q . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email .
I should write a tutorial for the documentation.
I find how SDDiP is presented as a concept in the literature confusing.
We have these subproblems:
and we're trying to find a feasible dual solution and corresponding dual objective value for the slope and intercept of the cut respectively.
You should probably be able to find a feasible solution with the default ContinuousConicDuality
option as well. I changed how we handle integer variables in the forward pass during training.
Yes ok, I need to read more about all of this, thank you!
On Tue, Aug 24, 2021 at 10:32 PM Oscar Dowson @.***> wrote:
I should write a tutorial for the documentation.
I find how SDDiP is presented as a concept in the literature confusing.
We have these subproblems: [image: image] https://user-images.githubusercontent.com/8177701/130685165-a75d5efb-abab-469c-98a0-ff18bd739444.png and we're trying to find a feasible dual solution and corresponding dual objective value for the slope and intercept of the cut respectively.
- ContinuousConic relaxes the integrality and solves the conic dual https://odow.github.io/SDDP.jl/stable/apireference/#SDDP.ContinuousConicDuality
- Strengthened conic duality uses the same dual solution vector, but strengthens it by computing a tighter dual objective value given that dual solution https://odow.github.io/SDDP.jl/stable/apireference/#SDDP.StrengthenedConicDuality
- LagrangianDuality relaxes the fishing constraint (x-x=0) to compute the Lagrangian dual solution and corresponding objective value: https://odow.github.io/SDDP.jl/stable/apireference/#SDDP.LagrangianDuality
You should probably be able to find a feasible solution with the default ContinuousConicDuality option as well. I changed how we handle integer variables in the forward pass during training.
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/odow/SDDP.jl/pull/457#issuecomment-904954193, or unsubscribe https://github.com/notifications/unsubscribe-auth/AMV7TETDRAUP3NJLM66EP2TT6P6VPANCNFSM5CUESF6Q . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email .
StrengthenedConicDuality can't use the higher bounds because the continuous dual solution is likely infeasible. If the bounds are too tight, then we'll get an incorrect dual objective value.
There must be something like adding a feasibility cut. But I don't know how that would work computationally. Using wide bounds seems okay.
cc @zfornier this fixes the StrengthenedConicDuality case, but not the LagrangianDuality. I obviously need to play with your example more.