예제 #1
0
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
예제 #2
0
 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
예제 #3
0
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
예제 #4
0
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
예제 #5
0
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
예제 #6
0
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
예제 #7
0
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