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)
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])
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)
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)
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)
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)
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)
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)