euclidean_distance_single.jl 1.02 KB
Newer Older
1 2 3 4 5

using MarkovProcesses
import LinearAlgebra: dot
import Distributions: Uniform

6 7
MAKE_SECOND_AUTOMATON_TESTS = false

8 9 10 11
load_model("SIR")
tml_obs = 0:0.5:200
set_time_bound!(SIR, 200.0)
y_obs = vectorize(simulate(SIR), :I, tml_obs)
12

13
load_automaton("euclidean_distance_automaton")
14 15 16 17 18
aut1 = create_euclidean_distance_automaton(SIR, tml_obs, y_obs, :I)
sync_SIR = SIR * aut1
σ = simulate(sync_SIR)
test = euclidean_distance(σ, :I, tml_obs, y_obs) == σ.state_lha_end[:d]

19 20 21 22 23
if !test
    @show euclidean_distance(σ, :I, tml_obs, y_obs), σ.state_lha_end[:d]
    @show σ
end

24 25 26 27 28 29
if MAKE_SECOND_AUTOMATON_TESTS
    load_automaton("euclidean_distance_automaton_2")
    aut2 = create_euclidean_distance_automaton_2(SIR, tml_obs, y_obs, :I)
    sync_SIR = SIR * aut2
    σ = simulate(sync_SIR)
    test2 = euclidean_distance(σ, :I, tml_obs, y_obs) == σ.state_lha_end[:d]
30 31 32 33
    if !test2
        @show euclidean_distance(σ, :I, tml_obs, y_obs), σ.state_lha_end[:d]
        @show σ
    end
34 35 36
else
    test2 = true
end
37 38

test_all = test && test2
39

40
return test_all
41