Skip to content

Commit 0fc57c5

Browse files
committed
Clean up the reporting from continious-discrete comparison.
1 parent 04274e7 commit 0fc57c5

File tree

3 files changed

+20
-13
lines changed

3 files changed

+20
-13
lines changed

Project.toml

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,19 @@ authors = ["Ben Chung <benjamin.chung@juliahub.com> and contributors"]
44
version = "1.0.0-DEV"
55

66
[deps]
7+
CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b"
78
DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
89
DiffEqDevTools = "f3b72e0c-5b89-59e1-b016-84e28bfd966d"
910
DifferentialEquations = "0c46a032-eb83-5123-abaf-570d42b7fbaa"
1011
ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78"
1112
SymbolicIndexingInterface = "2efcf032-c050-4f8e-a9bb-153293bab1f5"
1213

14+
[weakdeps]
15+
JuliaSimModelOptimizer = "e76a656c-db09-4a9a-8f5e-6a4d9ca4a950"
16+
17+
[extensions]
18+
ModelTestingCalibration = "JuliaSimModelOptimizer"
19+
1320
[compat]
1421
julia = "1.10"
1522

@@ -18,9 +25,3 @@ Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
1825

1926
[targets]
2027
test = ["Test", "JuliaSimModelOptimizer"]
21-
22-
[weakdeps]
23-
JuliaSimModelOptimizer = "e76a656c-db09-4a9a-8f5e-6a4d9ca4a950"
24-
25-
[extensions]
26-
ModelTestingCalibration = "JuliaSimModelOptimizer"

src/test/discrete/single_shooting.jl

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,12 @@ function compare_discrete_to_continous(
2525

2626
data_matrix = collect.(eachrow(data[!, string.(measured)])) # lame and slow
2727
solution_data = sol[measured]
28-
compute_error_metrics(results, solution_data, data_matrix)
29-
results[:final] = recursive_mean(abs.(solution_data[end] - collect(data[end, string.(measured)])))
28+
metrics = Dict{Symbol, Any}()
29+
compute_error_metrics(metrics, solution_data, data_matrix)
30+
metrics[:final] = recursive_mean(abs.(solution_data[end] - collect(data[end, string.(measured)])))
31+
results[:metrics] = metrics
3032
cols = []
33+
push!(cols, :timestamp => data[:, :timestamp])
3134
append!(cols, make_cols(namespace_symbol.((:simulated,), measured), solution_data))
3235
append!(cols, make_cols(namespace_symbol.((:data,), measured), data_matrix))
3336
results[:data] = DataFrame(cols)

test/timeseries.jl

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Base.isapprox((v1, t1)::Tuple{Vector{Float64}, Float64}, (v2, t2)::Tuple{Vector{Float64}, Float64}) = v1 v2 && t1 t2
2-
tol = 1e-8
2+
tol = 1e-6
33

44
@testset "Continous" begin
55
@testset "Model-Model Mixed (self-discretized) Comparison" begin
@@ -75,11 +75,14 @@ end
7575
ref_sol = solve(ref_prob, Tsit5(), reltol = 1e-8, abstol = 1e-8)
7676
data = DataFrame(["timestamp" => Float64[], "x(t)" => Float64[], "y(t)" => Float64[]])
7777
for t in LinRange(0.0, 1.0, 1000)
78-
push!(data, [t, ref_sol(t, idxs=fol.x) + randn()*0.1, ref_sol(t, idxs=fol.y) + randn()*0.1])
78+
push!(data, [t, ref_sol(t, idxs=fol.x) + randn() * 0.1, ref_sol(t, idxs=fol.y) * randn() * 0.1])
7979
end
8080

81-
results = ModelTesting.validate(fol, data; search_space=[fol.τ => (0.5,0.5)], params = [fol.τ => 0.5], u0 = [fol.x => 0.0])
82-
83-
println(results)
81+
results_bad = ModelTesting.validate(fol, data; search_space=[fol.τ => (0.5,0.5)], params = [fol.τ => 0.5], u0 = [fol.x => 0.0])
82+
results_good = ModelTesting.validate(fol, data; search_space=[fol.τ => (1.0,1.0)], params = [fol.τ => 1.0], u0 = [fol.x => 0.0])
83+
@test results_good[:metrics][:l∞] < results_bad[:metrics][:l∞]
84+
@test results_good[:metrics][:l2] < results_bad[:metrics][:l2]
85+
CSV.write("results.csv", results_bad[:data])
86+
display(results_good[:data])
8487
end
8588
end

0 commit comments

Comments
 (0)