@@ -24,13 +24,13 @@ function test_bat_optimization_ext()
24
24
end
25
25
26
26
AbstractModeEstimator (optalg:: Any ) = OptimizationAlg (optalg)
27
- convert (:: Type{AbstractModeEstimator} , alg:: OptimizationAlg ) = alg. optalg
27
+ Base . convert (:: Type{AbstractModeEstimator} , alg:: OptimizationAlg ) = alg. optalg
28
28
29
29
BAT. ext_default (:: BAT.PackageExtension{:Optimization} , :: Val{:DEFAULT_OPTALG} ) = nothing # Optim.NelderMead()
30
30
31
31
32
32
function build_optimizationfunction (f, adsel:: AutoDiffOperators.ADSelector )
33
- adm = convert_ad (ADTypes. AbstractADType, adsel)
33
+ adm = convert (ADTypes. AbstractADType, reverse_ad_selector ( adsel) )
34
34
optimization_function = Optimization. OptimizationFunction (f, adm)
35
35
return optimization_function
36
36
end
@@ -59,7 +59,9 @@ function BAT.bat_findmode_impl(target::MeasureLike, algorithm::OptimizationAlg,
59
59
optimization_problem = Optimization. OptimizationProblem (optimization_function, x_init)
60
60
61
61
algopts = (maxiters = algorithm. maxiters, maxtime = algorithm. maxtime, abstol = algorithm. abstol, reltol = algorithm. reltol)
62
- optimization_result = Optimization. solve (optimization_problem, algorithm. optalg; algopts... , algorithm. kwargs... )
62
+ # Not all algorithms support abstol, just filter all NaN-valued opts out:
63
+ filtered_algopts = NamedTuple (filter (p -> ! isnan (p[2 ]), pairs (algopts)))
64
+ optimization_result = Optimization. solve (optimization_problem, algorithm. optalg; filtered_algopts... , algorithm. kwargs... )
63
65
64
66
transformed_mode = optimization_result. u
65
67
result_mode = inv_trafo (transformed_mode)
0 commit comments