diff --git a/lib/OptimizationEvolutionary/src/OptimizationEvolutionary.jl b/lib/OptimizationEvolutionary/src/OptimizationEvolutionary.jl index 02663f1e5..95776f2aa 100644 --- a/lib/OptimizationEvolutionary/src/OptimizationEvolutionary.jl +++ b/lib/OptimizationEvolutionary/src/OptimizationEvolutionary.jl @@ -90,7 +90,7 @@ function SciMLBase.__solve(cache::OptimizationCache{ u = curr_u, objective = x[1], original = trace) - cb_call = cache.callback(opt_state, trace.value...) + cb_call = cache.callback(opt_state, decompose_trace(trace).value...) if !(cb_call isa Bool) error("The callback should return a boolean `halt` for whether to stop the optimization process.") end diff --git a/lib/OptimizationEvolutionary/test/runtests.jl b/lib/OptimizationEvolutionary/test/runtests.jl index 72b9c19ab..32a07c7ee 100644 --- a/lib/OptimizationEvolutionary/test/runtests.jl +++ b/lib/OptimizationEvolutionary/test/runtests.jl @@ -42,4 +42,7 @@ Random.seed!(1234) return false end sol = solve(prob, CMAES(μ = 40, λ = 100), callback = cb, maxiters = 100) + + #test that `store_trace=true` works now. Threw ""type Array has no field value" before. + solve(prob, CMAES(μ = 40, λ = 100), store_trace = true) end