def main(): #with open(RESULTS_FILE, 'rb') as cached_pcd_file: # cache_data = pickle.load(cached_pcd_file) # pprint.pprint(cache_data) #return #with open(RESULTS_FILE, 'rb') as cached_pcd_file: # cache_data = pickle.load(cached_pcd_file) # for alg in ALGORITHMS: # if ALGORITHMS[alg]["do_hyper"]: # ALGORITHMS[alg]["opt_param"] = cache_data[alg]["opt_param"] #### STEP 1 - Get classified pointcloud #### environment = PointCloudEnvironment(my_print, TERRAIN_ASSESSMENT_FILE, POINTCLOUD_FILE) coverable_points = environment.coverable_pcd.points traversable_points = environment.traversable_pcd.points motion_planner = MotionPlanner(my_print, environment.traversable_pcd) #If from terrain assessment file: #with open(TERRAIN_ASSESSMENT_FILE, 'rb') as cached_pcd_file: # cache_data = pickle.load(cached_pcd_file) # coverable_points = cache_data["coverable_points"] # traversable_points = cache_data["traversable_points"] #traversable_pcd = PointCloud(my_print, points= traversable_points) #motion_planner = MotionPlanner(my_print, traversable_pcd) #### STEP 2 - Hyper parameters #### for algorithm_key, algorithm in ALGORITHMS.items(): if algorithm["do_hyper"]: trials = Trials() hyper_optimizer = HyptoOptimizer(save_data, algorithm, my_print, HYPER_START_POS, motion_planner, coverable_points) if algorithm_key == "BA*": opt_param = fmin(hyper_optimizer.hyper_test_bastar, space=(hp.uniform('angle_offset', 0, np.pi * 2), hp.uniform('step_size', 0.5, 1), hp.uniform('visited_threshold', 0.25, 0.5)), algo=tpe.suggest, max_evals=HYPER_MAX_EVAL, trials=trials) elif algorithm_key == "Inward Spiral": opt_param = fmin(hyper_optimizer.hyper_test_inward_spiral, space=(hp.uniform('step_size', 0.5, 1), hp.uniform('visited_threshold', 0.25, 0.5)), algo=tpe.suggest, max_evals=HYPER_MAX_EVAL, trials=trials) elif algorithm_key == "Sampled BA*": coverage_2 = algorithm["hyper_min_coverage"] / 100 opt_param = fmin( hyper_optimizer.hyper_test_sampled_bastar_param, space=(hp.uniform('coverage_1', 0.25, coverage_2), hp.uniform('coverage_2', coverage_2 - 0.025, coverage_2), hp.uniform('max_distance', 1, 10), hp.uniform('max_distance_part_II', 1, 20), hp.uniform('max_iterations', 30, 150), hp.uniform('min_bastar_coverage', 0.005, 0.05), hp.uniform('min_spiral_length', 2, 100), hp.uniform('nbr_of_angles', 0.6, 8.4), hp.uniform('step_size', 0.66, 1.33), hp.uniform('visited_threshold', 0.25, 0.5)), algo=tpe.suggest, max_evals=HYPER_MAX_EVAL, trials=trials) print(trials.statuses()) algorithm["opt_param"] = opt_param algorithm["hyper_data"] = trials.trials ALGORITHMS[algorithm_key] = algorithm save_data(ALGORITHMS) #### STEP 3 - Full tests #### for start_point_nr in range(NUMBER_OF_START_POINTS): #start_point = get_random_point(traversable_points) start_point = start_points[start_point_nr] print("Start point " + str(start_point_nr) + ": " + str(start_point)) for algorithm_key, algorithm in ALGORITHMS.items(): if algorithm["do_experiment"]: experimenter = Experimenter(algorithm, print) parameters = None if "opt_param" in algorithm: parameters = algorithm["opt_param"] cpp = algorithm["cpp"](my_print, motion_planner, coverable_points, algorithm["experiment_time_limit"], parameters) if "sample_specific_stats" in algorithm: experimenter.perform_sample_cpp(cpp, start_point, start_point_nr) algorithm["sample_specific_stats"].append( experimenter.sample_specific_stats) else: experimenter.perform_cpp(cpp, start_point, start_point_nr) algorithm["experiment_results"].append(experimenter.results) ALGORITHMS[algorithm_key] = algorithm save_data(ALGORITHMS)
def main(): #with open(RESULTS_FILE, 'rb') as cached_pcd_file: # cache_data = pickle.load(cached_pcd_file) # pprint.pprint(cache_data) #return with open(RESULTS_FILE, 'rb') as cached_pcd_file: cache_data = pickle.load(cached_pcd_file) ALGORITHMS = deepcopy(cache_data) for alg in ALGORITHMS: ALGORITHMS[alg]["do_hyper"] = False ALGORITHMS[alg][ "cpp"] = lambda print, motion_planner, cov_points, time_limit, parameters: RandomBAstar3( print, motion_planner, PointCloud( print, points=cov_points), time_limit, parameters) #### STEP 1 - Get classified pointcloud #### environment = PointCloudEnvironment(my_print, TERRAIN_ASSESSMENT_FILE, POINTCLOUD_FILE) coverable_points = environment.coverable_pcd.points traversable_points = environment.traversable_pcd.points motion_planner = MotionPlanner(my_print, environment.traversable_pcd) #If from terrain assessment file: #with open(TERRAIN_ASSESSMENT_FILE, 'rb') as cached_pcd_file: # cache_data = pickle.load(cached_pcd_file) # coverable_points = cache_data["coverable_points"] # traversable_points = cache_data["traversable_points"] #traversable_pcd = PointCloud(my_print, points= traversable_points) #motion_planner = MotionPlanner(my_print, traversable_pcd) #### STEP 2 - Hyper parameters #### for algorithm_key, algorithm in ALGORITHMS.items(): if algorithm["do_hyper"]: trials = Trials() hyper_optimizer = HyptoOptimizer(save_data, algorithm, my_print, HYPER_START_POS, motion_planner, coverable_points) opt_param = fmin( hyper_optimizer.hyper_test_newest_sampled_bastar_param, space=(hp.uniform('ba_exploration', 0.75, 0.95), hp.uniform('max_distance', 1, 5), hp.uniform('max_distance_part_II', 4, 10), hp.uniform('min_bastar_cost_per_coverage', 5000, 10000), hp.uniform('min_spiral_cost_per_coverage', 10000, 20000), hp.uniform('step_size', 0.5, 1.0), hp.uniform('visited_threshold', 0.25, 0.5)), algo=tpe.suggest, max_evals=HYPER_MAX_EVAL, trials=trials) print(trials.statuses()) algorithm["opt_param"] = opt_param algorithm["hyper_data"] = trials.trials ALGORITHMS[algorithm_key] = algorithm save_data(ALGORITHMS) #### STEP 3 - Full tests #### for start_point_nr in range(NUMBER_OF_START_POINTS): #start_point = get_random_point(traversable_points) start_point = start_points[start_point_nr] print("Start point " + str(start_point_nr) + ": " + str(start_point)) for algorithm_key, algorithm in ALGORITHMS.items(): if algorithm["do_experiment"]: experimenter = Experimenter(algorithm, print) parameters = None if "opt_param" in algorithm: parameters = algorithm["opt_param"] cpp = algorithm["cpp"](my_print, motion_planner, coverable_points, algorithm["experiment_time_limit"], parameters) if "sample_specific_stats" in algorithm: experimenter.perform_sample_cpp(cpp, start_point, start_point_nr) algorithm["sample_specific_stats"].append( experimenter.sample_specific_stats) else: experimenter.perform_cpp(cpp, start_point, start_point_nr) algorithm["experiment_results"].append(experimenter.results) ALGORITHMS[algorithm_key] = algorithm save_data(ALGORITHMS)