def perform_sequential_line_search(trial_index: int) -> np.ndarray: optimality_gaps = np.ndarray(NUM_ITERS, ) # Instantiate the optimizer with acquisition function specification optimizer = pySequentialLineSearch.SequentialLineSearchOptimizer( num_dims=num_dims, use_map_hyperparams=USE_MAP_HYPERPARAMS, acquisition_func_type=acquisition_func_type[0], initial_query_generator=generate_initial_slider) # Specify a hyperparameter in case the acquisition function is GP-UCB optimizer.set_gaussian_process_upper_confidence_bound_hyperparam( acquisition_func_type[1]) for i in range(NUM_ITERS): slider_ends = optimizer.get_slider_ends() slider_position = ask_human_for_slider_manipulation(slider_ends) optimizer.submit_feedback_data(slider_position) optimality_gap = -calc_simulated_objective_func( optimizer.get_maximizer()) optimality_gaps[i] = optimality_gap return optimality_gaps
def perform_sequential_line_search(trial_index: int) -> np.ndarray: optimality_gaps = np.ndarray(NUM_ITERS, ) optimizer = pySequentialLineSearch.SequentialLineSearchOptimizer( num_dims=num_dims, use_map_hyperparams=USE_MAP_HYPERPARAMS, kernel_type=kernel_type, initial_slider_generator=generate_initial_slider) optimizer.set_hyperparams(kernel_signal_var=0.50, kernel_length_scale=length_scale, kernel_hyperparams_prior_var=0.10) for i in range(NUM_ITERS): slider_ends = optimizer.get_slider_ends() slider_position = ask_human_for_slider_manipulation(slider_ends) optimizer.submit_line_search_result(slider_position) optimality_gap = -calc_simulated_objective_func( optimizer.get_maximizer()) optimality_gaps[i] = optimality_gap return optimality_gaps
def main(): optimizer = pySequentialLineSearch.SequentialLineSearchOptimizer( num_dims=5) optimizer.set_hyperparams(kernel_signal_var=0.50, kernel_length_scale=0.10, kernel_hyperparams_prior_var=0.10) for i in range(30): slider_ends = optimizer.get_slider_ends() slider_position = ask_human_for_slider_manipulation(slider_ends) optimizer.submit_feedback_data(slider_position) residual = np.linalg.norm(optimizer.get_maximizer() - 0.2) print("[#iters = " + str(i + 1) + "] residual: " + str(residual))
optimality_gaps = np.ndarray(shape=(NUM_ITERS, NUM_TRIALS, len(length_scale_set), len(map_condition_set), len(num_dims_set))) # Perform sequential line search procedures with various conditions for index_num_dims, num_dims in enumerate(num_dims_set): print("Testing on a {}-dimensional function...".format(num_dims)) for index_map_condition, map_condition in enumerate(map_condition_set): print("\t" + "Hyperparameters condition: " + str(map_condition)) for index_length_scale, length_scale in enumerate(length_scale_set): print("\t\t" + "Kernel length scale: " + str(length_scale)) for trial in range(NUM_TRIALS): optimizer = pySequentialLineSearch.SequentialLineSearchOptimizer( num_dims=num_dims, use_map_hyperparams=map_condition["use_map_hyperparams"], kernel_type=KERNEL_TYPE, initial_slider_generator=generate_initial_slider) optimizer.set_hyperparams( kernel_signal_var=0.50, kernel_length_scale=length_scale, kernel_hyperparams_prior_var=map_condition[ "kernel_hyperparams_prior_var"]) for i in range(NUM_ITERS): slider_ends = optimizer.get_slider_ends() slider_position = ask_human_for_slider_manipulation( slider_ends) optimizer.submit_line_search_result(slider_position)