def inside_loop(my_model, n_trials, n_timebound): Path(f'{Config.RESULTS_DATA}_{n_trials}').mkdir(parents=True, exist_ok=True) tasks = load_tasks(f'{Config.INPUT_DATA}/tasks_{my_model["n_tasks"]}.json') problem = deepcopy(my_model['problem']) problem["tasks"] = tasks problem["n_tasks"] = my_model["n_tasks"] problem["shape"] = [len(problem["clouds"]) + len(problem["fogs"]), my_model["n_tasks"]] # for paras in parameters_grid: if Config.MODE == "epoch": optimizer = BaseNSGA_III(problem, my_model["pop_size"], my_model["epoch"], my_model["func_eval"], my_model["lb"], my_model["ub"], paras=None) solutions, g_best, g_best_dict = optimizer.train() elif Config.MODE == "fe": optimizer = BaseNSGA_III(problem, my_model["pop_size"], my_model["epoch"], my_model["func_eval"], my_model["lb"], my_model["ub"], paras=None) solutions, g_best, g_best_dict = optimizer.train() if Config.TIME_BOUND_KEY: results_folder_path = f'{Config.RESULTS_DATA}_{n_timebound}s/{Config.METRICS}/' else: results_folder_path = f'{Config.RESULTS_DATA}_no_time_bound/{Config.METRICS}/' Path(results_folder_path).mkdir(parents=True, exist_ok=True) name_mha = 'nsgaiii' name_paras = f'{my_model["epoch"]}_{my_model["pop_size"]}' save_training_fitness_information(g_best_dict, len(tasks), name_mha, name_paras, results_folder_path) save_experiment_result(problem, solutions, g_best, name_mha, name_paras, results_folder_path) save_visualization(problem, g_best, name_mha, name_paras, results_folder_path)
def getting_results_for_task(models): matrix_fit = zeros((1, 6)) for n_task in OptExp.N_TASKS: for my_model in models: tasks = load_tasks(f'{Config.INPUT_DATA}/tasks_{n_task}.json') problem = deepcopy(my_model['problem']) problem["tasks"] = tasks problem["n_tasks"] = n_task problem["shape"] = [len(problem["clouds"]) + len(problem["fogs"]), n_task] my_model['problem'] = problem for n_trials in range(OptExp.N_TRIALS): if Config.TIME_BOUND_KEY: for n_timebound in OptExp.TIME_BOUND_VALUES: if Config.MODE == "epoch": for epoch in OptExp.EPOCH: end_paras = f"{epoch}" df_matrix = inside_loop(my_model, n_trials, n_timebound, epoch, None, end_paras) df_name = array([[n_task, my_model["name"], n_trials], ] * len(df_matrix)) matrix = hstack(df_name, df_matrix) matrix_fit = vstack((matrix_fit, matrix)) else: if Config.MODE == "epoch": for epoch in OptExp.EPOCH: end_paras = f"{epoch}" df_matrix = inside_loop(my_model, n_trials, None, epoch, None, end_paras) df_name = array([[n_task, my_model["name"], n_trials], ] * len(df_matrix)) matrix = hstack((df_name, df_matrix)) matrix_fit = vstack((matrix_fit, matrix)) return matrix_fit[1:]
def inside_loop(my_model, n_trials, n_timebound, epoch, fe, end_paras): for n_tasks in OptExp.N_TASKS: tasks = load_tasks(f'{Config.INPUT_DATA}/tasks_{n_tasks}.json') problem = deepcopy(my_model['problem']) problem["tasks"] = tasks problem["n_tasks"] = n_tasks problem["shape"] = [ len(problem["clouds"]) + len(problem["fogs"]), n_tasks ] for pop_size in OptExp.POP_SIZE: for lb, ub in zip(OptExp.LB, OptExp.UB): parameters_grid = list(ParameterGrid(my_model["param_grid"])) for paras in parameters_grid: name_paras = f'{epoch}_{pop_size}_{end_paras}' opt = getattr(optimizer, my_model["class"])(problem=problem, pop_size=pop_size, epoch=epoch, func_eval=fe, lb=lb, ub=ub, verbose=OptExp.VERBOSE, paras=paras) solution, best_fit, best_fit_list, time_total = opt.train() if Config.TIME_BOUND_KEY: path_results = f'{Config.RESULTS_DATA}/{n_timebound}s/task_{n_tasks}/{Config.METRICS}/{my_model["name"]}/{n_trials}' else: path_results = f'{Config.RESULTS_DATA}/no_time_bound/task_{n_tasks}/{Config.METRICS}/{my_model["name"]}/{n_trials}' Path(path_results).mkdir(parents=True, exist_ok=True) save_experiment_results_single( problem, solution, best_fit_list, name_paras, time_total, path_results, Config.SAVE_TRAINING_RESULTS) if Config.VISUAL_SAVING: save_visualization_results_single( problem, solution, best_fit, my_model["name"], name_paras, path_results)