def METHOD_NAME(self, tracks, timestamp, nchoose=1, **kwargs):
    if nchoose > 1:
        raise ValueError("Can only return best result (nchoose=1)")
    all_action_generators = dict()
    for sensor in self.sensors:
        action_generators = sensor.actions(timestamp)
        all_action_generators[sensor] = action_generators
    def config_from_x(x):
        config = defaultdict(list)
        for i, (sensor, generators) in enumerate(all_action_generators.items()):
            for generator in generators:
                action = generator.action_from_value(x[i])
                if action is not None:
                    config[sensor].append(action)
        return config
    def optimise_func(x):
        config = config_from_x(x)
        return -self.reward_function(config, tracks, timestamp)
    best_x = self._optimiser(optimise_func, all_action_generators)
    config = config_from_x(best_x)
    return [config]