def generate_search_param()

in scheme_adapters/pso_adapter/pso_adapter.py [0:0]


    def generate_search_param(self):
        num = self.total_runtime / self.workload_info[0]["runtime"]
        self.num_runs = max(2**self.num_dim, min(self.num_runs, num))

        key_range_list = []
        for key, value in self.ranges.items():
            if isinstance(value, list):
                range_diff = self.convert(value[1]) - self.convert(value[0])
                key_range_list.append(range_diff + 1)

        key_dim = self.find_key_dim(self.num_runs, key_range_list)
        key_index = 0
        for key, value in self.ranges.items():
            if isinstance(value, list):
                range_diff = self.convert(value[1]) - self.convert(value[0])
                num_runs = key_dim[key_index]
                key_index += 1
                num_runs = min(num_runs, range_diff+1)
                num_regions = max(1, int(num_runs / 5))
                region_size = int(range_diff/num_regions)
                self.search_param[key] = [self.convert(value[0])]
                num_left = num_runs - (num_regions + 1)
                num_samples = int(num_left/ num_regions)
                remainder = num_left % num_regions
                for i in range(num_regions):
                    self.search_param[key].append((i+1)*region_size)
                    numbers = num_samples + (1 if i < remainder else 0)
                    random_list = random.sample(range((i*region_size)+1, (i+1)*region_size), numbers)
                    self.search_param[key] += random_list
            else:
                self.search_param[key] = [value]
        for key, value in self.search_param.items():
            value.sort()
            print(key,value)