SolverTools.jl icon indicating copy to clipboard operation
SolverTools.jl copied to clipboard

How to handle NaNs?

Open dpo opened this issue 6 years ago • 3 comments

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.

dpo avatar Dec 13 '19 00:12 dpo

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.

abelsiqueira avatar Dec 13 '19 02:12 abelsiqueira

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.

dpo avatar Dec 13 '19 03:12 dpo

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" > } > } > ]

vepiteski avatar Dec 13 '19 13:12 vepiteski