def branin(n_eval, random_seed): evaluator = Branin() space = [ hp.randint('x' + str(i), evaluator.n_vertices[i]) for i in range(len(evaluator.n_vertices)) ] init_points = sample_init_points(evaluator.n_vertices, 1, random_seed).long().numpy() init_points = [{ 'x' + str(j): init_points[i][j] for j in range(len(evaluator.n_vertices)) } for i in range(init_points.shape[0])] def evaluate(x): return evaluator.evaluate(torch.from_numpy(np.array(x))).item() trials = base.Trials() fmin(evaluate, space, algo=tpe.suggest, max_evals=n_eval, points_to_evaluate=init_points, trials=trials) evaluations, optimum = evaluations_from_trials(trials) return optimum
def __init__(self, random_seed_pair=(None, None)): citywise_satisfaction, tourism_attractions_similarity, transportation_type, travel_time, cost, delay_prob = generate_travel_plan_problem( TRAVEL_N_CITIES, random_seed_pair[0]) self.n_vertices = [TRAVEL_N_CITIES] + list( number_of_edges(transportation_type)) self.suggested_init = torch.empty(0).long() self.suggested_init = torch.cat([ self.suggested_init, sample_init_points(self.n_vertices, 20 - self.suggested_init.size(0), random_seed_pair[1]).long() ], dim=0) self.adjacency_mat = [] self.fourier_freq = [] self.fourier_basis = [] self.random_seed_info = 'R'.join([ str(random_seed_pair[h]).zfill(4) if random_seed_pair[h] is not None else 'None' for h in range(2) ]) for i in range(len(self.n_vertices)): n_v = self.n_vertices[i] adjmat = torch.diag(torch.ones(n_v - 1), -1) + torch.diag( torch.ones(n_v - 1), 1) self.adjacency_mat.append(adjmat) laplacian = torch.diag(torch.sum(adjmat, dim=0)) - adjmat eigval, eigvec = torch.symeig(laplacian, eigenvectors=True) self.fourier_freq.append(eigval) self.fourier_basis.append(eigvec) self.citywise_satisfaction = citywise_satisfaction self.tourism_attractions_similarity = tourism_attractions_similarity self.transportation_type = transportation_type self.travel_time = travel_time self.cost = cost self.delay_prob = delay_prob
def pest_control(n_eval, random_seed): space = [ hp.choice('x' + str(i + 1).zfill(2), range(PESTCONTROL_N_CHOICE)) for i in range(PESTCONTROL_N_STAGES) ] init_points = sample_init_points([PESTCONTROL_N_CHOICE] * PESTCONTROL_N_STAGES, 20, random_seed).long().numpy() init_points = [{ 'x' + str(j + 1).zfill(2): init_points[i][j] for j in range(PESTCONTROL_N_STAGES) } for i in range(20)] def evaluate(x): return _pest_control_score(np.array(x)) trials = base.Trials() fmin(evaluate, space, algo=tpe.suggest, max_evals=n_eval, points_to_evaluate=init_points, trials=trials) evaluations, optimum = evaluations_from_trials(trials) return optimum
def pest_control(n_eval, random_seed): init_points = sample_init_points([PESTCONTROL_N_CHOICE] * PESTCONTROL_N_STAGES, 20, random_seed).long().numpy() evaluations = [] for i in range(init_points.shape[0]): evaluations.append(_pest_control_score(init_points[i])) for i in range(n_eval): evaluations.append(_pest_control_score(np.random.randint(0, PESTCONTROL_N_CHOICE, (PESTCONTROL_N_STAGES, )))) evaluations, optimum = evaluations_from_list(evaluations) return optimum
def branin(n_eval, random_seed): evaluator = Branin() init_points = sample_init_points(evaluator.n_vertices, 1, random_seed).long().numpy() def evaluate(x): return evaluator.evaluate(torch.from_numpy(x)).item() evaluations = [] for i in range(init_points.shape[0]): evaluations.append(evaluate(init_points[i])) for i in range(n_eval): evaluations.append(evaluate(np.array([np.random.randint(0, evaluator.n_vertices[elm]) for elm in range(len(evaluator.n_vertices))]))) evaluations, optimum = evaluations_from_list(evaluations) return optimum
def centroid(n_eval, random_seed_pair): evaluator = Centroid(random_seed_pair) init_points = sample_init_points([CENTROID_N_CHOICE] * CENTROID_N_EDGES, 20, random_seed_pair[1]).long().numpy() def evaluate(x): return evaluator.evaluate(torch.from_numpy(x)).item() evaluations = [] for i in range(init_points.shape[0]): evaluations.append(evaluate(init_points[i])) for i in range(n_eval): evaluations.append(evaluate(np.random.randint(0, CENTROID_N_CHOICE, (CENTROID_N_EDGES,)))) evaluations, optimum = evaluations_from_list(evaluations) return optimum
def centroid(n_eval, random_seed_pair): space = [ hp.choice('x' + str(i + 1).zfill(2), range(CENTROID_N_CHOICE)) for i in range(CENTROID_N_EDGES) ] init_points = sample_init_points([CENTROID_N_CHOICE] * CENTROID_N_EDGES, 20, random_seed_pair[1]).long().numpy() init_points = [{ 'x' + str(j + 1).zfill(2): init_points[i][j] for j in range(CENTROID_N_EDGES) } for i in range(20)] evaluator = Centroid(random_seed_pair) def evaluate(x): interaction_mixed = edge_choice(np.array(x), evaluator.interaction_list) partition_mixed = partition(interaction_mixed, CENTROID_GRID) kld_sum = 0 for i in range(evaluator.n_ising_models): kld = ising_dense( interaction_sparsified=interaction_mixed, interaction_original=evaluator.interaction_list[i], covariance=evaluator.covariance_list[i], partition_sparsified=partition_mixed, partition_original=evaluator.partition_original_list[i], grid_h=CENTROID_GRID[0]) kld_sum += kld return kld_sum / float(evaluator.n_ising_models) trials = base.Trials() fmin(evaluate, space, algo=tpe.suggest, max_evals=n_eval, points_to_evaluate=init_points, trials=trials) evaluations, optimum = evaluations_from_trials(trials) return optimum