JuliaSmoothOptimizers / SolverTools.jl

Tools for developing nonlinear optimization solvers.
Other
26 stars 18 forks source link

How to handle NaNs? #124

Open dpo opened 4 years ago

dpo commented 4 years ago

Example:

julia> model = CUTEstModel("BENNETT5LS")
Minimization problem BENNETT5LS
nvar = 3, ncon = 0 (0 linear)

julia> x = model.meta.x0
3-element Array{Float64,1}:
 -2000.0
    50.0
     0.8

julia> g = grad(model, x)
3-element Array{Float64,1}:
      37.195399822788076
    1518.022256935859
 -478331.78119128384

julia> x1 = x - g
3-element Array{Float64,1}:
  -2037.195399822788
  -1468.022256935859
 478332.5811912838

julia> obj(model, x1)
NaN

Solvers should be able to trap NaNs and return an appropriate status.

abelsiqueira commented 4 years ago

Do you mean at the individual solver level or bmark level? Is this to test that a solver doesn't return :first_order when it's actually returning a NaN value? :exception sounds like a good value for the situation.

dpo commented 4 years ago

At the solver level, there should be a mechanism to trap NaNs. Benchmarks should recognize that a solver generated a NaN, and there should be a good status for it. I think there could be a specific status for NaN, or we could use :exception and have a specific solver status in addition.

vepiteski commented 4 years ago

Le jeudi 12 décembre 2019 à 19:12 -0800, Dominique a écrit :

At the solver level, there should be a mechanism to trap NaNs. Benchmarks should recognize that a solver generated a NaN, and there should be a good status for it. I think there could be a specific status for NaN, or we could use :exception and have a specific solver status in addition. In our Stopping framework in development, I believe it is Stopping that should take care of such issues. The solver should not address NaNs and other Inf exceptions, Stopping should uniformly address any such circumstance.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or unsubscribe.

> [ > { > "@context": "http://schema.org", > "@type": "EmailMessage", > "potentialAction": { > "@type": "ViewAction", > "target": "https://github.com/JuliaSmoothOptimizers/SolverTools.jl/issues/124?email_source=notifications\u0026email_token=AB6L6GY2VJHHBQZSUX2CD4LQYL4Q5A5CNFSM4J2GD4W2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEGYYMMI#issuecomment-565282353", > "url": "https://github.com/JuliaSmoothOptimizers/SolverTools.jl/issues/124?email_source=notifications\u0026email_token=AB6L6GY2VJHHBQZSUX2CD4LQYL4Q5A5CNFSM4J2GD4W2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEGYYMMI#issuecomment-565282353", > "name": "View Issue" > }, > "description": "View this Issue on GitHub", > "publisher": { > "@type": "Organization", > "name": "GitHub", > "url": "https://github.com" > } > } > ]