FitzHugh-Nagumo Parameter Estimation Benchmarks

Parameter estimation of FitzHugh-Nagumo model using optimisation methods

using ParameterizedFunctions, OrdinaryDiffEq, DiffEqParamEstim, Optimization
using OptimizationBBO, OptimizationNLopt, ForwardDiff, Plots, BenchmarkTools
using ModelingToolkit
using ModelingToolkitBase
using SciCompDSL
using ModelingToolkit: @mtkbuild, D_nounits as D, t_nounits as t
gr(fmt = :png)
Plots.GRBackend()
loc_bounds = Tuple{Float64, Float64}[(0, 1), (0, 1), (
    0, 1), (0, 1)]
glo_bounds = Tuple{Float64, Float64}[(0, 5), (0, 5), (
    0, 5), (0, 5)]
loc_init = [0.5, 0.5, 0.5, 0.5]
glo_init = [2.5, 2.5, 2.5, 2.5]
4-element Vector{Float64}:
 2.5
 2.5
 2.5
 2.5
@mtkmodel FitzHughNagumo begin
    @parameters begin
        a = 0.7      # Parameter for excitability
        b = 0.8      # Recovery rate parameter
        τinv = 0.08  # Inverse of the time constant
        l = 0.5      # External stimulus
    end
    @variables begin
        v(t) = 1.0  # Membrane potential with initial condition
        w(t) = 1.0  # Recovery variable with initial condition
    end
    @equations begin
        D(v) ~ v - v^3 / 3 - w + l
        D(w) ~ τinv * (v + a - b * w)
    end
end

@mtkbuild fitz = FitzHughNagumo()
Model fitz:
Equations (2):
  2 standard: see equations(fitz)
Unknowns (2): see unknowns(fitz)
  w(t)
  v(t)
Parameters (4): see parameters(fitz)
  a
  b
  τinv
  l
p = [0.7, 0.8, 0.08, 0.5]              # Parameters used to construct the dataset
r0 = [1.0; 1.0]                     # initial value
tspan = (0.0, 30.0)                 # sample of 3000 observations over the (0,30) timespan
prob = ODEProblem(fitz, r0, tspan, p)
tspan2 = (0.0, 3.0)                 # sample of 300 observations with a timestep of 0.01
prob_short = ODEProblem(fitz, r0, tspan2, p)
ODEProblem with uType Vector{Float64} and tType Float64. In-place: true
Initialization status: FULLY_DETERMINED
Non-trivial mass matrix: false
timespan: (0.0, 3.0)
u0: 2-element Vector{Float64}:
 1.0
 1.0
dt = 30.0/3000
tf = 30.0
tinterval = 0:dt:tf
time_points = collect(tinterval)
3001-element Vector{Float64}:
  0.0
  0.01
  0.02
  0.03
  0.04
  0.05
  0.06
  0.07
  0.08
  0.09
  ⋮
 29.92
 29.93
 29.94
 29.95
 29.96
 29.97
 29.98
 29.99
 30.0
h = 0.01
M = 300
tstart = 0.0
tstop = tstart + M * h
tinterval_short = 0:h:tstop
t_short = collect(tinterval_short)
301-element Vector{Float64}:
 0.0
 0.01
 0.02
 0.03
 0.04
 0.05
 0.06
 0.07
 0.08
 0.09
 ⋮
 2.92
 2.93
 2.94
 2.95
 2.96
 2.97
 2.98
 2.99
 3.0
#Generate Data
data_sol_short = solve(prob_short, Vern9(), saveat = t_short, reltol = 1e-9, abstol = 1e-9)
data_short = convert(Array, data_sol_short) # This operation produces column major dataset obs as columns, equations as rows
data_sol = solve(prob, Vern9(), saveat = time_points, reltol = 1e-9, abstol = 1e-9)
data = convert(Array, data_sol)
2×3001 Matrix{Float64}:
 1.0  1.00072  1.00144  1.00216  1.00289  …  -0.229157  -0.228976  -0.22879
3
 1.0  1.00166  1.00332  1.00497  1.00661     -0.65759   -0.655923  -0.65424
8
Plot of the solution
Short Solution
plot(data_sol_short)

Longer Solution
plot(data_sol)

Local Solution from the short data set

obj_short = build_loss_objective(prob_short, Tsit5(), L2Loss(t_short, data_short), tstops = t_short)
optprob = OptimizationProblem(obj_short, glo_init, lb = first.(glo_bounds), ub = last.(glo_bounds))
@btime res1 = solve(optprob, BBO_adaptive_de_rand_1_bin(), maxiters = 7e3)
# Lower tolerance could lead to smaller fitness (more accuracy)
2.969 s (21069448 allocations: 803.43 MiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
 0.5046351447591682
 0.7489055602923876
 0.09397097351892401
 0.4985245554212076
obj_short = build_loss_objective(
    prob_short, Tsit5(), L2Loss(t_short, data_short), tstops = t_short, reltol = 1e-9)
optprob = OptimizationProblem(obj_short, glo_init, lb = first.(glo_bounds), ub = last.(glo_bounds))
@btime res1 = solve(optprob, BBO_adaptive_de_rand_1_bin(), maxiters = 7e3)
# Change in tolerance makes it worse
2.912 s (21140157 allocations: 805.19 MiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
 0.8312909361389815
 0.9776197016782198
 0.08554290570106331
 0.5007265188988015
obj_short = build_loss_objective(prob_short, Vern9(), L2Loss(t_short, data_short),
    tstops = t_short, reltol = 1e-9, abstol = 1e-9)
optprob = OptimizationProblem(obj_short, glo_init, lb = first.(glo_bounds), ub = last.(glo_bounds))
@btime res1 = solve(optprob, BBO_adaptive_de_rand_1_bin(), maxiters = 7e3)
# using the more accurate Vern9() reduces the fitness marginally and leads to some increase in time taken
4.779 s (42507206 allocations: 1.11 GiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
 0.48349668135455476
 0.7016509896807889
 0.08965121126120089
 0.4996385714698015

Using NLopt

Global Optimisation
obj_short = build_loss_objective(prob_short, Vern9(), L2Loss(t_short, data_short),
    tstops = t_short, reltol = 1e-9, abstol = 1e-9)
SciMLBase.OptimizationFunction{true, SciMLBase.NoAD, DiffEqParamEstim.var"#
37#38"{Nothing, typeof(DiffEqParamEstim.STANDARD_PROB_GENERATOR), Base.Pair
s{Symbol, Any, Nothing, @NamedTuple{tstops::Vector{Float64}, reltol::Float6
4, abstol::Float64}}, SciMLBase.ODEProblem{Vector{Float64}, Tuple{Float64, 
Float64}, true, ModelingToolkitBase.MTKParameters{Vector{Float64}, Vector{F
loat64}, Tuple{}, Tuple{}, Tuple{}, Tuple{}}, SciMLBase.ODEFunction{true, S
ciMLBase.AutoDespecialize, ModelingToolkitBase.GeneratedFunctionWrapper{Tup
le{2, 3, true}, RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:___mtk
unknowns___, :___mtkparameters___, :__argₛᵧₘ12968198168038750593), Modeling
ToolkitBase.var"#_RGF_ModTag", ModelingToolkitBase.var"#_RGF_ModTag", (0xb4
dec7fc, 0x0eef51a9, 0xe6d646f8, 0xd5b37c85, 0x7ae33bfd), Nothing}, RuntimeG
eneratedFunctions.RuntimeGeneratedFunction{(:__argₛᵧₘ1401282876548370056, :
___mtkunknowns___, :___mtkparameters___, :__argₛᵧₘ12968198168038750593), Mo
delingToolkitBase.var"#_RGF_ModTag", ModelingToolkitBase.var"#_RGF_ModTag",
 (0xcc4caf47, 0xa22b65af, 0xd2ae4f08, 0x45b5d405, 0xd97af149), Nothing}}, L
inearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Noth
ing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Modelin
gToolkitBase.ObservedFunctionCache{ModelingToolkitBase.System, Nothing}, No
thing, ModelingToolkitBase.System, Union{Nothing, SciMLBase.OverrideInitDat
a}, Union{Nothing, SciMLBase.ODENLStepData}}, Base.Pairs{Symbol, Union{}, N
othing, @NamedTuple{}}, SciMLBase.StandardODEProblem}, OrdinaryDiffEqVerner
.Vern9{typeof(OrdinaryDiffEqCore.trivial_limiter!), typeof(OrdinaryDiffEqCo
re.trivial_limiter!), FastBroadcast.Serial, Val{true}}, DiffEqParamEstim.L2
Loss{Vector{Float64}, Matrix{Float64}, Nothing, Nothing, Nothing, Nothing},
 Nothing, Tuple{}}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, N
othing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLB
ase.DEFAULT_OBSERVED_NO_TIME), Nothing, Nothing, Nothing, Nothing, Nothing,
 Nothing, Nothing, Nothing, Nothing, Nothing}(DiffEqParamEstim.var"#37#38"{
Nothing, typeof(DiffEqParamEstim.STANDARD_PROB_GENERATOR), Base.Pairs{Symbo
l, Any, Nothing, @NamedTuple{tstops::Vector{Float64}, reltol::Float64, abst
ol::Float64}}, SciMLBase.ODEProblem{Vector{Float64}, Tuple{Float64, Float64
}, true, ModelingToolkitBase.MTKParameters{Vector{Float64}, Vector{Float64}
, Tuple{}, Tuple{}, Tuple{}, Tuple{}}, SciMLBase.ODEFunction{true, SciMLBas
e.AutoDespecialize, ModelingToolkitBase.GeneratedFunctionWrapper{Tuple{2, 3
, true}, RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:___mtkunknown
s___, :___mtkparameters___, :__argₛᵧₘ12968198168038750593), ModelingToolkit
Base.var"#_RGF_ModTag", ModelingToolkitBase.var"#_RGF_ModTag", (0xb4dec7fc,
 0x0eef51a9, 0xe6d646f8, 0xd5b37c85, 0x7ae33bfd), Nothing}, RuntimeGenerate
dFunctions.RuntimeGeneratedFunction{(:__argₛᵧₘ1401282876548370056, :___mtku
nknowns___, :___mtkparameters___, :__argₛᵧₘ12968198168038750593), ModelingT
oolkitBase.var"#_RGF_ModTag", ModelingToolkitBase.var"#_RGF_ModTag", (0xcc4
caf47, 0xa22b65af, 0xd2ae4f08, 0x45b5d405, 0xd97af149), Nothing}}, LinearAl
gebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, No
thing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, ModelingToolki
tBase.ObservedFunctionCache{ModelingToolkitBase.System, Nothing}, Nothing, 
ModelingToolkitBase.System, Union{Nothing, SciMLBase.OverrideInitData}, Uni
on{Nothing, SciMLBase.ODENLStepData}}, Base.Pairs{Symbol, Union{}, Nothing,
 @NamedTuple{}}, SciMLBase.StandardODEProblem}, OrdinaryDiffEqVerner.Vern9{
typeof(OrdinaryDiffEqCore.trivial_limiter!), typeof(OrdinaryDiffEqCore.triv
ial_limiter!), FastBroadcast.Serial, Val{true}}, DiffEqParamEstim.L2Loss{Ve
ctor{Float64}, Matrix{Float64}, Nothing, Nothing, Nothing, Nothing}, Nothin
g, Tuple{}}(nothing, DiffEqParamEstim.STANDARD_PROB_GENERATOR, Base.Pairs{S
ymbol, Any, Nothing, @NamedTuple{tstops::Vector{Float64}, reltol::Float64, 
abstol::Float64}}(:tstops => [0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07
, 0.08, 0.09  …  2.91, 2.92, 2.93, 2.94, 2.95, 2.96, 2.97, 2.98, 2.99, 3.0]
, :reltol => 1.0e-9, :abstol => 1.0e-9), SciMLBase.ODEProblem{Vector{Float6
4}, Tuple{Float64, Float64}, true, ModelingToolkitBase.MTKParameters{Vector
{Float64}, Vector{Float64}, Tuple{}, Tuple{}, Tuple{}, Tuple{}}, SciMLBase.
ODEFunction{true, SciMLBase.AutoDespecialize, ModelingToolkitBase.Generated
FunctionWrapper{Tuple{2, 3, true}, RuntimeGeneratedFunctions.RuntimeGenerat
edFunction{(:___mtkunknowns___, :___mtkparameters___, :__argₛᵧₘ129681981680
38750593), ModelingToolkitBase.var"#_RGF_ModTag", ModelingToolkitBase.var"#
_RGF_ModTag", (0xb4dec7fc, 0x0eef51a9, 0xe6d646f8, 0xd5b37c85, 0x7ae33bfd),
 Nothing}, RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:__argₛᵧₘ140
1282876548370056, :___mtkunknowns___, :___mtkparameters___, :__argₛᵧₘ129681
98168038750593), ModelingToolkitBase.var"#_RGF_ModTag", ModelingToolkitBase
.var"#_RGF_ModTag", (0xcc4caf47, 0xa22b65af, 0xd2ae4f08, 0x45b5d405, 0xd97a
f149), Nothing}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Not
hing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothin
g, Nothing, ModelingToolkitBase.ObservedFunctionCache{ModelingToolkitBase.S
ystem, Nothing}, Nothing, ModelingToolkitBase.System, Union{Nothing, SciMLB
ase.OverrideInitData}, Union{Nothing, SciMLBase.ODENLStepData}}, Base.Pairs
{Symbol, Union{}, Nothing, @NamedTuple{}}, SciMLBase.StandardODEProblem}(Sc
iMLBase.ODEFunction{true, SciMLBase.AutoDespecialize, ModelingToolkitBase.G
eneratedFunctionWrapper{Tuple{2, 3, true}, RuntimeGeneratedFunctions.Runtim
eGeneratedFunction{(:___mtkunknowns___, :___mtkparameters___, :__argₛᵧₘ1296
8198168038750593), ModelingToolkitBase.var"#_RGF_ModTag", ModelingToolkitBa
se.var"#_RGF_ModTag", (0xb4dec7fc, 0x0eef51a9, 0xe6d646f8, 0xd5b37c85, 0x7a
e33bfd), Nothing}, RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:__a
rgₛᵧₘ1401282876548370056, :___mtkunknowns___, :___mtkparameters___, :__argₛ
ᵧₘ12968198168038750593), ModelingToolkitBase.var"#_RGF_ModTag", ModelingToo
lkitBase.var"#_RGF_ModTag", (0xcc4caf47, 0xa22b65af, 0xd2ae4f08, 0x45b5d405
, 0xd97af149), Nothing}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Noth
ing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing
, Nothing, Nothing, ModelingToolkitBase.ObservedFunctionCache{ModelingToolk
itBase.System, Nothing}, Nothing, ModelingToolkitBase.System, Union{Nothing
, SciMLBase.OverrideInitData}, Union{Nothing, SciMLBase.ODENLStepData}}(Mod
elingToolkitBase.GeneratedFunctionWrapper{Tuple{2, 3, true}, RuntimeGenerat
edFunctions.RuntimeGeneratedFunction{(:___mtkunknowns___, :___mtkparameters
___, :__argₛᵧₘ12968198168038750593), ModelingToolkitBase.var"#_RGF_ModTag",
 ModelingToolkitBase.var"#_RGF_ModTag", (0xb4dec7fc, 0x0eef51a9, 0xe6d646f8
, 0xd5b37c85, 0x7ae33bfd), Nothing}, RuntimeGeneratedFunctions.RuntimeGener
atedFunction{(:__argₛᵧₘ1401282876548370056, :___mtkunknowns___, :___mtkpara
meters___, :__argₛᵧₘ12968198168038750593), ModelingToolkitBase.var"#_RGF_Mo
dTag", ModelingToolkitBase.var"#_RGF_ModTag", (0xcc4caf47, 0xa22b65af, 0xd2
ae4f08, 0x45b5d405, 0xd97af149), Nothing}}(RuntimeGeneratedFunctions.Runtim
eGeneratedFunction{(:___mtkunknowns___, :___mtkparameters___, :__argₛᵧₘ1296
8198168038750593), ModelingToolkitBase.var"#_RGF_ModTag", ModelingToolkitBa
se.var"#_RGF_ModTag", (0xb4dec7fc, 0x0eef51a9, 0xe6d646f8, 0xd5b37c85, 0x7a
e33bfd), Nothing}(nothing), RuntimeGeneratedFunctions.RuntimeGeneratedFunct
ion{(:__argₛᵧₘ1401282876548370056, :___mtkunknowns___, :___mtkparameters___
, :__argₛᵧₘ12968198168038750593), ModelingToolkitBase.var"#_RGF_ModTag", Mo
delingToolkitBase.var"#_RGF_ModTag", (0xcc4caf47, 0xa22b65af, 0xd2ae4f08, 0
x45b5d405, 0xd97af149), Nothing}(nothing)), LinearAlgebra.UniformScaling{Bo
ol}(true), nothing, nothing, nothing, nothing, nothing, nothing, nothing, n
othing, nothing, nothing, nothing, nothing, ModelingToolkitBase.ObservedFun
ctionCache{ModelingToolkitBase.System, Nothing}(Model fitz:
Equations (2):
  2 standard: see equations(fitz)
Unknowns (2): see unknowns(fitz)
  w(t)
  v(t)
Parameters (4): see parameters(fitz)
  a
  b
  τinv
  l, Dict{Any, Any}(), false, false, ModelingToolkitBase, false, nothing), 
nothing, Model fitz:
Equations (2):
  2 standard: see equations(fitz)
Unknowns (2): see unknowns(fitz)
  w(t)
  v(t)
Parameters (4): see parameters(fitz)
  a
  b
  τinv
  l, SciMLBase.OverrideInitData{SciMLBase.NonlinearProblem{Nothing, true, M
odelingToolkitBase.MTKParameters{Vector{Float64}, StaticArraysCore.SVector{
0, Float64}, Tuple{}, Tuple{}, Tuple{}, Tuple{}}, SciMLBase.NonlinearFuncti
on{true, SciMLBase.AutoDespecialize, ModelingToolkitBase.GeneratedFunctionW
rapper{Tuple{2, 2, true}, RuntimeGeneratedFunctions.RuntimeGeneratedFunctio
n{(:___mtkunknowns___, :___mtkparameters___), ModelingToolkitBase.var"#_RGF
_ModTag", ModelingToolkitBase.var"#_RGF_ModTag", (0xe0a7f55e, 0xcb0f8c13, 0
x5afbe72e, 0x825c4ce9, 0x3418c4a5), Nothing}, RuntimeGeneratedFunctions.Run
timeGeneratedFunction{(:__argₛᵧₘ1401282876548370056, :___mtkunknowns___, :_
__mtkparameters___), ModelingToolkitBase.var"#_RGF_ModTag", ModelingToolkit
Base.var"#_RGF_ModTag", (0xac9dd6f8, 0xf3d8414c, 0x01f2cade, 0x451b4ee8, 0x
29c649f2), Nothing}}, LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing,
 Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Mo
delingToolkitBase.ObservedFunctionCache{ModelingToolkitBase.System, Nothing
}, Nothing, ModelingToolkitBase.System, Nothing, Nothing}, Base.Pairs{Symbo
l, Union{}, Nothing, @NamedTuple{}}, SciMLBase.StandardNonlinearProblem, No
thing, Nothing}, typeof(ModelingToolkitBase.update_initializeprob!), Modeli
ngToolkitBase.InitializationMap{true, typeof(identity), ModelingToolkitBase
.PromoteToTunableEltype{ModelingToolkitBase.CopyParamsByTemplate{true, Tupl
e{ModelingToolkitBase.ParameterIndex{SciMLStructures.Tunable, UnitRange{Int
64}}, ModelingToolkitBase.ParameterIndex{SciMLStructures.Tunable, UnitRange
{Int64}}}, 1, Nothing}, Float64}}, ModelingToolkitBase.var"#initprobpmap_sp
lit#770"{ModelingToolkitBase.MTKParametersReconstructor{ComposedFunction{Mo
delingToolkitBase.PConstructorApplicator{typeof(identity)}, ModelingToolkit
Base.CopyParamsByTemplate{true, Tuple{ModelingToolkitBase.ParameterIndex{Sc
iMLStructures.Tunable, UnitRange{Int64}}}, 1, Nothing}}, ComposedFunction{M
odelingToolkitBase.PConstructorApplicator{typeof(identity)}, ModelingToolki
tBase.CopyParamsByTemplate{true, Tuple{ModelingToolkitBase.ParameterIndex{S
ciMLStructures.Tunable, UnitRange{Int64}}}, 1, Nothing}}, Returns{Tuple{}},
 Returns{Tuple{}}, Returns{Tuple{}}}}, ModelingToolkitBase.InitializationMe
tadata{ModelingToolkitBase.ReconstructInitializeprob{ModelingToolkitBase.MT
KParametersReconstructor{ComposedFunction{ModelingToolkitBase.PConstructorA
pplicator{typeof(identity)}, ModelingToolkitBase.CopyParamsByTemplate{true,
 Tuple{ModelingToolkitBase.IndepVarTemplate, ModelingToolkitBase.ParameterI
ndex{SciMLStructures.Tunable, UnitRange{Int64}}, ModelingToolkitBase.Parame
terIndex{SciMLStructures.Initials, UnitRange{Int64}}}, 1, Nothing}}, Return
s{StaticArraysCore.SVector{0, Float64}}, Returns{Tuple{}}, Returns{Tuple{}}
, Returns{Tuple{}}}, ComposedFunction{typeof(identity), ModelingToolkitBase
.ObservedWrapper{true, ModelingToolkitBase.GeneratedFunctionWrapper{Tuple{2
, 3, true}, RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:__mtk_arg_
1, :___mtkparameters___, :__argₛᵧₘ12968198168038750593), ModelingToolkitBas
e.var"#_RGF_ModTag", ModelingToolkitBase.var"#_RGF_ModTag", (0x05e7e591, 0x
9a09c886, 0x0267af3f, 0x585cfe8b, 0x75f79d7b), Nothing}, RuntimeGeneratedFu
nctions.RuntimeGeneratedFunction{(:x1, :x2, :x3, :x4), ModelingToolkitBase.
var"#_RGF_ModTag", ModelingToolkitBase.var"#_RGF_ModTag", (0xb896e553, 0xa1
18fcf5, 0xbfeb9719, 0xa096e58a, 0x357542a4), Nothing}}}}}, ModelingToolkitB
ase.GetUpdatedU0{Nothing, SymbolicIndexingInterface.MultipleParametersGette
r{SymbolicIndexingInterface.IndexerNotTimeseries, Vector{SymbolicIndexingIn
terface.GetParameterIndex{ModelingToolkitBase.ParameterIndex{SciMLStructure
s.Initials, Int64}}}, Nothing}}, ModelingToolkitBase.SetInitialUnknowns{Sym
bolicIndexingInterface.MultipleSetters{Vector{SymbolicIndexingInterface.Par
ameterHookWrapper{SymbolicIndexingInterface.SetParameterIndex{ModelingToolk
itBase.ParameterIndex{SciMLStructures.Initials, Int64}}, SymbolicUtils.Basi
cSymbolicImpl.var"typeof(BasicSymbolicImpl)"{SymbolicUtils.SymReal}}}}}}, V
al{true}}(SciMLBase.NonlinearProblem{Nothing, true, ModelingToolkitBase.MTK
Parameters{Vector{Float64}, StaticArraysCore.SVector{0, Float64}, Tuple{}, 
Tuple{}, Tuple{}, Tuple{}}, SciMLBase.NonlinearFunction{true, SciMLBase.Aut
oDespecialize, ModelingToolkitBase.GeneratedFunctionWrapper{Tuple{2, 2, tru
e}, RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:___mtkunknowns___,
 :___mtkparameters___), ModelingToolkitBase.var"#_RGF_ModTag", ModelingTool
kitBase.var"#_RGF_ModTag", (0xe0a7f55e, 0xcb0f8c13, 0x5afbe72e, 0x825c4ce9,
 0x3418c4a5), Nothing}, RuntimeGeneratedFunctions.RuntimeGeneratedFunction{
(:__argₛᵧₘ1401282876548370056, :___mtkunknowns___, :___mtkparameters___), M
odelingToolkitBase.var"#_RGF_ModTag", ModelingToolkitBase.var"#_RGF_ModTag"
, (0xac9dd6f8, 0xf3d8414c, 0x01f2cade, 0x451b4ee8, 0x29c649f2), Nothing}}, 
LinearAlgebra.UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Not
hing, Nothing, Nothing, Nothing, Nothing, Nothing, ModelingToolkitBase.Obse
rvedFunctionCache{ModelingToolkitBase.System, Nothing}, Nothing, ModelingTo
olkitBase.System, Nothing, Nothing}, Base.Pairs{Symbol, Union{}, Nothing, @
NamedTuple{}}, SciMLBase.StandardNonlinearProblem, Nothing, Nothing}(SciMLB
ase.NonlinearFunction{true, SciMLBase.AutoDespecialize, ModelingToolkitBase
.GeneratedFunctionWrapper{Tuple{2, 2, true}, RuntimeGeneratedFunctions.Runt
imeGeneratedFunction{(:___mtkunknowns___, :___mtkparameters___), ModelingTo
olkitBase.var"#_RGF_ModTag", ModelingToolkitBase.var"#_RGF_ModTag", (0xe0a7
f55e, 0xcb0f8c13, 0x5afbe72e, 0x825c4ce9, 0x3418c4a5), Nothing}, RuntimeGen
eratedFunctions.RuntimeGeneratedFunction{(:__argₛᵧₘ1401282876548370056, :__
_mtkunknowns___, :___mtkparameters___), ModelingToolkitBase.var"#_RGF_ModTa
g", ModelingToolkitBase.var"#_RGF_ModTag", (0xac9dd6f8, 0xf3d8414c, 0x01f2c
ade, 0x451b4ee8, 0x29c649f2), Nothing}}, LinearAlgebra.UniformScaling{Bool}
, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, N
othing, Nothing, ModelingToolkitBase.ObservedFunctionCache{ModelingToolkitB
ase.System, Nothing}, Nothing, ModelingToolkitBase.System, Nothing, Nothing
}(ModelingToolkitBase.GeneratedFunctionWrapper{Tuple{2, 2, true}, RuntimeGe
neratedFunctions.RuntimeGeneratedFunction{(:___mtkunknowns___, :___mtkparam
eters___), ModelingToolkitBase.var"#_RGF_ModTag", ModelingToolkitBase.var"#
_RGF_ModTag", (0xe0a7f55e, 0xcb0f8c13, 0x5afbe72e, 0x825c4ce9, 0x3418c4a5),
 Nothing}, RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:__argₛᵧₘ140
1282876548370056, :___mtkunknowns___, :___mtkparameters___), ModelingToolki
tBase.var"#_RGF_ModTag", ModelingToolkitBase.var"#_RGF_ModTag", (0xac9dd6f8
, 0xf3d8414c, 0x01f2cade, 0x451b4ee8, 0x29c649f2), Nothing}}(RuntimeGenerat
edFunctions.RuntimeGeneratedFunction{(:___mtkunknowns___, :___mtkparameters
___), ModelingToolkitBase.var"#_RGF_ModTag", ModelingToolkitBase.var"#_RGF_
ModTag", (0xe0a7f55e, 0xcb0f8c13, 0x5afbe72e, 0x825c4ce9, 0x3418c4a5), Noth
ing}(nothing), RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:__argₛᵧ
ₘ1401282876548370056, :___mtkunknowns___, :___mtkparameters___), ModelingTo
olkitBase.var"#_RGF_ModTag", ModelingToolkitBase.var"#_RGF_ModTag", (0xac9d
d6f8, 0xf3d8414c, 0x01f2cade, 0x451b4ee8, 0x29c649f2), Nothing}(nothing)), 
LinearAlgebra.UniformScaling{Bool}(true), nothing, nothing, nothing, nothin
g, nothing, nothing, nothing, nothing, nothing, nothing, ModelingToolkitBas
e.ObservedFunctionCache{ModelingToolkitBase.System, Nothing}(Model fitz:
Parameters (9): see parameters(fitz)
  t
  a
  b
  τinv
  ⋮
Observed (4): see observed(fitz), Dict{Any, Any}(), false, false, ModelingT
oolkitBase, false, nothing), nothing, Model fitz:
Parameters (9): see parameters(fitz)
  t
  a
  b
  τinv
  ⋮
Observed (4): see observed(fitz), nothing, nothing), nothing, ModelingToolk
itBase.MTKParameters{Vector{Float64}, StaticArraysCore.SVector{0, Float64},
 Tuple{}, Tuple{}, Tuple{}, Tuple{}}([0.0, 0.7, 0.8, 0.08, 0.5, 1.0, 0.0, 0
.0, 1.0], Float64[], (), (), (), ()), SciMLBase.StandardNonlinearProblem(),
 nothing, nothing, Base.Pairs{Symbol, Union{}, Nothing, @NamedTuple{}}()), 
ModelingToolkitBase.update_initializeprob!, ModelingToolkitBase.Initializat
ionMap{true, typeof(identity), ModelingToolkitBase.PromoteToTunableEltype{M
odelingToolkitBase.CopyParamsByTemplate{true, Tuple{ModelingToolkitBase.Par
ameterIndex{SciMLStructures.Tunable, UnitRange{Int64}}, ModelingToolkitBase
.ParameterIndex{SciMLStructures.Tunable, UnitRange{Int64}}}, 1, Nothing}, F
loat64}}(identity, ModelingToolkitBase.PromoteToTunableEltype{ModelingToolk
itBase.CopyParamsByTemplate{true, Tuple{ModelingToolkitBase.ParameterIndex{
SciMLStructures.Tunable, UnitRange{Int64}}, ModelingToolkitBase.ParameterIn
dex{SciMLStructures.Tunable, UnitRange{Int64}}}, 1, Nothing}, Float64}(Mode
lingToolkitBase.CopyParamsByTemplate{true, Tuple{ModelingToolkitBase.Parame
terIndex{SciMLStructures.Tunable, UnitRange{Int64}}, ModelingToolkitBase.Pa
rameterIndex{SciMLStructures.Tunable, UnitRange{Int64}}}, 1, Nothing}((Mode
lingToolkitBase.ParameterIndex{SciMLStructures.Tunable, UnitRange{Int64}}(S
ciMLStructures.Tunable(), 9:9, false), ModelingToolkitBase.ParameterIndex{S
ciMLStructures.Tunable, UnitRange{Int64}}(SciMLStructures.Tunable(), 6:6, f
alse)), (2,), nothing))), ModelingToolkitBase.var"#initprobpmap_split#770"{
ModelingToolkitBase.MTKParametersReconstructor{ComposedFunction{ModelingToo
lkitBase.PConstructorApplicator{typeof(identity)}, ModelingToolkitBase.Copy
ParamsByTemplate{true, Tuple{ModelingToolkitBase.ParameterIndex{SciMLStruct
ures.Tunable, UnitRange{Int64}}}, 1, Nothing}}, ComposedFunction{ModelingTo
olkitBase.PConstructorApplicator{typeof(identity)}, ModelingToolkitBase.Cop
yParamsByTemplate{true, Tuple{ModelingToolkitBase.ParameterIndex{SciMLStruc
tures.Tunable, UnitRange{Int64}}}, 1, Nothing}}, Returns{Tuple{}}, Returns{
Tuple{}}, Returns{Tuple{}}}}(ModelingToolkitBase.MTKParametersReconstructor
{ComposedFunction{ModelingToolkitBase.PConstructorApplicator{typeof(identit
y)}, ModelingToolkitBase.CopyParamsByTemplate{true, Tuple{ModelingToolkitBa
se.ParameterIndex{SciMLStructures.Tunable, UnitRange{Int64}}}, 1, Nothing}}
, ComposedFunction{ModelingToolkitBase.PConstructorApplicator{typeof(identi
ty)}, ModelingToolkitBase.CopyParamsByTemplate{true, Tuple{ModelingToolkitB
ase.ParameterIndex{SciMLStructures.Tunable, UnitRange{Int64}}}, 1, Nothing}
}, Returns{Tuple{}}, Returns{Tuple{}}, Returns{Tuple{}}}(ModelingToolkitBas
e.PConstructorApplicator{typeof(identity)}(identity) ∘ ModelingToolkitBase.
CopyParamsByTemplate{true, Tuple{ModelingToolkitBase.ParameterIndex{SciMLSt
ructures.Tunable, UnitRange{Int64}}}, 1, Nothing}((ModelingToolkitBase.Para
meterIndex{SciMLStructures.Tunable, UnitRange{Int64}}(SciMLStructures.Tunab
le(), 2:5, false),), (4,), nothing), ModelingToolkitBase.PConstructorApplic
ator{typeof(identity)}(identity) ∘ ModelingToolkitBase.CopyParamsByTemplate
{true, Tuple{ModelingToolkitBase.ParameterIndex{SciMLStructures.Tunable, Un
itRange{Int64}}}, 1, Nothing}((ModelingToolkitBase.ParameterIndex{SciMLStru
ctures.Tunable, UnitRange{Int64}}(SciMLStructures.Tunable(), 6:9, false),),
 (4,), nothing), Returns{Tuple{}}(()), Returns{Tuple{}}(()), Returns{Tuple{
}}(()), 0)), ModelingToolkitBase.InitializationMetadata{ModelingToolkitBase
.ReconstructInitializeprob{ModelingToolkitBase.MTKParametersReconstructor{C
omposedFunction{ModelingToolkitBase.PConstructorApplicator{typeof(identity)
}, ModelingToolkitBase.CopyParamsByTemplate{true, Tuple{ModelingToolkitBase
.IndepVarTemplate, ModelingToolkitBase.ParameterIndex{SciMLStructures.Tunab
le, UnitRange{Int64}}, ModelingToolkitBase.ParameterIndex{SciMLStructures.I
nitials, UnitRange{Int64}}}, 1, Nothing}}, Returns{StaticArraysCore.SVector
{0, Float64}}, Returns{Tuple{}}, Returns{Tuple{}}, Returns{Tuple{}}}, Compo
sedFunction{typeof(identity), ModelingToolkitBase.ObservedWrapper{true, Mod
elingToolkitBase.GeneratedFunctionWrapper{Tuple{2, 3, true}, RuntimeGenerat
edFunctions.RuntimeGeneratedFunction{(:__mtk_arg_1, :___mtkparameters___, :
__argₛᵧₘ12968198168038750593), ModelingToolkitBase.var"#_RGF_ModTag", Model
ingToolkitBase.var"#_RGF_ModTag", (0x05e7e591, 0x9a09c886, 0x0267af3f, 0x58
5cfe8b, 0x75f79d7b), Nothing}, RuntimeGeneratedFunctions.RuntimeGeneratedFu
nction{(:x1, :x2, :x3, :x4), ModelingToolkitBase.var"#_RGF_ModTag", Modelin
gToolkitBase.var"#_RGF_ModTag", (0xb896e553, 0xa118fcf5, 0xbfeb9719, 0xa096
e58a, 0x357542a4), Nothing}}}}}, ModelingToolkitBase.GetUpdatedU0{Nothing, 
SymbolicIndexingInterface.MultipleParametersGetter{SymbolicIndexingInterfac
e.IndexerNotTimeseries, Vector{SymbolicIndexingInterface.GetParameterIndex{
ModelingToolkitBase.ParameterIndex{SciMLStructures.Initials, Int64}}}, Noth
ing}}, ModelingToolkitBase.SetInitialUnknowns{SymbolicIndexingInterface.Mul
tipleSetters{Vector{SymbolicIndexingInterface.ParameterHookWrapper{Symbolic
IndexingInterface.SetParameterIndex{ModelingToolkitBase.ParameterIndex{SciM
LStructures.Initials, Int64}}, SymbolicUtils.BasicSymbolicImpl.var"typeof(B
asicSymbolicImpl)"{SymbolicUtils.SymReal}}}}}}(ModelingToolkitBase.AtomicAr
rayDict{SymbolicUtils.BasicSymbolicImpl.var"typeof(BasicSymbolicImpl)"{Symb
olicUtils.SymReal}, Dict{SymbolicUtils.BasicSymbolicImpl.var"typeof(BasicSy
mbolicImpl)"{SymbolicUtils.SymReal}, SymbolicUtils.BasicSymbolicImpl.var"ty
peof(BasicSymbolicImpl)"{SymbolicUtils.SymReal}}}(v(t) => 1.0, Initial(w(t)
) => false, b => 0.8, a => 0.7, τinv => 0.08, l => 0.5, Initial(vˍt(t)) => 
false, Initial(wˍt(t)) => false, w(t) => 1.0, Initial(v(t)) => false…), Mod
elingToolkitBase.AtomicArrayDict{SymbolicUtils.BasicSymbolicImpl.var"typeof
(BasicSymbolicImpl)"{SymbolicUtils.SymReal}, Dict{SymbolicUtils.BasicSymbol
icImpl.var"typeof(BasicSymbolicImpl)"{SymbolicUtils.SymReal}, SymbolicUtils
.BasicSymbolicImpl.var"typeof(BasicSymbolicImpl)"{SymbolicUtils.SymReal}}}(
), Symbolics.Equation[], true, true, ModelingToolkitBase.ReconstructInitial
izeprob{ModelingToolkitBase.MTKParametersReconstructor{ComposedFunction{Mod
elingToolkitBase.PConstructorApplicator{typeof(identity)}, ModelingToolkitB
ase.CopyParamsByTemplate{true, Tuple{ModelingToolkitBase.IndepVarTemplate, 
ModelingToolkitBase.ParameterIndex{SciMLStructures.Tunable, UnitRange{Int64
}}, ModelingToolkitBase.ParameterIndex{SciMLStructures.Initials, UnitRange{
Int64}}}, 1, Nothing}}, Returns{StaticArraysCore.SVector{0, Float64}}, Retu
rns{Tuple{}}, Returns{Tuple{}}, Returns{Tuple{}}}, ComposedFunction{typeof(
identity), ModelingToolkitBase.ObservedWrapper{true, ModelingToolkitBase.Ge
neratedFunctionWrapper{Tuple{2, 3, true}, RuntimeGeneratedFunctions.Runtime
GeneratedFunction{(:__mtk_arg_1, :___mtkparameters___, :__argₛᵧₘ12968198168
038750593), ModelingToolkitBase.var"#_RGF_ModTag", ModelingToolkitBase.var"
#_RGF_ModTag", (0x05e7e591, 0x9a09c886, 0x0267af3f, 0x585cfe8b, 0x75f79d7b)
, Nothing}, RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:x1, :x2, :
x3, :x4), ModelingToolkitBase.var"#_RGF_ModTag", ModelingToolkitBase.var"#_
RGF_ModTag", (0xb896e553, 0xa118fcf5, 0xbfeb9719, 0xa096e58a, 0x357542a4), 
Nothing}}}}}(ModelingToolkitBase.MTKParametersReconstructor{ComposedFunctio
n{ModelingToolkitBase.PConstructorApplicator{typeof(identity)}, ModelingToo
lkitBase.CopyParamsByTemplate{true, Tuple{ModelingToolkitBase.IndepVarTempl
ate, ModelingToolkitBase.ParameterIndex{SciMLStructures.Tunable, UnitRange{
Int64}}, ModelingToolkitBase.ParameterIndex{SciMLStructures.Initials, UnitR
ange{Int64}}}, 1, Nothing}}, Returns{StaticArraysCore.SVector{0, Float64}},
 Returns{Tuple{}}, Returns{Tuple{}}, Returns{Tuple{}}}(ModelingToolkitBase.
PConstructorApplicator{typeof(identity)}(identity) ∘ ModelingToolkitBase.Co
pyParamsByTemplate{true, Tuple{ModelingToolkitBase.IndepVarTemplate, Modeli
ngToolkitBase.ParameterIndex{SciMLStructures.Tunable, UnitRange{Int64}}, Mo
delingToolkitBase.ParameterIndex{SciMLStructures.Initials, UnitRange{Int64}
}}, 1, Nothing}((ModelingToolkitBase.IndepVarTemplate(), ModelingToolkitBas
e.ParameterIndex{SciMLStructures.Tunable, UnitRange{Int64}}(SciMLStructures
.Tunable(), 1:4, false), ModelingToolkitBase.ParameterIndex{SciMLStructures
.Initials, UnitRange{Int64}}(SciMLStructures.Initials(), 1:4, false)), (9,)
, nothing), Returns{StaticArraysCore.SVector{0, Float64}}(Float64[]), Retur
ns{Tuple{}}(()), Returns{Tuple{}}(()), Returns{Tuple{}}(()), 0), identity ∘
 ModelingToolkitBase.ObservedWrapper{true, ModelingToolkitBase.GeneratedFun
ctionWrapper{Tuple{2, 3, true}, RuntimeGeneratedFunctions.RuntimeGeneratedF
unction{(:__mtk_arg_1, :___mtkparameters___, :__argₛᵧₘ12968198168038750593)
, ModelingToolkitBase.var"#_RGF_ModTag", ModelingToolkitBase.var"#_RGF_ModT
ag", (0x05e7e591, 0x9a09c886, 0x0267af3f, 0x585cfe8b, 0x75f79d7b), Nothing}
, RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:x1, :x2, :x3, :x4), 
ModelingToolkitBase.var"#_RGF_ModTag", ModelingToolkitBase.var"#_RGF_ModTag
", (0xb896e553, 0xa118fcf5, 0xbfeb9719, 0xa096e58a, 0x357542a4), Nothing}}}
(ModelingToolkitBase.GeneratedFunctionWrapper{Tuple{2, 3, true}, RuntimeGen
eratedFunctions.RuntimeGeneratedFunction{(:__mtk_arg_1, :___mtkparameters__
_, :__argₛᵧₘ12968198168038750593), ModelingToolkitBase.var"#_RGF_ModTag", M
odelingToolkitBase.var"#_RGF_ModTag", (0x05e7e591, 0x9a09c886, 0x0267af3f, 
0x585cfe8b, 0x75f79d7b), Nothing}, RuntimeGeneratedFunctions.RuntimeGenerat
edFunction{(:x1, :x2, :x3, :x4), ModelingToolkitBase.var"#_RGF_ModTag", Mod
elingToolkitBase.var"#_RGF_ModTag", (0xb896e553, 0xa118fcf5, 0xbfeb9719, 0x
a096e58a, 0x357542a4), Nothing}}(RuntimeGeneratedFunctions.RuntimeGenerated
Function{(:__mtk_arg_1, :___mtkparameters___, :__argₛᵧₘ12968198168038750593
), ModelingToolkitBase.var"#_RGF_ModTag", ModelingToolkitBase.var"#_RGF_Mod
Tag", (0x05e7e591, 0x9a09c886, 0x0267af3f, 0x585cfe8b, 0x75f79d7b), Nothing
}(nothing), RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(:x1, :x2, :
x3, :x4), ModelingToolkitBase.var"#_RGF_ModTag", ModelingToolkitBase.var"#_
RGF_ModTag", (0xb896e553, 0xa118fcf5, 0xbfeb9719, 0xa096e58a, 0x357542a4), 
Nothing}(nothing)))), ModelingToolkitBase.GetUpdatedU0{Nothing, SymbolicInd
exingInterface.MultipleParametersGetter{SymbolicIndexingInterface.IndexerNo
tTimeseries, Vector{SymbolicIndexingInterface.GetParameterIndex{ModelingToo
lkitBase.ParameterIndex{SciMLStructures.Initials, Int64}}}, Nothing}}(Bool[
0, 0], nothing, SymbolicIndexingInterface.MultipleParametersGetter{Symbolic
IndexingInterface.IndexerNotTimeseries, Vector{SymbolicIndexingInterface.Ge
tParameterIndex{ModelingToolkitBase.ParameterIndex{SciMLStructures.Initials
, Int64}}}, Nothing}(SymbolicIndexingInterface.GetParameterIndex{ModelingTo
olkitBase.ParameterIndex{SciMLStructures.Initials, Int64}}[SymbolicIndexing
Interface.GetParameterIndex{ModelingToolkitBase.ParameterIndex{SciMLStructu
res.Initials, Int64}}(ModelingToolkitBase.ParameterIndex{SciMLStructures.In
itials, Int64}(SciMLStructures.Initials(), 4, false)), SymbolicIndexingInte
rface.GetParameterIndex{ModelingToolkitBase.ParameterIndex{SciMLStructures.
Initials, Int64}}(ModelingToolkitBase.ParameterIndex{SciMLStructures.Initia
ls, Int64}(SciMLStructures.Initials(), 1, false))], nothing)), ModelingTool
kitBase.SetInitialUnknowns{SymbolicIndexingInterface.MultipleSetters{Vector
{SymbolicIndexingInterface.ParameterHookWrapper{SymbolicIndexingInterface.S
etParameterIndex{ModelingToolkitBase.ParameterIndex{SciMLStructures.Initial
s, Int64}}, SymbolicUtils.BasicSymbolicImpl.var"typeof(BasicSymbolicImpl)"{
SymbolicUtils.SymReal}}}}}(SymbolicIndexingInterface.MultipleSetters{Vector
{SymbolicIndexingInterface.ParameterHookWrapper{SymbolicIndexingInterface.S
etParameterIndex{ModelingToolkitBase.ParameterIndex{SciMLStructures.Initial
s, Int64}}, SymbolicUtils.BasicSymbolicImpl.var"typeof(BasicSymbolicImpl)"{
SymbolicUtils.SymReal}}}}(SymbolicIndexingInterface.ParameterHookWrapper{Sy
mbolicIndexingInterface.SetParameterIndex{ModelingToolkitBase.ParameterInde
x{SciMLStructures.Initials, Int64}}, SymbolicUtils.BasicSymbolicImpl.var"ty
peof(BasicSymbolicImpl)"{SymbolicUtils.SymReal}}[SymbolicIndexingInterface.
ParameterHookWrapper{SymbolicIndexingInterface.SetParameterIndex{ModelingTo
olkitBase.ParameterIndex{SciMLStructures.Initials, Int64}}, SymbolicUtils.B
asicSymbolicImpl.var"typeof(BasicSymbolicImpl)"{SymbolicUtils.SymReal}}(Sym
bolicIndexingInterface.SetParameterIndex{ModelingToolkitBase.ParameterIndex
{SciMLStructures.Initials, Int64}}(ModelingToolkitBase.ParameterIndex{SciML
Structures.Initials, Int64}(SciMLStructures.Initials(), 4, false)), Initial
(w(t))), SymbolicIndexingInterface.ParameterHookWrapper{SymbolicIndexingInt
erface.SetParameterIndex{ModelingToolkitBase.ParameterIndex{SciMLStructures
.Initials, Int64}}, SymbolicUtils.BasicSymbolicImpl.var"typeof(BasicSymboli
cImpl)"{SymbolicUtils.SymReal}}(SymbolicIndexingInterface.SetParameterIndex
{ModelingToolkitBase.ParameterIndex{SciMLStructures.Initials, Int64}}(Model
ingToolkitBase.ParameterIndex{SciMLStructures.Initials, Int64}(SciMLStructu
res.Initials(), 1, false)), Initial(v(t)))]), [4, 1]), ModelingToolkitBase.
MissingGuessValue.var"typeof(MissingGuessValue)"(ModelingToolkitBase.Missin
gGuessValue.var"##Storage#HashedRandom"())), Val{true}()), nothing), [1.0, 
1.0], (0.0, 3.0), ModelingToolkitBase.MTKParameters{Vector{Float64}, Vector
{Float64}, Tuple{}, Tuple{}, Tuple{}, Tuple{}}([0.7, 0.8, 0.08, 0.5], [1.0,
 0.0, 0.0, 1.0], (), (), (), ()), Base.Pairs{Symbol, Union{}, Nothing, @Nam
edTuple{}}(), SciMLBase.StandardODEProblem()), OrdinaryDiffEqVerner.Vern9{t
ypeof(OrdinaryDiffEqCore.trivial_limiter!), typeof(OrdinaryDiffEqCore.trivi
al_limiter!), FastBroadcast.Serial, Val{true}}(OrdinaryDiffEqCore.trivial_l
imiter!, OrdinaryDiffEqCore.trivial_limiter!, FastBroadcast.Serial(), Val{t
rue}()), DiffEqParamEstim.L2Loss{Vector{Float64}, Matrix{Float64}, Nothing,
 Nothing, Nothing, Nothing}([0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07,
 0.08, 0.09  …  2.91, 2.92, 2.93, 2.94, 2.95, 2.96, 2.97, 2.98, 2.99, 3.0],
 [1.0 1.000720435211627 … 1.22193331177933 1.222601511669354; 1.0 1.0016630
55982029 … 1.1134077677576417 1.11271910687873], nothing, nothing, nothing,
 nothing, nothing), nothing, ()), SciMLBase.NoAD(), nothing, nothing, nothi
ng, nothing, nothing, nothing, nothing, nothing, nothing, nothing, nothing,
 nothing, nothing, SciMLBase.DEFAULT_OBSERVED_NO_TIME, nothing, nothing, no
thing, nothing, nothing, nothing, nothing, nothing, nothing, nothing)
opt = Opt(:GN_ORIG_DIRECT_L, 4)
optprob = OptimizationProblem(obj_short, glo_init, lb = first.(glo_bounds), ub = last.(glo_bounds))
@btime res1 = solve(optprob, opt, maxiters = 10000, xtol_rel = 1e-12)
6.798 s (59865528 allocations: 1.56 GiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
 0.1920438957477088
 1.1316872427984634
 1.1111111111112206
 0.509577685189625
opt = Opt(:GN_CRS2_LM, 4)
@btime res1 = solve(optprob, opt, maxiters = 10000, xtol_rel = 1e-12)
6.882 s (59746198 allocations: 1.56 GiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
 0.7000001054289524
 0.8000000245355546
 0.07999999329973194
 0.49999999995230004
opt = Opt(:GN_ISRES, 4)
@btime res1 = solve(optprob, opt, maxiters = 10000, xtol_rel = 1e-12)
6.891 s (59770053 allocations: 1.56 GiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
 4.072530850031646
 4.081573004816701
 0.09810169203282876
 0.5131216584764253
opt = Opt(:GN_ESCH, 4)
@btime res1 = solve(optprob, opt, maxiters = 10000, xtol_rel = 1e-12)
6.869 s (59770053 allocations: 1.56 GiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
 2.5776978151220717
 2.9698384556488815
 0.1717557282991468
 0.5094505446268731

Now local optimization algorithms are used to check the global ones. These use the local bounds (loc_bounds) and initial values (loc_init).

obj_short = build_loss_objective(prob_short, Vern9(), L2Loss(t_short, data_short),
    Optimization.AutoForwardDiff(), tstops = t_short, reltol = 1e-9, abstol = 1e-9)
optprob = OptimizationProblem(obj_short, loc_init, lb = first.(loc_bounds), ub = last.(loc_bounds))
OptimizationProblem. In-place: true
u0: 4-element Vector{Float64}:
 0.5
 0.5
 0.5
 0.5
opt = Opt(:LN_BOBYQA, 4)
@btime res1 = solve(optprob, opt, maxiters = 10000, xtol_rel = 1e-12)
1.269 s (11028088 allocations: 294.58 MiB)
retcode: Success
u: 4-element Vector{Float64}:
 0.7000000000188623
 0.8000000000060236
 0.07999999999893552
 0.5000000000000322
opt = Opt(:LN_NELDERMEAD, 4)
@btime res1 = solve(optprob, opt, maxiters = 10000, xtol_rel = 1e-12)
652.073 ms (5748224 allocations: 153.55 MiB)
retcode: Success
u: 4-element Vector{Float64}:
 1.0
 1.0
 0.07355092571547887
 0.5004047023109518
opt = Opt(:LD_SLSQP, 4)
@btime res1 = solve(optprob, opt, maxiters = 10000, xtol_rel = 1e-12)
8.660 s (71095530 allocations: 1.90 GiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
 0.700000000015133
 0.8000000000055394
 0.07999999999920873
 0.5000000000000321
opt = Opt(:LN_COBYLA, 4)
@btime res1 = solve(optprob, opt, maxiters = 10000, xtol_rel = 1e-12)
6.923 s (59740084 allocations: 1.56 GiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
 0.1829436856114406
 0.8339606715478033
 0.19453032306019252
 0.5003613601073567
opt = Opt(:LN_NEWUOA_BOUND, 4)
@btime res1 = solve(optprob, opt, maxiters = 10000, xtol_rel = 1e-12)
627.666 ms (4325260 allocations: 115.54 MiB)
retcode: Success
u: 4-element Vector{Float64}:
 0.24815174877228105
 0.4389927966494055
 0.08539344966317435
 0.49911205692389365
opt = Opt(:LN_PRAXIS, 4)
@btime res1 = solve(optprob, opt, maxiters = 10000, xtol_rel = 1e-12)
559.904 ms (4959275 allocations: 132.47 MiB)
retcode: Success
u: 4-element Vector{Float64}:
 0.7000000000078808
 0.8000000000075309
 0.08000000000000884
 0.5000000000000498
opt = Opt(:LN_SBPLX, 4)
@btime res1 = solve(optprob, opt, maxiters = 10000, xtol_rel = 1e-12)
6.909 s (59740066 allocations: 1.56 GiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
 0.7000016809870933
 0.8000002415243684
 0.07999987937160621
 0.5000000003805862
opt = Opt(:LD_MMA, 4)
@btime res1 = solve(optprob, opt, maxiters = 10000, xtol_rel = 1e-12)
16.221 s (119380443 allocations: 3.39 GiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
 0.2194953414908776
 0.7035126977082891
 0.13312823531746235
 0.499708318694746

Now the longer problem is solved for a global solution

Vern9 solver with reltol=1e-9 and abstol=1e-9 is used and the dataset is increased to 3000 observations per variable with the same integration time step of 0.01.

obj = build_loss_objective(
    prob, Vern9(), L2Loss(time_points, data), Optimization.AutoForwardDiff(),
    tstops = time_points, reltol = 1e-9, abstol = 1e-9)
optprob = OptimizationProblem(obj, glo_init, lb = first.(glo_bounds), ub = last.(glo_bounds))
@btime res1 = solve(optprob, BBO_adaptive_de_rand_1_bin(), maxiters = 4e3)
23.431 s (224364010 allocations: 4.64 GiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
 0.38711692700102035
 0.6954201963531315
 0.060000819766535256
 0.40501129015572684
opt = Opt(:GN_ORIG_DIRECT_L, 4)
@btime res1 = solve(optprob, opt, maxiters = 10000, xtol_rel = 1e-12)
57.190 s (546202158 allocations: 11.28 GiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
 1.1111111111111116
 1.1111111111111107
 0.10059442158207468
 0.5761316872427985
opt = Opt(:GN_CRS2_LM, 4)
@btime res1 = solve(optprob, opt, maxiters = 20000, xtol_rel = 1e-12)
114.803 s (1091640234 allocations: 22.55 GiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
 0.6999999999966802
 0.8000000000028483
 0.08000000000032173
 0.49999999999845446
opt = Opt(:GN_ISRES, 4)
@btime res1 = solve(optprob, opt, maxiters = 50000, xtol_rel = 1e-12)
286.339 s (2729250063 allocations: 56.38 GiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
 0.7000000014419183
 0.8000000017353587
 0.08000000007590248
 0.5000000001004294
opt = Opt(:GN_ESCH, 4)
@btime res1 = solve(optprob, opt, maxiters = 20000, xtol_rel = 1e-12)
114.795 s (1091700060 allocations: 22.55 GiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
 0.0007885361774983767
 0.5836388822043367
 0.04172521411051209
 0.3267094319284882
optprob = OptimizationProblem(obj_short, loc_init, lb = first.(loc_bounds), ub = last.(loc_bounds))
OptimizationProblem. In-place: true
u0: 4-element Vector{Float64}:
 0.5
 0.5
 0.5
 0.5
opt = Opt(:LN_BOBYQA, 4)
@btime res1 = solve(optprob, opt, maxiters = 10000, xtol_rel = 1e-12)
1.215 s (11028088 allocations: 294.58 MiB)
retcode: Success
u: 4-element Vector{Float64}:
 0.7000000000188623
 0.8000000000060236
 0.07999999999893552
 0.5000000000000322
opt = Opt(:LN_NELDERMEAD, 4)
@btime res1 = solve(optprob, opt, maxiters = 10000, xtol_rel = 1e-9)
632.844 ms (5748224 allocations: 153.55 MiB)
retcode: Success
u: 4-element Vector{Float64}:
 1.0
 1.0
 0.07355092571547887
 0.5004047023109518
opt = Opt(:LD_SLSQP, 4)
@btime res1 = solve(optprob, opt, maxiters = 10000, xtol_rel = 1e-12)
8.634 s (71095530 allocations: 1.90 GiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
 0.700000000015133
 0.8000000000055394
 0.07999999999920873
 0.5000000000000321

Conclusion

The parameters used to generate the data are [0.7, 0.8, 0.08, 0.5]. In the latest run:

  • On the short (300-observation) problem, GN_CRS2_LM and the local methods LN_BOBYQA, LN_NELDERMEAD, LD_SLSQP and LN_PRAXIS recover these values to within about 1e-9, and LN_NEWUOA_BOUND and LD_MMA get close. GN_ORIG_DIRECT_L, GN_ISRES, GN_ESCH, LN_COBYLA and LN_SBPLX do not.
  • BBO gets close on the short problem with the default Tsit5 tolerances, but tightening the ODE solver tolerances (reltol = 1e-9, then Vern9 at 1e-9) moved its estimate further from the true values and made the run slower.
  • On the longer (3000-observation) problem, GN_CRS2_LM and GN_ISRES recover the true values, BBO only gets close, and GN_ORIG_DIRECT_L and GN_ESCH do not. Every global run takes considerably longer than on the short problem.
  • The local optimizers in the longer-problem section are run on the short objective obj_short, so they repeat the short-problem results rather than testing the longer problem.

Appendix

These benchmarks are a part of the SciMLBenchmarks.jl repository, found at: https://github.com/SciML/SciMLBenchmarks.jl. For more information on high-performance scientific machine learning, check out the SciML Open Source Software Organization https://sciml.ai.

To locally run this benchmark, do the following commands:

using SciMLBenchmarks
SciMLBenchmarks.weave_file("benchmarks/ParameterEstimation","FitzHughNagumoParameterEstimation.jmd")

Computer Information:

Julia Version 1.12.7
Commit 6d172b025e4 (2026-08-15 08:05 UTC)
Build Info:
  Official https://julialang.org release
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 128 × AMD EPYC 7502 32-Core Processor
  WORD_SIZE: 64
  LLVM: libLLVM-18.1.7 (ORCJIT, znver2)
  GC: Built with stock GC
Threads: 128 default, 1 interactive, 128 GC (on 128 virtual cores)
Environment:
  JULIA_NUM_THREADS = auto

Package Information:

Status `~/github-runners/amdci3-1/_work/SciMLBenchmarks.jl/SciMLBenchmarks.jl/benchmarks/ParameterEstimation/Project.toml`
  [6e4b80f9] BenchmarkTools v1.8.0
  [a134a8b2] BlackBoxOptim v0.6.12
  [a93c6f00] DataFrames v1.8.2
  [bcd4f6db] DelayDiffEq v6.4.1
⌃ [1130ab10] DiffEqParamEstim v2.6.1
  [31c24e10] Distributions v0.25.131
  [f6369f11] ForwardDiff v1.4.6
⌃ [961ee093] ModelingToolkit v11.43.0
⌃ [7771a370] ModelingToolkitBase v1.70.0
  [76087f3c] NLopt v1.2.1
⌃ [7f7a1694] Optimization v5.9.0
  [3e6eede4] OptimizationBBO v0.4.12
  [4e6fcdb7] OptimizationNLopt v0.3.18
  [1dea7af3] OrdinaryDiffEq v7.8.1
  [ab63da0c] ParallelParticleSwarms v1.6.2
  [65888b18] ParameterizedFunctions v5.27.0
  [91a5bcdd] Plots v1.41.7
⌃ [731186ca] RecursiveArrayTools v4.5.1
⌃ [91a8cdf1] SciCompDSL v1.0.3
  [31c91b34] SciMLBenchmarks v0.2.1 [loaded: `/home/crackauc/github-runners/amdci3-1/_work/SciMLBenchmarks.jl/SciMLBenchmarks.jl/src/SciMLBenchmarks.jl` (v0.2.1) expected `/home/crackauc/.julia/packages/SciMLBenchmarks/ceJyd/src/SciMLBenchmarks.jl` (v0.2.1)]
Info Packages marked with ⌃ have new versions available and may be upgradable.
Warning The project dependencies or compat requirements have changed since the manifest was last resolved. It is recommended to `Pkg.resolve()` or consider `Pkg.update()` if necessary.

And the full manifest:

Status `~/github-runners/amdci3-1/_work/SciMLBenchmarks.jl/SciMLBenchmarks.jl/benchmarks/ParameterEstimation/Manifest.toml`
  [47edcb42] ADTypes v1.24.0
  [14f7f29c] AMD v0.5.4
  [6e696c72] AbstractPlutoDingetjes v1.4.1
  [1520ce14] AbstractTrees v0.4.5
  [7d9f7c33] Accessors v0.1.45
⌃ [79e6a3ab] Adapt v4.7.0
  [66dad0bd] AliasTables v1.1.3
  [ec485272] ArnoldiMethod v0.4.0
⌃ [4fba245c] ArrayInterface v7.30.1
⌃ [4c555306] ArrayLayouts v1.12.2
  [a9b6321e] Atomix v1.2.1
⌃ [aae01518] BandedMatrices v1.12.0
  [6e4b80f9] BenchmarkTools v1.8.0
  [e2ed5e7c] Bijections v0.2.2
  [b2a6c25c] BinaryHeaps v1.1.0
  [caf10ac8] BipartiteGraphs v0.1.14
  [a134a8b2] BlackBoxOptim v0.6.12
  [8e7c35d0] BlockArrays v1.10.0
  [70df07ce] BracketingNonlinearSolve v1.12.7
  [fa961155] CEnum v0.5.0
  [d360d2e6] ChainRulesCore v1.26.1
  [35d6a980] ColorSchemes v3.31.0
⌃ [3da002f7] ColorTypes v0.12.1
  [c3611d14] ColorVectorSpace v0.11.0
⌃ [5ae59095] Colors v0.13.1
⌅ [861a8166] Combinatorics v1.0.2
  [38540f10] CommonSolve v0.2.14
  [bbf7d656] CommonSubexpressions v0.3.1
  [f70d9fcc] CommonWorldInvalidations v1.2.2
  [34da2185] Compat v4.18.1
  [b152e2b5] CompositeTypes v0.1.4
  [a33af91c] CompositionsBase v0.1.2
  [2569d6c7] ConcreteStructs v0.2.8
  [88cd18e8] ConsoleProgressMonitor v0.1.2
  [187b0558] ConstructionBase v1.6.0
  [d38c429a] Contour v0.6.3
  [a8cc5b0e] Crayons v4.2.0
  [9a962f9c] DataAPI v1.16.0
  [a93c6f00] DataFrames v1.8.2
  [864edb3b] DataStructures v0.19.6
  [e2d170a0] DataValueInterfaces v1.0.0
  [bcd4f6db] DelayDiffEq v6.4.1
  [8bb1440f] DelimitedFiles v1.9.1
  [39dd38d3] Dierckx v0.5.4
⌃ [2b5f629d] DiffEqBase v7.21.1
⌃ [459566f4] DiffEqCallbacks v4.19.3
⌃ [071ae1c0] DiffEqGPU v3.21.0
⌃ [1130ab10] DiffEqParamEstim v2.6.1
  [163ba53b] DiffResults v1.1.0
  [b552c78f] DiffRules v1.16.0
  [a0c0ee7d] DifferentiationInterface v0.7.21
  [31c24e10] Distributions v0.25.131
  [ffbed154] DocStringExtensions v0.9.5
⌃ [5b8099bc] DomainSets v0.8.1
  [7c1d4256] DynamicPolynomials v0.6.8
  [4e289a0a] EnumX v1.0.7
⌃ [7da242da] Enzyme v0.13.203
  [f151be2c] EnzymeCore v0.8.21
  [e2ba6199] ExprTools v0.1.11
  [55351af7] ExproniconLite v0.10.14
  [c87230d0] FFMPEG v0.4.5
  [7034ab61] FastBroadcast v1.4.0
  [9aa1b823] FastClosures v0.3.2
  [a4df4552] FastPower v1.5.0
⌃ [1a297f60] FillArrays v1.17.0
⌃ [64ca27bc] FindFirstFunctions v3.2.1
  [6a86dc24] FiniteDiff v2.33.0
⌅ [53c48c17] FixedPointNumbers v0.8.6
  [1fa38f19] Format v1.3.7
  [f6369f11] ForwardDiff v1.4.6
  [a85aefff] FunctionMaps v0.1.2
  [069b7b12] FunctionWrappers v1.1.3
  [77dc65aa] FunctionWrappersWrappers v1.13.0
⌃ [46192b85] GPUArraysCore v0.2.0
⌅ [61eb1bfa] GPUCompiler v1.23.0
  [28b8d3ca] GR v0.73.27
⌃ [a0844989] Gamma v1.1.0
  [86223c79] Graphs v1.15.0
  [076d061b] HashArrayMappedTries v0.2.0
⌅ [eafb193a] Highlights v0.5.3
  [34004b35] HypergeometricFunctions v0.3.30
  [3263718b] ImplicitDiscreteSolve v2.3.0
  [d25df0c9] Inflate v0.1.5
⌅ [842dd82b] InlineStrings v1.4.6
  [18e54dd8] IntegerMathUtils v0.1.4
  [8197267c] IntervalSets v0.7.14
  [3587e190] InverseFunctions v0.1.17
  [41ab1584] InvertedIndices v1.3.1
  [92d709cd] IrrationalConstants v0.2.6
  [82899510] IteratorInterfaceExtensions v1.0.0
  [1019f520] JLFzf v0.1.11
  [692b3bcd] JLLWrappers v1.8.0
⌅ [682c06a0] JSON v0.21.4
  [ae98c720] Jieko v0.2.1
⌃ [ccbc3e58] JumpProcesses v9.32.3
⌃ [63c18a36] KernelAbstractions v0.9.42
⌃ [ba0b0d4f] Krylov v0.10.9
  [2faa5264] LHLFactorization v2.2.2
⌃ [929cbde3] LLVM v9.13.1
  [b964fa9f] LaTeXStrings v1.4.1
  [23fbe1c1] Latexify v0.16.12
  [73f95e8e] LatticeRules v0.0.2
  [1d6d02ad] LeftChildRightSiblingTrees v0.3.0
⌃ [87fe0de2] LineSearch v0.1.17
⌃ [7ed4a6bd] LinearSolve v5.17.2
⌃ [2ab3a3ac] LogExpFunctions v0.3.29
  [e6f89c97] LoggingExtras v1.2.0
  [d8e11817] MLStyle v0.4.17
  [1914dd2f] MacroTools v0.5.16
  [bb5d69b7] MaybeInplace v0.1.8
  [442fdcdd] Measures v0.3.3
  [e1d29d7a] Missings v1.2.0
⌃ [961ee093] ModelingToolkit v11.43.0
⌃ [7771a370] ModelingToolkitBase v1.70.0
  [6bb917b9] ModelingToolkitTearing v1.20.6
⌅ [2e0e35c7] Moshi v0.3.9
  [46d2c3a1] MuladdMacro v0.2.7
⌃ [102ac46a] MultivariatePolynomials v0.5.19
⌃ [ffc61752] Mustache v1.0.21 [loaded: v1.1.0]
⌃ [d8a4904e] MutableArithmetics v1.8.0
  [76087f3c] NLopt v1.2.1
  [77ba4419] NaNMath v1.1.4
⌃ [8913a72c] NonlinearSolve v4.30.0
⌃ [be0214bd] NonlinearSolveBase v2.49.5
⌃ [5959db7a] NonlinearSolveFirstOrder v2.6.1
  [9a2c21bd] NonlinearSolveQuasiNewton v1.15.3
  [26075421] NonlinearSolveSpectralMethods v1.8.3
  [d8793406] ObjectFile v0.5.1
  [6fe1bfb0] OffsetArrays v1.17.0
⌃ [7f7a1694] Optimization v5.9.0
  [3e6eede4] OptimizationBBO v0.4.12
⌃ [bca83a33] OptimizationBase v5.5.3
  [4e6fcdb7] OptimizationNLopt v0.3.18
⌅ [bac558e1] OrderedCollections v1.8.2 [loaded: v2.0.1]
  [1dea7af3] OrdinaryDiffEq v7.8.1
⌃ [6ad6398a] OrdinaryDiffEqBDF v2.4.8
⌃ [bbf590c4] OrdinaryDiffEqCore v4.17.1
  [50262376] OrdinaryDiffEqDefault v2.6.2
⌃ [4302a76b] OrdinaryDiffEqDifferentiation v3.11.5
  [d3585ca7] OrdinaryDiffEqFunctionMap v2.3.0
⌃ [127b3ac7] OrdinaryDiffEqNonlinearSolve v2.9.6
⌃ [43230ef6] OrdinaryDiffEqRosenbrock v2.7.3
  [b4bd8bb3] OrdinaryDiffEqRosenbrockTableaus v2.4.2
⌃ [2d112036] OrdinaryDiffEqSDIRK v2.9.2
  [b1df2697] OrdinaryDiffEqTsit5 v2.1.4
  [79d7bb75] OrdinaryDiffEqVerner v2.4.1
  [90014a1f] PDMats v0.11.41
  [ab63da0c] ParallelParticleSwarms v1.6.2
  [65888b18] ParameterizedFunctions v5.27.0
  [d96e819e] Parameters v0.13.1
⌅ [69de0a69] Parsers v2.8.8
  [06bb1623] PenaltyFunctions v0.3.0
  [ccf2f8ad] PlotThemes v3.3.0
⌃ [995b91a9] PlotUtils v1.4.4
  [91a5bcdd] Plots v1.41.7
  [e409e4f3] PoissonRandom v0.4.13
  [2dfb63ee] PooledArrays v1.4.3
  [d236fae5] PreallocationTools v1.7.1
  [aea7be01] PrecompileTools v1.3.4
⌃ [21216c6a] Preferences v1.5.2 [loaded: v1.6.0]
  [08abe8d2] PrettyTables v3.4.8
  [27ebfcd6] Primes v0.5.7
  [33c8b6b6] ProgressLogging v0.1.6
  [92933f4c] ProgressMeter v1.11.0
  [43287f4e] PtrArrays v1.4.0
⌃ [0c0d3e7f] PureKLU v1.4.2
  [1fd47b50] QuadGK v2.11.3
  [8a4e6c94] QuasiMonteCarlo v0.4.4
  [988b38a3] ReadOnlyArrays v0.2.0
  [795d4caa] ReadOnlyDicts v1.0.1
  [3cdcf5f2] RecipesBase v1.3.4
  [01d81517] RecipesPipeline v0.6.12
⌃ [731186ca] RecursiveArrayTools v4.5.1
  [189a3867] Reexport v1.2.2
  [05181044] RelocatableFolders v1.0.1
  [ae029012] Requires v1.3.1
  [9fe22ead] RespecializeParams v1.3.0
  [79098fc4] Rmath v0.9.0
  [f2b01f46] Roots v3.0.8
⌃ [7e49a35a] RuntimeGeneratedFunctions v0.5.26
⌃ [9dfe8606] SCCNonlinearSolve v1.15.3
⌃ [91a8cdf1] SciCompDSL v1.0.3
⌃ [0bca4576] SciMLBase v3.53.3
  [31c91b34] SciMLBenchmarks v0.2.1 [loaded: `/home/crackauc/github-runners/amdci3-1/_work/SciMLBenchmarks.jl/SciMLBenchmarks.jl/src/SciMLBenchmarks.jl` (v0.2.1) expected `/home/crackauc/.julia/packages/SciMLBenchmarks/ceJyd/src/SciMLBenchmarks.jl` (v0.2.1)]
  [19f34311] SciMLJacobianOperators v0.1.19
  [a6db7da4] SciMLLogging v2.1.0
⌃ [c0aeaf25] SciMLOperators v1.30.0
  [431bcebd] SciMLPublic v1.3.0
  [53ae85a6] SciMLStructures v1.10.5
  [7e506255] ScopedValues v1.6.2
  [6c6a2e73] Scratch v1.3.0
  [91c51154] SentinelArrays v1.4.10
  [efcf1570] Setfield v1.1.2
  [992d4aef] Showoff v1.1.1
  [05bca326] SimpleDiffEq v1.18.0
⌃ [727e6d20] SimpleNonlinearSolve v2.14.3
  [510db2f7] SimpleOptimization v2.0.1
  [699a6c99] SimpleTraits v0.9.6
  [ed01d8cd] Sobol v1.5.0
  [a2af1166] SortingAlgorithms v1.2.3
  [a57abbd0] SparseColumnPivotedQR v2.1.8
  [9f842d2f] SparseConnectivityTracer v1.2.3
  [0a514795] SparseMatrixColorings v0.4.28
  [276daf66] SpecialFunctions v2.9.0
  [860ef19b] StableRNGs v1.0.4
  [0c0c59c1] StarAlgebras v0.3.0
  [64909d44] StateSelection v1.11.1
⌃ [90137ffa] StaticArrays v1.9.20
  [1e83bf80] StaticArraysCore v1.4.4
  [10745b16] Statistics v1.11.5
  [82ae8749] StatsAPI v1.8.0
  [2913bbd2] StatsBase v0.34.13
  [4c63d2b9] StatsFuns v2.2.1
  [69024149] StringEncodings v0.3.7
⌅ [892a3eda] StringManipulation v0.5.0
  [53d494c1] StructIO v0.3.1
  [2efcf032] SymbolicIndexingInterface v0.3.55
  [19f23fe9] SymbolicLimits v1.2.1
⌃ [d1185830] SymbolicUtils v4.46.5
⌃ [0c5d862f] Symbolics v7.39.2
  [3783bdb8] TableTraits v1.0.1
  [bd369af6] Tables v1.14.0
  [ed4db957] TaskLocalValues v0.1.3
  [62fd8b95] TensorCore v0.1.1
  [8ea1fca8] TermInterface v2.0.0
  [5d786b92] TerminalLoggers v0.1.8
⌃ [a759f4b9] TimerOutputs v1.2.1
  [e689c965] Tracy v0.1.6
  [781d530d] TruncatedStacktraces v1.4.0
  [5c2747f8] URIs v1.7.0
  [3a884ed6] UnPack v1.0.2
  [1cfade01] UnicodeFun v0.4.1
  [013be700] UnsafeAtomics v0.3.2
  [41fe7b60] Unzip v0.2.0
  [d30d5f5c] WeakCacheSets v0.1.0
  [44d3d7a6] Weave v0.10.12
⌃ [ddb6d928] YAML v0.4.16 [loaded: v0.4.17]
  [700de1a5] ZygoteRules v0.2.8
  [6e34b625] Bzip2_jll v1.0.9+0
  [83423d85] Cairo_jll v1.18.7+0
  [ee1fde0b] Dbus_jll v1.16.2+0
  [cd4c43a9] Dierckx_jll v0.2.0+0
⌅ [7cc45869] Enzyme_jll v0.0.293+0
  [2702e6a9] EpollShim_jll v0.0.20230411+1
  [2e619515] Expat_jll v2.8.4+0
⌅ [b22a6f82] FFMPEG_jll v8.1.2+0
  [a3f928ae] Fontconfig_jll v2.17.1+0
  [d7e528f0] FreeType2_jll v2.14.3+1
  [559328eb] FriBidi_jll v1.0.17+0
  [0656b61e] GLFW_jll v3.5.1+0
  [d2c73de3] GR_jll v0.73.27+0
⌅ [b0724c58] GettextRuntime_jll v0.22.4+0
  [61579ee1] Ghostscript_jll v9.55.1+0
  [7746bdde] Glib_jll v2.88.3+0
  [3b182d85] Graphite2_jll v1.3.16+0
  [2e76f6c2] HarfBuzz_jll v100.14004.0+0
  [1d5cc7b8] IntelOpenMP_jll v2025.2.0+0
  [aacddb02] JpegTurbo_jll v3.2.0+1
  [c1c5ebd0] LAME_jll v3.100.3+0
  [88015f11] LERC_jll v4.2.0+0
  [dad2f222] LLVMExtra_jll v0.0.47+0
  [1d63c593] LLVMOpenMP_jll v23.1.1+0
  [ad6e5548] LibTracyClient_jll v0.13.1+0
⌅ [e9f186c6] Libffi_jll v3.4.7+0
  [7e76a0d4] Libglvnd_jll v1.7.1+1
  [94ce4f54] Libiconv_jll v1.18.0+0
  [4b2f31a3] Libmount_jll v2.42.0+0
  [89763e89] Libtiff_jll v4.7.3+0
  [38a345b3] Libuuid_jll v2.42.0+0
  [856f044c] MKL_jll v2025.2.0+0
  [079eb43e] NLopt_jll v2.11.0+0
  [e7412a2a] Ogg_jll v1.3.6+0
  [efe28fd5] OpenSpecFun_jll v0.5.6+0
  [91d4177d] Opus_jll v1.6.1+0
  [36c8627f] Pango_jll v1.58.2+0
  [30392449] Pixman_jll v0.46.4+0
  [c0090381] Qt6Base_jll v6.10.2+2
  [629bc702] Qt6Declarative_jll v6.10.2+2
  [ce943373] Qt6ShaderTools_jll v6.10.2+1
  [6de9746b] Qt6Svg_jll v6.10.2+0
  [e99dba38] Qt6Wayland_jll v6.10.2+1
  [f50d1b31] Rmath_jll v0.5.2+0
  [a44049a8] Vulkan_Loader_jll v1.3.243+0
  [a2964d1f] Wayland_jll v1.24.0+0
  [ffd25f8a] XZ_jll v5.8.4+0
  [f67eecfb] Xorg_libICE_jll v1.1.2+0
  [c834827a] Xorg_libSM_jll v1.2.6+0
  [4f6342f7] Xorg_libX11_jll v1.8.13+0
  [0c0b7dd1] Xorg_libXau_jll v1.0.13+0
  [935fb764] Xorg_libXcursor_jll v1.2.4+0
  [a3789734] Xorg_libXdmcp_jll v1.1.6+0
  [1082639a] Xorg_libXext_jll v1.3.8+0
  [d091e8ba] Xorg_libXfixes_jll v6.0.2+0
  [a51aa0fd] Xorg_libXi_jll v1.8.4+0
  [d1454406] Xorg_libXinerama_jll v1.1.7+0
  [ec84b674] Xorg_libXrandr_jll v1.5.6+0
  [ea2f1a96] Xorg_libXrender_jll v0.9.12+0
  [a65dc6b1] Xorg_libpciaccess_jll v0.19.0+0
  [c7cfdc94] Xorg_libxcb_jll v1.17.1+0
  [cc61e674] Xorg_libxkbfile_jll v1.2.0+0
  [e920d4aa] Xorg_xcb_util_cursor_jll v0.1.6+0
  [12413925] Xorg_xcb_util_image_jll v0.4.1+0
  [2def613f] Xorg_xcb_util_jll v0.4.1+0
  [975044d2] Xorg_xcb_util_keysyms_jll v0.4.1+0
  [0d47668e] Xorg_xcb_util_renderutil_jll v0.3.10+0
  [c22f9ab0] Xorg_xcb_util_wm_jll v0.4.2+0
  [35661453] Xorg_xkbcomp_jll v1.4.7+0
  [33bec58e] Xorg_xkeyboard_config_jll v2.47.0+2
  [c5fb5394] Xorg_xtrans_jll v1.6.0+0
  [3161d3a3] Zstd_jll v1.5.7+1
  [35ca27e7] eudev_jll v3.2.14+0
⌅ [214eeab7] fzf_jll v0.61.1+0
⌃ [a4ae2306] libaom_jll v3.14.1+0
  [0ac62f75] libass_jll v0.17.5+0
  [1183f4f0] libdecor_jll v0.2.2+0
  [8e53e030] libdrm_jll v2.4.134+0
  [2db6ffa8] libevdev_jll v1.13.4+0
  [f638f0a6] libfdk_aac_jll v2.0.4+0
  [36db933b] libinput_jll v1.28.1+0
  [b53b4c65] libpng_jll v1.6.58+0
  [9a156e7d] libva_jll v2.23.0+0
  [f27f6e37] libvorbis_jll v1.3.8+0
  [009596ad] mtdev_jll v1.1.7+0
  [1317d2d5] oneTBB_jll v2022.3.0+0
⌅ [1270edf5] x264_jll v10164.0.1+0
  [dfaa095f] x265_jll v4.1.0+0
  [d8fb68d0] xkbcommon_jll v1.13.0+0
  [0dad84c5] ArgTools v1.1.2
  [56f22d72] Artifacts v1.11.0
  [2a0f44e3] Base64 v1.11.0
  [ade2ca70] Dates v1.11.0
  [8ba89e20] Distributed v1.11.0
  [f43a241f] Downloads v1.7.0
  [7b1f6079] FileWatching v1.11.0
  [9fa8497b] Future v1.11.0
  [b77e0a4c] InteractiveUtils v1.11.0
  [ac6e5ff7] JuliaSyntaxHighlighting v1.12.0
  [4af54fe1] LazyArtifacts v1.11.0
  [b27032c2] LibCURL v0.6.4
  [76f85450] LibGit2 v1.11.0
  [8f399da3] Libdl v1.11.0
  [37e2e46d] LinearAlgebra v1.12.0
  [56ddb016] Logging v1.11.0
  [d6f4376e] Markdown v1.11.0
  [a63ad114] Mmap v1.11.0
  [ca575930] NetworkOptions v1.3.0
  [44cfe95a] Pkg v1.12.1
  [de0858da] Printf v1.11.0
  [9abbd945] Profile v1.11.0
  [3fa0cd96] REPL v1.11.0
  [9a3f8284] Random v1.11.0
  [ea8e919c] SHA v0.7.0
  [9e88b42a] Serialization v1.11.0
  [6462fe0b] Sockets v1.11.0
  [2f01184e] SparseArrays v1.12.0
  [f489334b] StyledStrings v1.11.0
  [4607b0f0] SuiteSparse
  [fa267f1f] TOML v1.0.3
  [a4e569a6] Tar v1.10.0
  [8dfed614] Test v1.11.0
  [cf7118a7] UUIDs v1.11.0
  [4ec0a83e] Unicode v1.11.0
  [e66e0078] CompilerSupportLibraries_jll v1.3.1+2
  [deac9b47] LibCURL_jll v8.15.0+0
  [e37daf67] LibGit2_jll v1.9.0+0
  [29816b5a] LibSSH2_jll v1.11.3+1
  [14a3606d] MozillaCACerts_jll v2025.11.4
  [4536629a] OpenBLAS_jll v0.3.29+0
  [05823500] OpenLibm_jll v0.8.7+0
  [458c3c95] OpenSSL_jll v3.5.6+0
  [efcefdf7] PCRE2_jll v10.44.0+1
  [bea87d4a] SuiteSparse_jll v7.8.3+2
  [83775a58] Zlib_jll v1.3.1+2
  [8e850b90] libblastrampoline_jll v5.15.0+0
  [8e850ede] nghttp2_jll v1.64.0+1
  [3f19e933] p7zip_jll v17.7.0+0
Info Packages marked with ⌃ and ⌅ have new versions available. Those with ⌃ may be upgradable, but those with ⌅ are restricted by compatibility constraints from upgrading. To see why use `status --outdated -m`
Warning The project dependencies or compat requirements have changed since the manifest was last resolved. It is recommended to `Pkg.resolve()` or consider `Pkg.update()` if necessary.