Commit 2cc0a568 authored by Bentriou Mahmoud's avatar Bentriou Mahmoud
Browse files

small rewrite of smc function

parent e364647f
...@@ -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
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment