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

Proposal: Stopping Rules #124

Closed
odow opened this issue Apr 26, 2018 · 2 comments
Closed

Proposal: Stopping Rules #124

odow opened this issue Apr 26, 2018 · 2 comments

Comments

@odow
Copy link
Owner

odow commented Apr 26, 2018

something along the lines of

abstract type StoppingRule end

struct BoundStalling <: StoppingRule
    N::Int
    tol::Float64
end

function stoppingrule(sr::BoundStalling, m::SDDPModel)
    for i in 0:min(length(m.log) - 2, sr.N)
        if abs(m.log[end - i].bound - m.log[end-i-1].bound) > sr.tol
            return false
        end
    end
    return true
end

# usage
solve(m,
    stopping_rules = [
        BoundStalling(5, 0.0)
    ]
)
@odow odow added the proposal label Apr 26, 2018
@frapac
Copy link

frapac commented Apr 26, 2018

I like this. However, I remember that Shapiro considers that this stopping test could me misguided, especially when SDDP converges very slowly. Maybe we should prevent the users that SDDP may be far from convergence? But taking this criteria is a better idea than considering a fixed number of iterations, AFAIK. 😊

@odow
Copy link
Owner Author

odow commented Apr 26, 2018

I agree with Shapiro. But I prefer running a fixed number of iterations, stimulating the policy, and visually inspecting the solution. Unless you have a deterministic upper bound (e.g. your OO paper), any rules are potentially misguided.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants