@@ -29,24 +29,24 @@ begin
29
29
sqrt (k1 + Y)
30
30
]
31
31
jumps = [
32
- ConstantRateJump (kp, [X ~ X + 1 ]),
33
- ConstantRateJump (kd * X, [X ~ X - 1 ]),
34
- ConstantRateJump (k1 * X, [X ~ X - 1 , Y ~ Y + 1 ]),
35
- ConstantRateJump (k2 * Y, [X ~ X + 1 , Y ~ Y - 1 ]),
36
- ConstantRateJump (1 , [Y ~ Y + 1 ]),
37
- ConstantRateJump (Y, [Y ~ Y - 1 ])
32
+ ConstantRateJump (kp, [X ~ Pre (X) + 1 ]),
33
+ ConstantRateJump (kd * X, [X ~ Pre (X) - 1 ]),
34
+ ConstantRateJump (k1 * X, [X ~ Pre (X) - 1 , Y ~ Pre (Y) + 1 ]),
35
+ ConstantRateJump (k2 * Y, [X ~ Pre (X) + 1 , Y ~ Pre (Y) - 1 ]),
36
+ ConstantRateJump (1 , [Y ~ Pre (Y) + 1 ]),
37
+ ConstantRateJump (Y, [Y ~ Pre (Y) - 1 ])
38
38
]
39
- observed = [XY ~ X + Y]
39
+ obs = [XY ~ X + Y]
40
40
loss = kd * (k1 - X)^ 2 + k2 * (kp * Y - X^ 2 )^ 2
41
41
42
42
# Create systems (without structural_simplify, since that might modify systems to affect intended tests).
43
- osys = complete (System (diff_eqs, t; observed, name = :osys ))
43
+ osys = complete (System (diff_eqs, t; observed = obs , name = :osys ))
44
44
ssys = complete (System (
45
- diff_eqs, t, [X, Y], [kp, kd, k1, k2]; noise_eqs, observed, name = :ssys ))
46
- jsys = complete (JumpSystem (jumps, t, [X, Y], [kp, kd, k1, k2]; observed, name = :jsys ))
47
- nsys = complete (System (alg_eqs; observed, name = :nsys ))
45
+ diff_eqs, t, [X, Y], [kp, kd, k1, k2]; noise_eqs, observed = obs , name = :ssys ))
46
+ jsys = complete (JumpSystem (jumps, t, [X, Y], [kp, kd, k1, k2]; observed = obs , name = :jsys ))
47
+ nsys = complete (System (alg_eqs; observed = obs , name = :nsys ))
48
48
optsys = complete (OptimizationSystem (
49
- loss, [X, Y], [kp, kd, k1, k2]; observed, name = :optsys ))
49
+ loss, [X, Y], [kp, kd, k1, k2]; observed = obs , name = :optsys ))
50
50
end
51
51
52
52
# Prepares problems, integrators, and solutions.
@@ -59,25 +59,23 @@ begin
59
59
# Creates problems.
60
60
oprob = ODEProblem (osys, [u0_vals; p_vals], tspan)
61
61
sprob = SDEProblem (ssys, [u0_vals; p_vals], tspan)
62
- dprob = DiscreteProblem (jsys, )
63
62
jprob = JumpProblem (jsys, [u0_vals; p_vals], tspan; aggregator = Direct (), rng)
64
63
nprob = NonlinearProblem (nsys, [u0_vals; p_vals])
65
64
hcprob = NonlinearProblem (HomotopyNonlinearFunction (nprob. f), nprob. u0, nprob. p)
66
65
ssprob = SteadyStateProblem (osys, [u0_vals; p_vals])
67
66
optprob = OptimizationProblem (optsys, [u0_vals; p_vals], grad = true , hess = true )
68
- problems = [oprob, sprob, dprob, jprob, nprob, hcprob, ssprob, optprob]
69
- systems = [osys, ssys, jsys, jsys, nsys, nsys, osys, optsys]
67
+ problems = [oprob, sprob, jprob, nprob, hcprob, ssprob, optprob]
68
+ systems = [osys, ssys, jsys, nsys, nsys, osys, optsys]
70
69
71
70
# Creates an `EnsembleProblem` for each problem.
72
71
eoprob = EnsembleProblem (oprob)
73
72
esprob = EnsembleProblem (sprob)
74
- edprob = EnsembleProblem (dprob)
75
73
ejprob = EnsembleProblem (jprob)
76
74
enprob = EnsembleProblem (nprob)
77
75
essprob = EnsembleProblem (ssprob)
78
76
eoptprob = EnsembleProblem (optprob)
79
- eproblems = [eoprob, esprob, edprob, ejprob, enprob, essprob, optprob]
80
- esystems = [osys, ssys, jsys, jsys, nsys, osys, optsys]
77
+ eproblems = [eoprob, esprob, ejprob, enprob, essprob, optprob]
78
+ esystems = [osys, ssys, jsys, nsys, osys, optsys]
81
79
82
80
# Creates integrators.
83
81
oint = init (oprob, Tsit5 (); save_everystep = false )
912
910
@testset " Continuous interpolation before discrete save" begin
913
911
@variables x (t)
914
912
@parameters c (t)
913
+ devt = ModelingToolkit. SymbolicDiscreteCallback (1.0 , [c ~ Pre (c) + 1 ]; discrete_parameters = [c], iv = t)
915
914
@mtkcompile sys = System (
916
- D (x) ~ c * cos (x), t, [x], [c]; discrete_events = [1.0 => [c ~ Pre (c) + 1 ] ])
915
+ D (x) ~ c * cos (x), t, [x], [c]; discrete_events = [devt ])
917
916
prob = ODEProblem (sys, [x => 0.0 , c => 1.0 ], (0.0 , 2pi ))
918
917
sol = solve (prob, Tsit5 ())
919
918
@test_nowarn sol (- 0.1 ; idxs = sys. x)
925
924
@testset " DDEs" begin
926
925
function oscillator (; name, k = 1.0 , τ = 0.01 )
927
926
@parameters k= k τ= τ
928
- @variables x (.. )= 0.1 + t y (t)= 0.1 + t jcn (t)= 0.0 + t delx (t)
927
+ @variables x (.. )= 0.1 + t y (t)= 0.1 + t jcn (t) delx (t)
929
928
eqs = [D (x (t)) ~ y,
930
929
D (y) ~ - k * x (t - τ) + jcn,
931
930
delx ~ x (t - τ)]
956
955
function oscillator (; name, k = 1.0 , τ = 0.01 )
957
956
@parameters k= k τ= τ
958
957
@brownian a
959
- @variables x (.. )= 0.1 + t y (t)= 0.1 + t jcn (t)= 0.0 + t delx (t)
958
+ @variables x (.. )= 0.1 + t y (t)= 0.1 + t jcn (t) delx (t)
960
959
eqs = [D (x (t)) ~ y + a,
961
960
D (y) ~ - k * x (t - τ) + jcn,
962
961
delx ~ x (t - τ)]
988
987
end
989
988
db = 1.0 => ModelingToolkit. ImperativeAffect (affect2!; modified = (; k))
990
989
991
- @named ssys = System (D (A) ~ k * A, t, [A], [k]; noise_eqs = [0.0 ] discrete_events = db)
990
+ @named ssys = System (D (A) ~ k * A, t, [A], [k]; noise_eqs = [0.0 ], discrete_events = db)
992
991
ssys = complete (ssys)
993
992
prob = SDEProblem (ssys, [A => 1.0 , k => 1.0 ], (0.0 , 4.0 ))
994
993
sol = solve (prob, RI5 ())
0 commit comments