Exemplo n.º 1
0
    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
Exemplo n.º 2
0
    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