Example #1
0
def minimize(func_name):
    config = configparser.ConfigParser()
    config_name = os.path.join(project_dir,
                               'objective_function/config/noisy.ini')
    config.read(config_name, encoding='utf-8')
    print(config.sections())

    optimal_position_address = os.path.join(
        project_dir, config.get(obj_name, 'optimal_position_address'))
    dim_size = config.getint(obj_name, 'dim_size')
    dim_regs = eval(config.get(obj_name, 'dim_regs'))
    budget = config.getint(obj_name, 'budget')
    set_optimal_position(optimal_position_address)

    seed = 0
    random.seed(seed)
    np.random.seed(seed)
    repeat = 10
    for _ in range(repeat):
        x = fmin(function_dict[func_name],
                 space=[
                     hp.uniform(str(dim), dim_regs[0], dim_regs[1])
                     for dim in range(dim_size)
                 ],
                 algo=tpe.suggest,
                 max_evals=budget)
        epoch_first_items(budget)
        append_all_epoch()
    all_epoch = np.array(get_all_epoch())
    log_address = os.path.join(project_dir, 'hyperopt_exp/log/noisy/')
    file_name = os.path.join(log_address,
                             '{}_{}.txt'.format(obj_name, dim_size))
    os.makedirs(log_address, exist_ok=True)
    np.savetxt(file_name, all_epoch)
    print(all_epoch.shape)
Example #2
0
def minimize(func_name):
    config = configparser.ConfigParser()
    config_name = os.path.join(project_dir, 'objective_function/config/noisy.ini')
    config.read(config_name, encoding='utf-8')
    print(config.sections())

    optimal_position_address = os.path.join(project_dir,  config.get(obj_name, 'optimal_position_address'))
    dim_size = config.getint(obj_name, 'dim_size')
    dim_regs = eval(config.get(obj_name, 'dim_regs'))
    budget = config.getint(obj_name, 'budget')
    set_optimal_position(optimal_position_address)
    func = noisy_function_dict[func_name]

    repeat = 30
    budget_list = np.arange(0, budget, budget/10) + budget/10
    real_value = np.zeros((repeat, budget_list.shape[0]))
    seed = 0
    random.seed(seed)
    np.random.seed(seed)
    for i in range(repeat):
        for j in range(len(budget_list)):
            x = optimize(budget_list[j], func, dim_regs, dim_size)
            real_value[i][j] = base_function_dict[args.objective](x)
    log_address = os.path.join(project_dir, 'DEAP_exp/log/noisy/')
    file_name = os.path.join(log_address, '{}_{}.txt'.format(obj_name, dim_size))
    os.makedirs(log_address, exist_ok=True)
    np.savetxt(file_name, real_value)
    print(real_value[0])
Example #3
0
def minimize(func_name):
    config = configparser.ConfigParser()
    config_name = os.path.join(project_dir, 'objective_function/config/scale.ini')
    config.read(config_name, encoding='utf-8')
    print(config.sections())

    optimal_position_address_dir = os.path.join(project_dir,  "objective_function/optimal_position")
    dim_list = eval(config.get(func_name, 'dim_list'))
    dim_regs = eval(config.get(func_name, 'dim_regs'))

    repeat = 30
    values = np.zeros((repeat, len(dim_list)))
    seed = 0
    random.seed(seed)
    np.random.seed(seed)
    speed_lim = dim_regs[1]/5

    for i in range(repeat):
        for j in range(len(dim_list)):
            dim_size = dim_list[j]
            creator.create("FitnessMin", base.Fitness, weights=(-1.0,))
            creator.create("Particle", list, fitness=creator.FitnessMin, speed=list, smin=None, smax=None, best=None)
            toolbox = base.Toolbox()
            toolbox.register("particle", generate, size=dim_size, pmin=dim_regs[0], pmax=dim_regs[1], smin=-speed_lim, smax=speed_lim)
            toolbox.register("population", tools.initRepeat, list, toolbox.particle)
            toolbox.register("update", updateParticle, phi1=2.0, phi2=2.0)
            toolbox.register("evaluate", lambda x: (function_dict[func_name](x), ))

            optimal_position_address = os.path.join(optimal_position_address_dir, func_name, "{}_{}.txt".format(func_name, dim_size))
            budget = dim_size * 100
            set_optimal_position(optimal_position_address)
            population = 10
            pop = toolbox.population(n=population)

            best = None
            while get_cnt() < budget:
                for part in pop:
                    part.fitness.values = toolbox.evaluate(part)
                    if not part.best or part.best.fitness < part.fitness:
                        part.best = creator.Particle(part)
                        part.best.fitness.values = part.fitness.values
                    if not best or best.fitness < part.fitness:
                        best = creator.Particle(part)
                        best.fitness.values = part.fitness.values
                for part in pop:
                    toolbox.update(part, best)
            values[i, j] = best.fitness.values[0]
            clear_epoch()
            print("finist repeat: {}, dim: {}, best f: {}".format(i, dim_size, best.fitness.values))
    log_address = os.path.join(project_dir, 'DEAP_exp/log/scale/')
    file_name = os.path.join(log_address, '{}.txt'.format(obj_name))
    os.makedirs(log_address, exist_ok=True)
    np.savetxt(file_name, values)
Example #4
0
def minimize(func_name):
    config = configparser.ConfigParser()
    config_name = os.path.join(project_dir, 'objective_function/config/scale.ini')
    config.read(config_name, encoding='utf-8')
    print(config.sections())

    optimal_position_address_dir = os.path.join(project_dir,  "objective_function/optimal_position")
    dim_list = eval(config.get(func_name, 'dim_list'))
    dim_regs = eval(config.get(func_name, 'dim_regs'))

    repeat = 30
    values = np.zeros((repeat, len(dim_list)))
    seed = 0
    random.seed(seed)
    np.random.seed(seed)
    def fitness_func(solution, solution_idx):
        # Calculating the fitness value of each solution in the current population.
        output = -function_dict[obj_name](solution)
        return output
    fitness_function = fitness_func

    for i in range(repeat):
        for j in range(len(dim_list)):
            num_genes = dim_size = dim_list[j]
            gene_space = [{'low': dim_regs[0], 'high': dim_regs[1]}] * dim_size
            if dim_list[j] == 20:
                sol_per_pop = 20
                num_parents_mating = 5
            else:
                sol_per_pop = 50
                num_parents_mating = 7
            budget = 100 * dim_size
            num_generations = int(budget // sol_per_pop)
            optimal_position_address = os.path.join(optimal_position_address_dir, func_name, "{}_{}.txt".format(func_name, dim_size))
            set_optimal_position(optimal_position_address)
            ga_instance = pygad.GA(num_generations=num_generations,
                       num_parents_mating=num_parents_mating, 
                       fitness_func=fitness_function,
                       sol_per_pop=sol_per_pop, 
                       gene_space=gene_space,
                       num_genes=num_genes)
            ga_instance.run()
            result = get_best_result()
            clear_epoch()
            print("finist repeat: {}, dim: {}, best f: {}".format(i, dim_size, result))
            values[i, j] = result
    log_address = os.path.join(project_dir, 'pygad_exp/log/scale/')
    file_name = os.path.join(log_address, '{}.txt'.format(obj_name))
    os.makedirs(log_address, exist_ok=True)
    np.savetxt(file_name, values)
    print(values)
Example #5
0
def minimize(func_name):
    config = configparser.ConfigParser()
    config_name = os.path.join(project_dir,
                               'objective_function/config/low_dim.ini')
    config.read(config_name, encoding='utf-8')
    print(config.sections())

    optimal_position_address = os.path.join(
        project_dir, config.get(func_name, 'optimal_position_address'))
    dim_size = config.getint(func_name, 'dim_size')
    dim_regs = eval(config.get(func_name, 'dim_regs'))
    budget = config.getint(func_name, 'budget')

    repeat = 30
    set_optimal_position(optimal_position_address)
    seed = 0
    random.seed(seed)
    np.random.seed(seed)
    for i in range(repeat):
        init_pos = [
            np.random.uniform(dim_regs[0], dim_regs[1])
            for _ in range(dim_size)
        ]
        es = cma.CMAEvolutionStrategy(init_pos, 0.5)  # doctest: +ELLIPSIS
        while get_cnt() < budget:
            solutions = es.ask()
            es.tell(solutions,
                    [function_cmaes_dict[func_name](x) for x in solutions])
            es.logger.add()
        epoch_first_items(budget)
        append_all_epoch()
        sol = es.result_pretty()
        es.result_pretty()
    all_epoch = np.array(get_all_epoch())
    log_address = os.path.join(project_dir, 'pycma_exp/log/low_dim/')
    file_name = os.path.join(log_address,
                             '{}_{}.txt'.format(obj_name, dim_size))
    os.makedirs(log_address, exist_ok=True)
    np.savetxt(file_name, all_epoch)
    print(all_epoch.shape)
Example #6
0
def minimize(func_name):
    config = configparser.ConfigParser()
    config_name = os.path.join(project_dir, 'objective_function/config/scale.ini')
    config.read(config_name, encoding='utf-8')
    print(config.sections())

    optimal_position_address_dir = os.path.join(project_dir,  "objective_function/optimal_position")
    dim_list = eval(config.get(func_name, 'dim_list'))
    dim_regs = eval(config.get(func_name, 'dim_regs'))

    repeat = 20
    values = np.zeros((repeat, len(dim_list)))
    seed = 0
    random.seed(seed)
    np.random.seed(seed)
    for i in range(repeat):
        for j in range(len(dim_list)):
            dim_size = dim_list[j]
            optimal_position_address = os.path.join(optimal_position_address_dir, func_name, "{}_{}.txt".format(func_name, dim_size))
            budget = dim_size * 100
            set_optimal_position(optimal_position_address)
            init_pos = [np.random.uniform(dim_regs[0], dim_regs[1]) for _ in range(dim_size)]
            es = cma.CMAEvolutionStrategy(init_pos, 0.3)  # doctest: +ELLIPSIS
            while get_cnt() < budget:
                print(get_cnt())
                solutions = es.ask()
                es.tell(solutions, [function_cmaes_dict[func_name](x) for x in solutions])
                es.logger.add()
            clear_epoch()
            print("finist repeat: {}, dim: {}, best f: {}".format(i, dim_size, es.best.f))
            values[i, j] = es.best.f
    log_address = os.path.join(project_dir, 'pycma_exp/log/scale/')
    file_name = os.path.join(log_address, '{}_2.txt'.format(obj_name))
    os.makedirs(log_address, exist_ok=True)
    np.savetxt(file_name, values)
    print(values)
Example #7
0
    obj_name = args.objective

    config = configparser.ConfigParser()
    config_name = os.path.join(project_dir,
                               'objective_function/config/noisy.ini')
    config.read(config_name, encoding='utf-8')
    print(config.sections())

    optimal_position_address = os.path.join(
        project_dir, config.get(obj_name, 'optimal_position_address'))
    dim_size = config.getint(obj_name, 'dim_size')
    dim_regs = eval(config.get(obj_name, 'dim_regs'))
    budget = config.getint(obj_name, 'budget')

    repeat = 30
    set_optimal_position(optimal_position_address)
    seed = 0
    budget_list = np.arange(0, budget, budget / 10) + budget / 10
    random.seed(seed)
    np.random.seed(seed)
    real_value = np.zeros((repeat, budget_list.shape[0]))
    for i in range(repeat):
        for j in range(len(budget_list)):
            func = noisy_function_cmaes_dict[obj_name]
            if args.noise_handling is True:
                best_x = optimize_with_noise_handler(budget_list[j], func,
                                                     dim_regs, dim_size)
            else:
                best_x = optimize_without_noise_handler(
                    budget_list[j], func, dim_regs, dim_size)
            real_value[i][j] = base_function_dict[args.objective](best_x)
Example #8
0
def minimize(func_name):
    config = configparser.ConfigParser()
    config_name = os.path.join(project_dir,
                               'objective_function/config/low_dim.ini')
    config.read(config_name, encoding='utf-8')
    print(config.sections())

    optimal_position_address = os.path.join(
        project_dir, config.get(obj_name, 'optimal_position_address'))
    dim_size = config.getint(obj_name, 'dim_size')
    dim_regs = eval(config.get(obj_name, 'dim_regs'))
    budget = config.getint(obj_name, 'budget')
    set_optimal_position(optimal_position_address)

    repeat = 30
    seed = 0
    random.seed(seed)
    np.random.seed(seed)
    speed_lim = dim_regs[1] / 5

    creator.create("FitnessMin", base.Fitness, weights=(-1.0, ))
    creator.create("Particle",
                   list,
                   fitness=creator.FitnessMin,
                   speed=list,
                   smin=None,
                   smax=None,
                   best=None)
    toolbox = base.Toolbox()
    toolbox.register("particle",
                     generate,
                     size=dim_size,
                     pmin=dim_regs[0],
                     pmax=dim_regs[1],
                     smin=-speed_lim,
                     smax=speed_lim)
    toolbox.register("population", tools.initRepeat, list, toolbox.particle)
    toolbox.register("update", updateParticle, phi1=2.0, phi2=2.0)
    toolbox.register("evaluate", lambda x: (function_dict[func_name](x), ))
    for i in range(repeat):
        fmin = []
        population = 10
        pop = toolbox.population(n=population)

        best = None
        i = 0
        while get_cnt() < budget:
            for part in pop:
                part.fitness.values = toolbox.evaluate(part)
                if not part.best or part.best.fitness < part.fitness:
                    part.best = creator.Particle(part)
                    part.best.fitness.values = part.fitness.values
                if not best or best.fitness < part.fitness:
                    best = creator.Particle(part)
                    best.fitness.values = part.fitness.values
            for part in pop:
                toolbox.update(part, best)
        epoch_first_items(budget)
        append_all_epoch()
    all_epoch = np.array(get_all_epoch())
    log_address = os.path.join(project_dir, 'DEAP_exp/log/low_dim/')
    file_name = os.path.join(log_address,
                             '{}_{}.txt'.format(obj_name, dim_size))
    os.makedirs(log_address, exist_ok=True)
    np.savetxt(file_name, all_epoch)
    print(all_epoch.shape)