示例#1
0
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)
示例#2
0
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:]
示例#3
0
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)