def qKq_lebesgue(num_samples: int, qrbf: QuadratureRBFLebesgueMeasure): bounds = qrbf.integral_bounds._bounds samples = _sample_uniform(num_samples, bounds) qKx = qrbf.qK(samples) differences = np.array([x[1] - x[0] for x in bounds]) volume = np.prod(differences) return np.mean(qKx) * volume
measure=measure) else: raise ValueError("Measure-integral-bounds combination not defined") print() print("measure: {}".format(MEASURE_INTBOUNDS)) print("no dimensions: {}".format(D)) print() # === qK ============================================================== num_runs = 100 num_samples = 1e6 num_std = 3 qK_SAMPLES = np.zeros([num_runs, x2.shape[0]]) qK = emukit_qrbf.qK(x2)[0, :] for i in range(num_runs): num_samples = int(num_samples) if MEASURE_INTBOUNDS == "Lebesgue-finite": qK_samples = qK_lebesgue(num_samples, emukit_qrbf, x2) elif MEASURE_INTBOUNDS == "GaussIso-infinite": qK_samples = qK_gauss_iso(num_samples, emukit_qrbf, x2) elif MEASURE_INTBOUNDS == "Uniform-infinite": qK_samples = qK_uniform(num_samples, emukit_qrbf, x2) elif MEASURE_INTBOUNDS == "Uniform-finite": qK_samples = qK_uniform(num_samples, emukit_qrbf, x2) else: raise ValueError("Measure-integral-bounds combination not defined") qK_SAMPLES[i, :] = qK_samples