l1_prior_pf_1hf_2lf_avg = np.zeros((n_grid,))
    for k in range(n_avg):
        print('\nRun %d / %d' % (k + 1, n_avg))

        # -------------- 1 HF

        l1_prior_pf_1hf = []
        for idx, n_evals in enumerate(n_evals_mc):
            indices = np.random.choice(range(prior_pf_samples_hf.shape[0]), size=n_evals, replace=False)

            # Monte Carlo model
            prior_pf_samples = prior_pf_samples_hf[indices]
            p_prior_pf = Distribution(prior_pf_samples, rv_name='$Q$', label='Prior-PF')

            # l1 error between prior push-forward and reference push-forward
            l1_prior_pf_1hf.append(ref_p_prior_pf.calculate_l1_error(p_prior_pf))

        # -------------- 1 HF, 1 LF

        l1_prior_pf_1hf_1lf = []
        for idx, n_evals in enumerate(n_evals_mfmc_hf_1lf):
            n_evals = [n_evals_mfmc_lf_1lf[idx], n_evals]
            indices = np.random.choice(range(prior_samples.shape[0]), size=n_evals[0], replace=False)

            # Create a low-fidelity model
            lf_model = Model(
                eval_fun=lambda x, samples=prior_pf_samples_lf: elliptic_pde.find_xy_pair(x, prior_samples, samples),
                rv_samples=prior_samples[indices], rv_samples_pred=prior_samples[indices], n_evals=n_evals[0],
                n_qoi=n_qoi, rv_name='$q_0$', label='Low-fidelity')

            # Create a high-fidelity model
示例#2
0
        l1_prior_pf_1hf = []
        for idx, n_evals in enumerate(n_evals_mc):
            indices = np.random.choice(range(prior_pf_samples_hf.shape[0]),
                                       size=n_evals,
                                       replace=False)

            # Monte Carlo model
            prior_pf_samples = prior_pf_samples_hf[indices]
            p_prior_pf = Distribution(prior_pf_samples,
                                      rv_name='$Q$',
                                      label='Prior-PF')

            # l1 error between prior push-forward and reference push-forward
            l1_prior_pf_1hf.append(
                ref_p_prior_pf.calculate_l1_error(p_prior_pf))

        # -------------- 1 HF, 1 LF

        l1_prior_pf_1hf_1lf = []
        for idx, n_evals in enumerate(n_evals_mfmc_hf_1lf):
            n_evals = [n_evals_mfmc_lf_1lf[idx], n_evals]
            indices = np.random.choice(range(prior_samples.shape[0]),
                                       size=n_evals[0],
                                       replace=False)

            # Create a low-fidelity model
            lf_model = Model(
                eval_fun=lambda x, samples=prior_pf_samples_lf: elliptic_pde.
                find_xy_pair(x, prior_samples, samples),
                rv_samples=prior_samples[indices],