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
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.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))
@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.4985245554212076obj_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 worse2.912 s (21140157 allocations: 805.19 MiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
0.8312909361389815
0.9776197016782198
0.08554290570106331
0.5007265188988015obj_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 taken4.779 s (42507206 allocations: 1.11 GiB)
retcode: MaxIters
u: 4-element Vector{Float64}:
0.48349668135455476
0.7016509896807889
0.08965121126120089
0.4996385714698015Using 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.509577685189625opt = 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.49999999995230004opt = 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.5131216584764253opt = 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.5094505446268731Now 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)
@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.5000000000000322opt = 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.5004047023109518opt = 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.5000000000000321opt = 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.5003613601073567opt = 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.49911205692389365opt = 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.5000000000000498opt = 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.5000000003805862opt = 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.499708318694746Now 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.40501129015572684opt = 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.5761316872427985opt = 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.49999999999845446opt = 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.5000000001004294opt = 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.3267094319284882optprob = 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)
@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.5000000000000322opt = 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.5004047023109518opt = 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.5000000000000321Conclusion
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_LMand the local methodsLN_BOBYQA,LN_NELDERMEAD,LD_SLSQPandLN_PRAXISrecover these values to within about1e-9, andLN_NEWUOA_BOUNDandLD_MMAget close.GN_ORIG_DIRECT_L,GN_ISRES,GN_ESCH,LN_COBYLAandLN_SBPLXdo not. - BBO gets close on the short problem with the default
Tsit5tolerances, but tightening the ODE solver tolerances (reltol = 1e-9, thenVern9at1e-9) moved its estimate further from the true values and made the run slower. - On the longer (3000-observation) problem,
GN_CRS2_LMandGN_ISRESrecover the true values, BBO only gets close, andGN_ORIG_DIRECT_LandGN_ESCHdo 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.