in scheme_adapters/polyfit_adapter/polyfit_adapter.py [0:0]
def exploit_best_region(self):
scores = self.scores[:]
scores.sort()
scores.reverse()
num_points = max(0.1 * self.num_runs, 2)
runs_left = self.total_runs - self.num_runs
data_dict = dict()
if runs_left <= 0:
return data_dict
for i in range(0, num_points, 1):
for j in range(len(self.params)):
if isinstance(self.ranges[self.params[j]], list):
point = scores[i][1][j]
min_range = self.convert(self.ranges[self.params[j]][0])
max_range = self.convert(self.ranges[self.params[j]][1])
range_diff = max_range - min_range
lower_bound = max(point - int(0.1 * range_diff), min_range)
upper_bound = min(point + int(0.1 * range_diff), max_range)
num_samples = int(runs_left / (num_points - i))
num_samples = min(num_samples, upper_bound - lower_bound)
runs_left -= num_samples
random_list = random.sample(range(lower_bound, upper_bound), num_samples)
if self.params[j] in data_dict.keys():
data_dict[self.params[j]] += random_list
else:
data_dict[self.params[j]] = random_list
else:
data_dict[self.params[j]] = [scores[i][1][j]]
data_dict["action"] = [self.ranges["action"]]
return data_dict