def model(self): super(ProbabilisticScheduler, self).model() overall_best_score = self._overall_best_score() additional_parameters = self._additional_acquisition_function_parameters() # Calculate acquisition functions by averaging over models # If hyperparameters were optimised, there is only one model over with # we average here. This means we don't have to treat sampling and # optimisation separately self.acquisition_functions = dict() for algorithm, models_for_algorithm in self.models.items(): acquisition_functions = [] for score_model, time_model in zip(models_for_algorithm['score'], models_for_algorithm['time']): # Call a with all available data acquisition_function = self.__class__.a(self, overall_best_score, score_model.mean, score_model.std_dev, time_model.mean, time_model.std_dev, **additional_parameters) acquisition_functions.append(acquisition_function) avg_acquisition_function = (np.linspace(0,1,100), np.mean(acquisition_functions, axis=0)) if self._truncate_a(): max_x = 0 for datum in self.data[algorithm]: max_x = max(datum.x, max_x) xs_org, ys_org = avg_acquisition_function xs, ys = truncate_func_at_x(max_x, xs_org, ys_org) avg_acquisition_function = (xs, ys) else: xs_org, ys_org = avg_acquisition_function xs, ys = truncate_func_at_x(0.01, xs_org, ys_org) avg_acquisition_function = (xs, ys) self.acquisition_functions[algorithm] = avg_acquisition_function
def model(self): if self.decision == "SKIP": print "Skip modelling" else: super(MinimiseUncertaintyAndExploitScheduler, self).model() for algorithm, acquisition_function in self.acquisition_functions.items(): xs_org, ys_org = acquisition_function # Truncate at the end of the burn in phase xs, ys = truncate_func_at_x(self.burn_in_end, xs_org, ys_org) acquisition_function = (xs, ys) self.acquisition_functions[algorithm] = acquisition_function