Exception thrown by objective function is not rethrown by nlopt
Closed this issue · 1 comments
ikirill commented
The following test fails for me using ] dev NLopt
. I expected the exception from within obj
to be rethrown to the called on NLopt.optimize
using Test
x0 = [0.5,0.7]
obj(x) = (error("test"); dot(x,x))
opt = NLopt.Opt(:LN_SBPLX, length(x0))
opt.lower_bounds = [-1,-1]
opt.upper_bounds = [1,1]
opt.min_objective=obj
# @show NLopt.optimize(opt, x0)
@test_throws ErrorException NLopt.optimize(opt, x0)
Test Failed at /home/kirill/Sandboxes/SportsModelling/test/nlopt_exceptions.jl:11
Expression: NLopt.optimize(opt, x0)
Expected: ErrorException
No exception thrown
Instead optimize returns:
NLopt.optimize(opt, x0) = (0.0, [0.5, 0.7], :FORCED_STOP)
julia> versioninfo()
Julia Version 1.5.3
Commit 788b2c77c1 (2020-11-09 13:37 UTC)
Platform Info:
OS: Linux (x86_64-pc-linux-gnu)
CPU: AMD Ryzen 7 3700X 8-Core Processor
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-9.0.1 (ORCJIT, znver2)
(@v1.5) pkg> status
Status `~/.julia/environments/v1.5/Project.toml`
[764a87c0] BoundaryValueDiffEq v2.7.0
[336ed68f] CSV v0.8.2
[a2cac450] ColorBrewer v0.4.0
[5ae59095] Colors v0.12.6
[a93c6f00] DataFrames v0.22.2
[0c46a032] DifferentialEquations v6.16.0
[31c24e10] Distributions v0.24.10
[442a2c76] FastGaussQuadrature v0.4.4
[53c48c17] FixedPointNumbers v0.8.4
[28b8d3ca] GR v0.53.0
[cc18c42c] GaussianMixtures v0.3.4
[7073ff75] IJulia v1.23.1
[82e4d734] ImageIO v0.4.1
[6218d12a] ImageMagick v1.1.6
[02fcd773] ImageTransformations v0.8.8
[916415d5] Images v0.23.3
[a98d9a8b] Interpolations v0.13.1
[76087f3c] NLopt v0.6.2 `~/.julia/dev/NLopt`
[9b87118b] PackageCompiler v1.2.3
[91a5bcdd] Plots v1.10.1
[1fd47b50] QuadGK v2.4.1
[295af30f] Revise v3.1.9
[2913bbd2] StatsBase v0.33.2
[bd369af6] Tables v1.2.2
ikirill commented
Quote from readme:
You can do this by throwing any exception inside your objective/constraint functions: the optimization will be halted gracefully, and the same exception will be thrown to the caller.