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
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],