示例#1
0
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
示例#4
0
                     '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')
示例#7
0
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$')
示例#8
0
                     '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)