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
lp = [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
# unknowns(fitz) is ordered [w, v] rather than in declaration order, so the
# initial condition and parameters are keyed by name instead of positionally.
varmap = merge(Dict([fitz.v, fitz.w] .=> r0), Dict([fitz.a, fitz.b, fitz.τinv, fitz.l] .=> p))
prob = ODEProblem(fitz, varmap, tspan)
tspan2 = (0.0, 3.0) # sample of 300 observations with a timestep of 0.01
prob_short = ODEProblem(fitz, varmap, tspan2)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.0dt = 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.0h = 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
8Plot 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))
short_solutions = Dict{String, Any}()
res1 = @btime solve(optprob, BBO_adaptive_de_rand_1_bin(), maxiters = 7e3)
short_solutions["BBO (Tsit5 default tol)"] = res12.939 s (21007281 allocations: 801.07 MiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
0.741189416168004
0.8469918997996646
0.08078465527568746
0.5000773147121458obj_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))
res1 = @btime solve(optprob, BBO_adaptive_de_rand_1_bin(), maxiters = 7e3)
short_solutions["BBO (Tsit5 reltol=1e-9)"] = res12.964 s (21242248 allocations: 808.52 MiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
0.427662976533689
0.8982231688470127
0.13309188594957277
0.5009075845204596obj_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))
res1 = @btime solve(optprob, BBO_adaptive_de_rand_1_bin(), maxiters = 7e3)
short_solutions["BBO (Vern9 1e-9)"] = res14.813 s (42376102 allocations: 1.11 GiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
0.269167742190918
0.8675330265078323
0.17189058217583497
0.49966553376298745Using 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(v(t)
) => false, Initial(wˍt(t)) => false, b => 0.8, Initial(vˍt(t)) => false, a
=> 0.7, τinv => 0.08, l => 0.5, Initial(w(t)) => false, w(t) => 1.0…), 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))
res1 = @btime solve(optprob, opt, maxiters = 10000, xtol_rel = 1e-12)
short_solutions["GN_ORIG_DIRECT_L"] = res16.855 s (59865528 allocations: 1.56 GiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
0.1920438957477088
1.1316872427984634
1.1111111111112206
0.509577685189625opt = Opt(:GN_CRS2_LM, 4)
res1 = @btime solve(optprob, opt, maxiters = 10000, xtol_rel = 1e-12)
short_solutions["GN_CRS2_LM"] = res16.997 s (59740224 allocations: 1.56 GiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
0.7000901073520914
0.8000114439120442
0.0799933943628506
0.5000000467429484opt = Opt(:GN_ISRES, 4)
res1 = @btime solve(optprob, opt, maxiters = 10000, xtol_rel = 1e-12)
short_solutions["GN_ISRES"] = res16.859 s (59770053 allocations: 1.56 GiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
4.388686241701901
4.205524545334197
0.08531487804176452
0.5165286699818172opt = Opt(:GN_ESCH, 4)
res1 = @btime solve(optprob, opt, maxiters = 10000, xtol_rel = 1e-12)
short_solutions["GN_ESCH"] = res16.931 s (59770053 allocations: 1.56 GiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
2.9654095992371836
0.4371327199712715
0.020866076018565223
0.49924445431268333Now 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.5opt = Opt(:LN_BOBYQA, 4)
res1 = @btime solve(optprob, opt, maxiters = 10000, xtol_rel = 1e-12)
short_solutions["LN_BOBYQA"] = res11.265 s (11028088 allocations: 294.58 MiB)
retcode: Success
u: 4-element Vector{Float64}:
0.7000000000188623
0.8000000000060236
0.07999999999893552
0.5000000000000322opt = Opt(:LN_NELDERMEAD, 4)
res1 = @btime solve(optprob, opt, maxiters = 10000, xtol_rel = 1e-12)
short_solutions["LN_NELDERMEAD"] = res1631.491 ms (5748224 allocations: 153.55 MiB)
retcode: Success
u: 4-element Vector{Float64}:
1.0
1.0
0.07355092571547887
0.5004047023109518opt = Opt(:LD_SLSQP, 4)
res1 = @btime solve(optprob, opt, maxiters = 10000, xtol_rel = 1e-12)
short_solutions["LD_SLSQP"] = res18.768 s (71095530 allocations: 1.90 GiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
0.700000000015133
0.8000000000055394
0.07999999999920873
0.5000000000000321opt = Opt(:LN_COBYLA, 4)
res1 = @btime solve(optprob, opt, maxiters = 10000, xtol_rel = 1e-12)
short_solutions["LN_COBYLA"] = res16.925 s (59740084 allocations: 1.56 GiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
0.1829436856114406
0.8339606715478033
0.19453032306019252
0.5003613601073567opt = Opt(:LN_NEWUOA_BOUND, 4)
res1 = @btime solve(optprob, opt, maxiters = 10000, xtol_rel = 1e-12)
short_solutions["LN_NEWUOA_BOUND"] = res1623.582 ms (4325260 allocations: 115.54 MiB)
retcode: Success
u: 4-element Vector{Float64}:
0.24815174877228105
0.4389927966494055
0.08539344966317435
0.49911205692389365opt = Opt(:LN_PRAXIS, 4)
res1 = @btime solve(optprob, opt, maxiters = 10000, xtol_rel = 1e-12)
short_solutions["LN_PRAXIS"] = res1621.506 ms (5246030 allocations: 140.13 MiB)
retcode: Success
u: 4-element Vector{Float64}:
0.7000000000151287
0.8000000000059342
0.0799999999992364
0.5000000000000221opt = Opt(:LN_SBPLX, 4)
res1 = @btime solve(optprob, opt, maxiters = 10000, xtol_rel = 1e-12)
short_solutions["LN_SBPLX"] = res16.989 s (59740066 allocations: 1.56 GiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
0.7000016809870933
0.8000002415243684
0.07999987937160621
0.5000000003805862opt = Opt(:LD_MMA, 4)
res1 = @btime solve(optprob, opt, maxiters = 10000, xtol_rel = 1e-12)
short_solutions["LD_MMA"] = res116.693 s (119380443 allocations: 3.39 GiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
0.2194953414908776
0.7035126977082891
0.13312823531746235
0.499708318694746Each run's estimate, retcode, loss and largest componentwise distance from the true parameters [0.7, 0.8, 0.08, 0.5] on the short problem, together with the lowest-loss and closest runs:
for (name, sol) in sort!(collect(short_solutions); by = first)
println(rpad(name, 28),
"estimate=", round.(sol.u; digits = 3),
" retcode=", sol.retcode,
" loss=", sol.objective,
" max|est-true|=", round(maximum(abs.(sol.u .- p)); sigdigits = 3))
end
best_loss, best_loss_name = minimum((sol.objective, name) for (name, sol) in short_solutions)
best_dist, best_dist_name = minimum((maximum(abs.(sol.u .- p)), name) for (name, sol) in short_solutions)
println("lowest loss: ", best_loss_name, " (loss = ", best_loss, ")")
println("closest to the true parameters: ", best_dist_name, " (max|est-true| = ", best_dist, ")")BBO (Tsit5 default tol) estimate=[0.741, 0.847, 0.081, 0.5] retcode=Ma
xIters loss=1.1195882041168969e-5 max|est-true|=0.047
BBO (Tsit5 reltol=1e-9) estimate=[0.428, 0.898, 0.133, 0.501] retcode=
MaxIters loss=0.00089388888536599 max|est-true|=0.272
BBO (Vern9 1e-9) estimate=[0.269, 0.868, 0.172, 0.5] retcode=Ma
xIters loss=0.0008014784470582032 max|est-true|=0.431
GN_CRS2_LM estimate=[0.7, 0.8, 0.08, 0.5] retcode=MaxIter
s loss=1.944197726102618e-12 max|est-true|=9.01e-5
GN_ESCH estimate=[2.965, 0.437, 0.021, 0.499] retcode=
MaxIters loss=0.0003175856994032462 max|est-true|=2.27
GN_ISRES estimate=[4.389, 4.206, 0.085, 0.517] retcode=
MaxIters loss=0.06205001570957812 max|est-true|=3.69
GN_ORIG_DIRECT_L estimate=[0.192, 1.132, 1.111, 0.51] retcode=M
axIters loss=0.11016600767987259 max|est-true|=1.03
LD_MMA estimate=[0.219, 0.704, 0.133, 0.5] retcode=Ma
xIters loss=0.00010819461748085794 max|est-true|=0.481
LD_SLSQP estimate=[0.7, 0.8, 0.08, 0.5] retcode=MaxIter
s loss=4.724821748139161e-25 max|est-true|=1.51e-11
LN_BOBYQA estimate=[0.7, 0.8, 0.08, 0.5] retcode=Success
loss=4.760436845857627e-25 max|est-true|=1.89e-11
LN_COBYLA estimate=[0.183, 0.834, 0.195, 0.5] retcode=Ma
xIters loss=0.0007443388864289124 max|est-true|=0.517
LN_NELDERMEAD estimate=[1.0, 1.0, 0.074, 0.5] retcode=Succes
s loss=8.965505337532214e-5 max|est-true|=0.3
LN_NEWUOA_BOUND estimate=[0.248, 0.439, 0.085, 0.499] retcode=
Success loss=0.00042978296411709017 max|est-true|=0.452
LN_PRAXIS estimate=[0.7, 0.8, 0.08, 0.5] retcode=Success
loss=5.36754271940152e-25 max|est-true|=1.51e-11
LN_SBPLX estimate=[0.7, 0.8, 0.08, 0.5] retcode=MaxIter
s loss=5.041392563911391e-16 max|est-true|=1.68e-6
lowest loss: LD_SLSQP (loss = 4.724821748139161e-25)
closest to the true parameters: LN_PRAXIS (max|est-true| = 1.51287871119620
83e-11)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))
long_solutions = Dict{String, Any}()
res1 = @btime solve(optprob, BBO_adaptive_de_rand_1_bin(), maxiters = 4e3)
long_solutions["BBO_adaptive_de_rand_1_bin"] = res123.209 s (224309522 allocations: 4.64 GiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
0.9426760379710977
1.0652914786154668
0.08911992261002938
0.5218250949015131opt = Opt(:GN_ORIG_DIRECT_L, 4)
res1 = @btime solve(optprob, opt, maxiters = 10000, xtol_rel = 1e-12)
long_solutions["GN_ORIG_DIRECT_L"] = res156.580 s (546202158 allocations: 11.28 GiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
1.1111111111111116
1.1111111111111107
0.10059442158207468
0.5761316872427985opt = Opt(:GN_CRS2_LM, 4)
res1 = @btime solve(optprob, opt, maxiters = 20000, xtol_rel = 1e-12)
long_solutions["GN_CRS2_LM"] = res1113.987 s (1091640234 allocations: 22.55 GiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
0.6999999999966329
0.8000000000028302
0.08000000000032029
0.4999999999984416opt = Opt(:GN_ISRES, 4)
res1 = @btime solve(optprob, opt, maxiters = 50000, xtol_rel = 1e-12)
long_solutions["GN_ISRES"] = res1284.194 s (2729250063 allocations: 56.38 GiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
0.7000000041562078
0.7999999958605696
0.07999999988501204
0.5000000014225955opt = Opt(:GN_ESCH, 4)
res1 = @btime solve(optprob, opt, maxiters = 20000, xtol_rel = 1e-12)
long_solutions["GN_ESCH"] = res1114.366 s (1091700063 allocations: 22.55 GiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
2.488012852232664
2.5910137157546655
0.12210544064426454
0.4774460979954282optprob = OptimizationProblem(obj, 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.5opt = Opt(:LN_BOBYQA, 4)
res1 = @btime solve(optprob, opt, maxiters = 10000, xtol_rel = 1e-12)
long_solutions["LN_BOBYQA"] = res13.615 s (34932564 allocations: 738.99 MiB)
retcode: Success
u: 4-element Vector{Float64}:
0.6999999999966582
0.8000000000027985
0.08000000000032159
0.499999999998461opt = Opt(:LN_NELDERMEAD, 4)
res1 = @btime solve(optprob, opt, maxiters = 10000, xtol_rel = 1e-9)
long_solutions["LN_NELDERMEAD"] = res13.364 s (32477100 allocations: 687.05 MiB)
retcode: Success
u: 4-element Vector{Float64}:
1.0
1.0
1.0
0.8656987233224229opt = Opt(:LD_SLSQP, 4)
res1 = @btime solve(optprob, opt, maxiters = 10000, xtol_rel = 1e-12)
long_solutions["LD_SLSQP"] = res1304.730 ms (2728974 allocations: 61.56 MiB)
retcode: Success
u: 4-element Vector{Float64}:
0.999947033693279
1.0
0.9999478176213619
0.8656431187791497Each run's estimate, retcode, loss and largest componentwise distance from the true parameters [0.7, 0.8, 0.08, 0.5] on the longer problem, together with the lowest-loss and closest runs:
for (name, sol) in sort!(collect(long_solutions); by = first)
println(rpad(name, 28),
"estimate=", round.(sol.u; digits = 3),
" retcode=", sol.retcode,
" loss=", sol.objective,
" max|est-true|=", round(maximum(abs.(sol.u .- p)); sigdigits = 3))
end
best_loss, best_loss_name = minimum((sol.objective, name) for (name, sol) in long_solutions)
best_dist, best_dist_name = minimum((maximum(abs.(sol.u .- p)), name) for (name, sol) in long_solutions)
println("lowest loss: ", best_loss_name, " (loss = ", best_loss, ")")
println("closest to the true parameters: ", best_dist_name, " (max|est-true| = ", best_dist, ")")BBO_adaptive_de_rand_1_bin estimate=[0.943, 1.065, 0.089, 0.522] retcode=
MaxIters loss=64.27936324010106 max|est-true|=0.265
GN_CRS2_LM estimate=[0.7, 0.8, 0.08, 0.5] retcode=MaxIter
s loss=7.134691498914623e-19 max|est-true|=3.37e-12
GN_ESCH estimate=[2.488, 2.591, 0.122, 0.477] retcode=
MaxIters loss=704.5697798658714 max|est-true|=1.79
GN_ISRES estimate=[0.7, 0.8, 0.08, 0.5] retcode=MaxIter
s loss=1.850013957747529e-13 max|est-true|=4.16e-9
GN_ORIG_DIRECT_L estimate=[1.111, 1.111, 0.101, 0.576] retcode=
MaxIters loss=81.06091854552861 max|est-true|=0.411
LD_SLSQP estimate=[1.0, 1.0, 1.0, 0.866] retcode=Succes
s loss=3160.449965970858 max|est-true|=0.92
LN_BOBYQA estimate=[0.7, 0.8, 0.08, 0.5] retcode=Success
loss=7.134817955780692e-19 max|est-true|=3.34e-12
LN_NELDERMEAD estimate=[1.0, 1.0, 1.0, 0.866] retcode=Succes
s loss=3160.4055222879815 max|est-true|=0.92
lowest loss: GN_CRS2_LM (loss = 7.134691498914623e-19)
closest to the true parameters: LN_BOBYQA (max|est-true| = 3.34177130412172
1e-12)Conclusion
The parameters used to generate the data are [0.7, 0.8, 0.08, 0.5]. The summary tables above print each run's estimate, retcode, loss and largest componentwise distance from these parameters on the short (300-observation) and longer (3000-observation) problems, including which run has the lowest loss and which lands closest. The global optimizers search glo_bounds starting from glo_init, while the local optimizers search the narrower loc_bounds starting from loc_init; the global optimizers are stochastic, so the distances and winners differ from run to run.
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 `/julia/github-runners/amdci1-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: `/julia/github-runners/amdci1-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 `/julia/github-runners/amdci1-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.3]
[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.1]
⌃ [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: `/julia/github-runners/amdci1-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.