Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add cut patterns to SDDiP #257

Closed
eltuck opened this issue Sep 12, 2019 · 10 comments
Closed

Add cut patterns to SDDiP #257

eltuck opened this issue Sep 12, 2019 · 10 comments
Labels
feature-request stochastic-integer Related to stochastic mixed-integer programs

Comments

@eltuck
Copy link

eltuck commented Sep 12, 2019

Thank y'all for all your work on SDDP and SDDiP packages. I've been been updating a model that previously used SDDiP.jl to SDDP.jl, and an initial draft seems to run fine. At this point, I have a couple questions:

  • Is it possible to specify a cut pattern? (E.g., Pattern(integer_optimality = 1, strengthened_benders = 1)).
  • Can I change the binary approximation precision?

I glanced through the src files but couldn't figure out what the options would be or if those are still features.

Thanks, again!

@lkapelevich
Copy link
Contributor

lkapelevich commented Sep 12, 2019

I haven't moved over the cut pattern code since I didn't think it was super critical, and I don't think it'd be too tricky for someone to add.

Yep you should be able to go epsilon = ... inside @variable. Looks like this kwarg is tested but didn't make it into any examples, it would probably be nice to get an example :-).

@odow
Copy link
Owner

odow commented Sep 12, 2019

We still need to write some docs: #246

I only have a placeholder for now: https://odow.github.io/SDDP.jl/latest/tutorial/13_integrality

The syntax is

@variable(subproblem, 0 <= x <= 2, SDDP.State, initial_value = 0, epsilon = 0.01)

@eltuck
Copy link
Author

eltuck commented Sep 12, 2019

Thank you both! This is very helpful and all sounds good.

Regarding the cuts, what pattern/type of cuts are applied currently? Does it cycle through all 3 (IO, SB, L)?

@lkapelevich
Copy link
Contributor

SDDiP will add Lagrangian cuts only

@eltuck
Copy link
Author

eltuck commented Sep 12, 2019

Thank you!

@eltuck eltuck closed this as completed Sep 12, 2019
@odow odow changed the title Use of SDDiP within SDDP - cut pattern and binary approx precision Add cut patterns to SDDiP Sep 12, 2019
@odow
Copy link
Owner

odow commented Sep 12, 2019

I'm going to re-open this as a reminder for someone to add IO or SB cuts in the future.

@odow odow reopened this Sep 12, 2019
@lkapelevich
Copy link
Contributor

I will add a thought- given that IO cuts will not be better than SB or L cuts, implementing these may just lead to adding unnecessary code to SDDP.jl. Also if the implementation of L cuts could be improved, perhaps the SB cuts would be less valuable also.

@odow
Copy link
Owner

odow commented Sep 13, 2019

given that IO cuts will not be better than SB or L cuts, implementing these may just lead to adding unnecessary code to SDDP.jl

I'm all for avoiding unnecessary code.

Also if the implementation of L cuts could be improved

Is this related to:

# TODO implement smart choice for initial duals

What's the "smart choice"?

Although for people reading this, I'm unlikely to work on this, and I don't think @lkapelevich is either, so help wanted :).

@lkapelevich
Copy link
Contributor

lkapelevich commented Sep 13, 2019

I would try to start with infeasible duals so that Kelley's method has the chance to work toward a cut that is only "just valid". But I don't know how worthwhile it'll turn out practically.

@odow odow added the stochastic-integer Related to stochastic mixed-integer programs label Dec 16, 2019
@odow
Copy link
Owner

odow commented Jan 26, 2021

Closing in favor of #246

@odow odow closed this as completed Jan 26, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature-request stochastic-integer Related to stochastic mixed-integer programs
Projects
None yet
Development

No branches or pull requests

3 participants