def one_iter(self): k = C(1.0) * CustomRBF(1.0) + WhiteKernel(1.0) gp = GaussianProcessRegressor(kernel=k, alpha=0.01, normalize_y=True, n_restarts_optimizer=10) gp.custom_fit(self.DXX, self.Y) mu, std = gp.custom_predict(self.DZZ, self.DXZ, return_std=True) # record the best kernel ever seen min_value = np.min(self.Y) best_ker = self.observations[np.argmin(self.Y)] self.record_best_ker.append(best_ker) # remember to reshape mu and std ei = self.EI(mu.reshape(-1), min_value, std.reshape(-1), 'min') next_i = np.argmax(ei) # update candidate if self.bayesian is None: self.update_candidates_nonbayesian(next_i) else: self.update_candidates_bayesian(next_i) return min_value