92
92
higher_order_network_alt2 = ConstantRateJump .([rate1, rate2, rate3, rate4, rate5, rate6, rate7, rate8],
93
93
[affect1!, affect2!, affect3!, affect4!, affect5!, affect6!, affect7!, affect8!])
94
94
95
- # For the systems created via Catalyst and manually, compares that they yield identical simulations.
96
- for n in [ 5 , 50 ]
97
- # Prepares JumpProblem via Catalyst.
98
- u0_base = rnd_u0_Int64 (base_higher_order_network, rng; n )
99
- ps_base = rnd_ps (base_higher_order_network, rng; factor = n / 10.0 )
100
- dprob_base = DiscreteProblem (base_higher_order_network, u0_base, ( 0.0 , 100.0 ), ps_base)
101
- jprob_base = JumpProblem (base_higher_order_network, dprob_base, Direct (); rng = StableRNG ( 1234 ))
102
-
103
- # Prepares JumpProblem partially declared manually.
104
- dprob_alt1 = DiscreteProblem (higher_order_network_alt1, u0_base, ( 0.0 , 100.0 ), ps_base)
105
- jprob_alt1 = JumpProblem (higher_order_network_alt1, dprob_alt1, Direct (); rng = StableRNG ( 1234 ))
106
-
107
- # Prepares JumpProblem via manually declared system.
108
- u0_alt2 = map_to_vec (u0_base, [ :X1 , :X2 , :X3 , :X4 , :X5 , :X6 , :X7 , :X8 , :X9 , :X10 ] )
109
- ps_alt2 = map_to_vec (ps_base, [ :p , :r1 , :r2 , :K , :r3 , :r4 , :r5 , :r6 , :d ] )
110
- dprob_alt2 = DiscreteProblem (u0_alt2, ( 0.0 , 100.0 ), ps_alt2)
111
- jprob_alt2 = JumpProblem (dprob_alt2, Direct (), higher_order_network_alt2 ... ; rng = StableRNG ( 1234 ))
112
-
113
- # Compares the simulations
114
- sol_base = solve (jprob_base , SSAStepper (); seed, saveat = 1.0 )
115
- sol_alt1 = solve (jprob_alt1, SSAStepper (); seed, saveat = 1.0 )
116
- sol_alt2 = solve (jprob_alt2, SSAStepper (); seed, saveat = 1.0 )
117
- @test_broken sol_base == sol_alt1 == sol_alt2
118
- end
95
+ # Prepares JumpProblem via Catalyst.
96
+ u0_base = rnd_u0_Int64 (base_higher_order_network, rng; n)
97
+ ps_base = rnd_ps (base_higher_order_network, rng; factor = n / 10.0 )
98
+ dprob_base = DiscreteProblem (base_higher_order_network, u0_base, ( 0.0 , 100.0 ), ps_base )
99
+ jprob_base = JumpProblem (base_higher_order_network, dprob_base, Direct (); rng = StableRNG ( 1234 ) )
100
+
101
+ # Prepares JumpProblem partially declared manually.
102
+ dprob_alt1 = DiscreteProblem (higher_order_network_alt1, u0_base, ( 0.0 , 100.0 ), ps_base)
103
+ jprob_alt1 = JumpProblem (higher_order_network_alt1, dprob_alt1, Direct (); rng = StableRNG ( 1234 ))
104
+
105
+ # Prepares JumpProblem via manually declared system.
106
+ u0_alt2 = map_to_vec (u0_base, [ :X1 , :X2 , :X3 , :X4 , :X5 , :X6 , :X7 , :X8 , :X9 , :X10 ])
107
+ ps_alt2 = map_to_vec (ps_base, [ :p , :r1 , :r2 , :K , :r3 , :r4 , :r5 , :r6 , :d ])
108
+ dprob_alt2 = DiscreteProblem (u0_alt2, ( 0.0 , 100.0 ), ps_alt2 )
109
+ jprob_alt2 = JumpProblem (dprob_alt2, Direct (), higher_order_network_alt2 ... ; rng = StableRNG ( 1234 ) )
110
+
111
+ # Simualtes the models.
112
+ sol_base = solve (jprob_base, SSAStepper (); seed, saveat = 1.0 )
113
+ sol_alt1 = solve (jprob_alt1, SSAStepper (); seed, saveat = 1.0 )
114
+ sol_alt2 = solve (jprob_alt2 , SSAStepper (); seed, saveat = 1.0 )
115
+
116
+ # Checks that species means in the simulations are similar
117
+ @test mean (sol_base[ :X10 ]) ≈ mean (sol_alt1[ :X10 ]) atol = 1e-1 rtol = 1e-1
118
+ @test mean (sol_alt1[ :X10 ]) ≈ mean (sol_alt2[ 10 ,:]) atol = 1e-1 rtol = 1e-1
119
119
end
0 commit comments