def eval_ga(row, arguments, fit_val): start=time.time() args=arguments path_old = row[2] xpath_old = row[4] path_new = row[3] xpath_new = row[5] fit_val_temp=fit_val # *, tag, position, class, id ga = GA( pop_size=args.p, eval_lim=args.f, mut_rate=args.r, mut_k=args.k, crossover_rate=args.c, tournament_k=args.t, use_elitism=args.e, use_lin_ranking=args.l, dom_filepath=path_old.strip(), xpath=xpath_old, fitness_values=fit_val_temp, verbose=args.s ) ga.select_parents() ga.evolve() xpath_robust = ga.optimum.xpath xpath_fitness = ga.optimum.fitness end=time.time() # print("{} seconds elapsed.".format(round(end-start,2))) return xpath_robust, xpath_fitness
def ga_p(city_list): cfg = GACfg(gene_len=25, gene_size=25, pop_size=1000, elite_size=50, tournament_num=50, tournament_size=100, mutation_rate=0.03, repeatable=False) ga = GA(fitness_func, cfg) ga.prepare_kwargs(city_list=city_list) ga.init_population() progress = [] progress.append(1 / ga.cal_fitness()[0][1]) for _ in range(100): early_stop = ga.evolve() progress.append(1 / ga.cal_fitness()[0][1]) if early_stop: break print("Final distance: " + str(1 / ga.cal_fitness()[0][1])) plt.plot(progress) plt.ylabel('Distance') plt.xlabel('Generation') plt.show()
from ga import GA import random arr = [[(-1 if random.randint(0, 1) == 0 else 1) for i in range(30)] for i in range(100)] data = [] for row in arr : decision = -1 if random.randint(0, 1) == 0 else 1 row[0] = decision data.append( (True if decision==1 else False, row) ) print(data) ###### host = GA(data=data, poolSize=10) best = host.evolve(stableFactor=100, breedRate=0.3, mutateRate=0.2, mutationDegree=0.05, mutationComplexity=0.3) print(best)
file = row[0] xpath = row[1] result.append(file) result.append(xpath) for fit_val in fit_vals: ga = GA( pop_size=args.p, eval_lim=args.f, mut_rate=args.r, mut_k=args.k, crossover_rate=args.c, tournament_k=args.t, use_elitism=args.e, use_lin_ranking=args.l, dom_filepath=file, xpath=xpath, fitness_values=fit_val, verbose=args.s ) ga.select_parents() ga.evolve() result.append(ga.optimum.xpath) results.append(result) with open("results.csv", "w", newline='') as csvfile: writer = csv.writer(csvfile) for row in results: writer.writerow(row)