Skip to content
Snippets Groups Projects
Commit 2cc0a568 authored by Bentriou Mahmoud's avatar Bentriou Mahmoud
Browse files

small rewrite of smc function

parent e364647f
No related branches found
No related tags found
No related merge requests found
...@@ -29,7 +29,8 @@ export get_index, get_value, length_var, isaccepted ...@@ -29,7 +29,8 @@ export get_index, get_value, length_var, isaccepted
# Model related methods # Model related methods
export simulate, volatile_simulate export simulate, volatile_simulate
export distribute_mean_value_lha, mean_value_lha, distribute_prob_accept_lha, probability_var_value_lha, smc_chernoff export distribute_mean_value_lha, mean_value_lha, distribute_prob_accept_lha, probability_var_value_lha
export number_simulations_smc_chernoff, smc_chernoff
export set_param!, set_x0!, set_time_bound!, set_observed_var!, observe_all! export set_param!, set_x0!, set_time_bound!, set_observed_var!, observe_all!
export get_param, get_x0, getproperty, get_proba_model, get_observed_var export get_param, get_x0, getproperty, get_proba_model, get_observed_var
export isbounded, isaccepted, check_consistency export isbounded, isaccepted, check_consistency
......
...@@ -402,9 +402,10 @@ function probability_var_value_lha(sm::SynchronizedModel, nbr_sim::Int; ...@@ -402,9 +402,10 @@ function probability_var_value_lha(sm::SynchronizedModel, nbr_sim::Int;
return sum_val / nbr_sim return sum_val / nbr_sim
end end
number_simulations_smc_chernoff(approx::Float64, conf::Float64) = log(2/(1-conf)) / (2*approx^2)
function smc_chernoff(sm::SynchronizedModel; approx::Float64 = 0.01, confidence::Float64 = 0.99) function smc_chernoff(sm::SynchronizedModel; approx::Float64 = 0.01, confidence::Float64 = 0.99)
@assert sm.automaton.name in ["F property", "G property", "G and F property"] @assert sm.automaton.name in ["F property", "G property", "G and F property"]
nbr_sim = log(2/(1-confidence)) / (2*approx^2) nbr_sim = number_simulations_smc_chernoff(approx, confidence)
nbr_sim = convert(Int, trunc(nbr_sim)+1) nbr_sim = convert(Int, trunc(nbr_sim)+1)
return probability_var_value_lha(sm, nbr_sim) return probability_var_value_lha(sm, nbr_sim)
end end
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment