g_list_mp3 = np.load(direction + 'mp_liebscher_N' + repr(N_mp[2]) + '_Nsim100_b5_cs_sss2_g_list.npy') # --------------------------------------------------------------------------- # POST-PROCESSING # --------------------------------------------------------------------------- # coefficient of variation pf_mean_sus1, pf_cov_sus1 = uutil.get_mean_and_cov_pf_from_SUS( g_list_sus1, N_sus[0], p0) pf_mean_sus2, pf_cov_sus2 = uutil.get_mean_and_cov_pf_from_SUS( g_list_sus2, N_sus[1], p0) pf_mean_sus3, pf_cov_sus3 = uutil.get_mean_and_cov_pf_from_SUS( g_list_sus3, N_sus[2], p0) pf_mean_mp1, pf_cov_mp1 = uutil.get_mean_and_cov_pf_from_MP( g_list_mp1, N_mp[0]) pf_mean_mp2, pf_cov_mp2 = uutil.get_mean_and_cov_pf_from_MP( g_list_mp2, N_mp[1]) pf_mean_mp3, pf_cov_mp3 = uutil.get_mean_and_cov_pf_from_MP( g_list_mp3, N_mp[2]) print('-----------------------------------------------------') print('cov = 0.1 | SUS cov =', round(pf_cov_sus1, 3), '| MP cov =', round(pf_cov_mp1, 3)) print('cov = 0.2 | SUS cov =', round(pf_cov_sus2, 3), '| MP cov =', round(pf_cov_mp2, 3)) print('cov = 0.3 | SUS cov =', round(pf_cov_sus3, 3), '| MP cov =', round(pf_cov_mp3, 3)) print('-----------------------------------------------------') # number of LSF calls ncall_sus1 = uutil.get_mean_ncall_from_SUS(g_list_sus1, N_sus[0], p0)
cov_at_pf_array_sss4 = np.zeros(len(nsamples_list), float) pf_mean_array_sss4 = np.zeros(len(nsamples_list), float) cov_at_pf_array_sss5 = np.zeros(len(nsamples_list), float) pf_mean_array_sss5 = np.zeros(len(nsamples_list), float) # seed selection stragegy 0 # for i in range(0, len(nsamples_list)): # pf_mean_array_sss0[i], cov_at_pf_array_sss0[i] = \ # uutil.get_mean_and_cov_pf_from_MP(g_list_list_sss0[i], nsamples_list[i]) # seed selection strategy 1 for i in range(0, len(nsamples_list)): pf_mean_array_sss1[i], cov_at_pf_array_sss1[i] = \ uutil.get_mean_and_cov_pf_from_MP(g_list_list_sss1[i], nsamples_list[i]) # seed selection strategy 2 for i in range(0, len(nsamples_list)): pf_mean_array_sss2[i], cov_at_pf_array_sss2[i] = \ uutil.get_mean_and_cov_pf_from_MP(g_list_list_sss2[i], nsamples_list[i]) # seed selection strategy 3 for i in range(0, len(nsamples_list)): pf_mean_array_sss3[i], cov_at_pf_array_sss3[i] = \ uutil.get_mean_and_cov_pf_from_MP(g_list_list_sss3[i], nsamples_list[i]) # seed selection strategy 4 for i in range(0, len(nsamples_list)): pf_mean_array_sss4[i], cov_at_pf_array_sss4[i] = \ uutil.get_mean_and_cov_pf_from_MP(g_list_list_sss4[i], nsamples_list[i])
'_cs_sss2_g_list.npy') g_list_list.append(g_list_mp_tmp) # --------------------------------------------------------------------------- # POST-PROCESSING # --------------------------------------------------------------------------- # initialization cov_at_pf_array = np.zeros(len(burn_in_list), float) pf_mean_array = np.zeros(len(burn_in_list), float) ncall_array = np.zeros(len(burn_in_list), float) cov_ref = np.zeros(len(burn_in_list), float) for i in range(0, len(burn_in_list)): pf_mean_array[i], cov_at_pf_array[ i] = uutil.get_mean_and_cov_pf_from_MP(g_list_list[i], nsamples_list[i]) ncall_array[i] = uutil.get_mean_ncall_from_MP(g_list_list[i], nsamples_list[i], burn_in_list[i]) cov_ref[i] = np.sqrt(pf_ref**(-1 / nsamples_list[i]) - 1) cov_ref_list.append(cov_ref) cov_mean_list.append(cov_at_pf_array) pf_mean_list.append(pf_mean_array) ncall_mean_list.append(ncall_array) # --------------------------------------------------------------------------- # PLOTS # --------------------------------------------------------------------------- # plot cov over b
'mp_breitung_N241_Nsim100_b10_cs_sss2_g_list.npy') g_list_mp3 = np.load(direction + 'mp_breitung_N121_Nsim100_b20_cs_sss2_g_list.npy') # --------------------------------------------------------------------------- # POST-PROCESSING # --------------------------------------------------------------------------- print('Ncall,SUS =', uutil.get_mean_ncall_from_SUS(g_list_sus, 5000, 0.1)) print('Ncall,MP1 =', uutil.get_mean_ncall_from_MP(g_list_mp1, 478, 5)) print('Ncall,MP2 =', uutil.get_mean_ncall_from_MP(g_list_mp2, 241, 10)) print('Ncall,MP3 =', uutil.get_mean_ncall_from_MP(g_list_mp3, 121, 20)) pf_mean_sus, pf_cov_sus = uutil.get_mean_and_cov_pf_from_SUS( g_list_sus, 5000, 0.1) pf_mean_mp1, pf_cov_mp1 = uutil.get_mean_and_cov_pf_from_MP(g_list_mp1, 478) pf_mean_mp2, pf_cov_mp2 = uutil.get_mean_and_cov_pf_from_MP(g_list_mp2, 241) pf_mean_mp3, pf_cov_mp3 = uutil.get_mean_and_cov_pf_from_MP(g_list_mp3, 121) print('SUS: pf =', pf_mean_sus, '| cov =', pf_cov_sus) print('MP1: pf =', pf_mean_mp1, '| cov =', pf_cov_mp1) print('MP2: pf =', pf_mean_mp2, '| cov =', pf_cov_mp2) print('MP3: pf =', pf_mean_mp3, '| cov =', pf_cov_mp3) b_line_mcs, pf_line_mcs = uutil.get_pf_line_and_b_line_from_MCS(g_list_mcs) b_line_sus, pf_line_list_sus = uutil.get_pf_line_and_b_line_from_SUS( g_list_sus, 0.1, 5000) pf_line_mean_sus, pf_line_cov_sus = uutil.get_mean_and_cov_from_pf_lines( pf_line_list_sus)
ncall_array_sus[i] = uutil.get_mean_ncall_from_SUS(g_list_list_sus, N_sus_list[i], 0.1) # -- load mp data ---------------------------------------------------------- for i in range(0, len(example_list)): example = example_list[i] direction = 'python/data/example' + repr( example_list[i]) + '/summary_data/' N = N_mp_list[i] g_list_list_mp = \ np.load(direction + 'mp_' + example_name_list[i] + '_N' + repr(N) + '_Nsim100_b' + repr(Nb_list[i]) + '_cs_sss2_g_list.npy') pf_temp, cov_temp = \ uutil.get_mean_and_cov_pf_from_MP(g_list_list_mp, N) pf_array = \ uutil.get_pf_array_from_MP(g_list_list_mp, N) pf_rel_line_mp[i] = np.mean(pf_array) / pf_ref_list[i] pf_rel_lb_line_mp[i] = np.percentile(pf_array, 10) / pf_ref_list[i] pf_rel_ub_line_mp[i] = np.percentile(pf_array, 90) / pf_ref_list[i] cov_line_mp[i] = np.std(pf_array) / np.mean(pf_array) cov_ref_line[i] = np.sqrt(np.mean(pf_array)**(-1 / N) - 1) ncall_array_mp[i] = uutil.get_mean_ncall_from_MP(g_list_list_mp, N_mp_list[i], Nb_list[i]) # analytical reference
legend_list = [] cov_at_pf_array_sus = np.zeros(n_sigma, float) pf_mean_array_sus = np.zeros(n_sigma, float) cov_at_pf_array_mp = np.zeros(n_sigma, float) pf_mean_array_mp = np.zeros(n_sigma, float) # subset simulation for i in range(0, n_sigma): pf_mean_array_sus[i], cov_at_pf_array_sus[i] = \ uutil.get_mean_and_cov_pf_from_SUS(g_list_list_sus[i], n_samples_per_level, p0) # moving particles for i in range(0, n_sigma): pf_mean_array_mp[i], cov_at_pf_array_mp[i] = \ uutil.get_mean_and_cov_pf_from_MP(g_list_list_mp[i], n_initial_samples) # analytical expression pf_ref = np.ones(n_sigma, float) * pf_ref cov_ref = np.ones(n_sigma, float) * np.sqrt(pf_ref**(-1 / n_initial_samples) - 1) # --------------------------------------------------------------------------- # PLOTS # --------------------------------------------------------------------------- # plot cov over standard deviation plt.figure() if algorithm == 'mp': plt.plot(sigma_p_list, cov_ref, '-', label=r'MP analytical', color='C0')
g_list_list = [] for Nb in burn_in_list: g_list_mp_tmp = np.load(direction + 'mp_' + example_name +'_N'+repr(N)+'_Nsim100_b'+ repr(Nb) +'_cs_sss2_g_list.npy') g_list_list.append(g_list_mp_tmp) # --------------------------------------------------------------------------- # POST-PROCESSING # --------------------------------------------------------------------------- # initialization cov_at_pf_array = np.zeros(len(burn_in_list), float) pf_mean_array = np.zeros(len(burn_in_list), float) for i in range(0, len(burn_in_list)): pf_mean_array[i], cov_at_pf_array[i] = uutil.get_mean_and_cov_pf_from_MP(g_list_list[i], N) # analytical expression pf_ref = np.ones(len(burn_in_list), float) * pf_ref cov_ref = np.ones(len(burn_in_list), float) * np.sqrt(pf_ref**(-1/N)-1) # --------------------------------------------------------------------------- # PLOTS # --------------------------------------------------------------------------- # plot cov over b plt.figure() plt.plot(burn_in_list, cov_ref,'-', label=r'MP analytical') plt.plot(burn_in_list, cov_at_pf_array,'+-', label=r'MP Strategy 2') plt.legend() plt.xlabel(r'Burn-in, $N_b$')
'mp_example_1_d10_N53_Nsim100_b10_cs_sss2_g_list.npy') g_list_mp3 = np.load(direction + 'mp_example_1_d10_N27_Nsim100_b20_cs_sss2_g_list.npy') # --------------------------------------------------------------------------- # POST-PROCESSING # --------------------------------------------------------------------------- print('Ncall,SUS =', uutil.get_mean_ncall_from_SUS(g_list_sus, 1000, 0.1)) print('Ncall,MP1 =', uutil.get_mean_ncall_from_MP(g_list_mp1, 104, 5)) print('Ncall,MP2 =', uutil.get_mean_ncall_from_MP(g_list_mp2, 53, 10)) print('Ncall,MP3 =', uutil.get_mean_ncall_from_MP(g_list_mp3, 27, 20)) pf_mean_sus, pf_cov_sus = uutil.get_mean_and_cov_pf_from_SUS( g_list_sus, 1000, 0.1) pf_mean_mp1, pf_cov_mp1 = uutil.get_mean_and_cov_pf_from_MP(g_list_mp1, 104) pf_mean_mp2, pf_cov_mp2 = uutil.get_mean_and_cov_pf_from_MP(g_list_mp2, 52) pf_mean_mp3, pf_cov_mp3 = uutil.get_mean_and_cov_pf_from_MP(g_list_mp3, 27) print('SUS: pf =', pf_mean_sus, '| cov =', pf_cov_sus) print('MP1: pf =', pf_mean_mp1, '| cov =', pf_cov_mp1) print('MP2: pf =', pf_mean_mp2, '| cov =', pf_cov_mp2) print('MP3: pf =', pf_mean_mp3, '| cov =', pf_cov_mp3) b_line_analytical = np.linspace(0, 5, 100) pf_line_analytical = analytical_CDF(b_line_analytical) b_line_sus, pf_line_list_sus = uutil.get_pf_line_and_b_line_from_SUS( g_list_sus, 0.1, 1000) pf_line_mean_sus, pf_line_cov_sus = uutil.get_mean_and_cov_from_pf_lines( pf_line_list_sus)