def write_data(generation, population, out_data, csv_name): # get the fitness data set data_set = [] for i in population: data_set.append(i.fitness) # calculate population fitness data fittest = max(data_set) unfittest = min(data_set) average = int(sum(data_set) / len(population)) # debug print population fitness data if out_data is True: print("GENERATION " + str(generation)) # # find fittest memeber of population # fittest = population[0] # for p in population: # if fittest.fitness < p.fitness: # fittest = p # # print fittest member's rules # for r in range(R_count): # print(str(fittest.rules[r])) # print population stats print("Fittest:\t" + str(fittest)) print("Average:\t" + str(average)) print("Unfittest:\t" + str(unfittest)) print("-------------------------") # write population fitness data to csv if csv_name is not None: GA_csv.write(csv_name, [generation, fittest, average, unfittest])
def main(): # run algorithm & write results to csv for s in range(SAMPLE_SIZE): GA.main(SAMPLE_NAME + str(s)) # init averages samples csv file GA_csv.init(SAMPLE_NAME) # create averaged results csv from samples average_samples() # cleanup sample files for s in range(SAMPLE_SIZE): os.remove(SAMPLE_NAME + str(s) + '.csv')
def average_samples(): # get all csv data for each sample rows = [] for s in range(SAMPLE_SIZE): rows.append(GA_csv.get_rows(SAMPLE_NAME+str(s))) # average out & write data to csv for r in range(1, len(rows[0])-1): # get averaged data in row r fittest = 0 average = 0 unfittest = 0 for s in range(SAMPLE_SIZE): fittest += int(rows[s][r][1]) average += int(rows[s][r][2]) unfittest += int(rows[s][r][3]) fittest = int(fittest / SAMPLE_SIZE) average = int(average / SAMPLE_SIZE) unfittest = int(unfittest / SAMPLE_SIZE) GA_csv.write(SAMPLE_NAME, [r, fittest, average, unfittest])
def write_data(generation, population): # get the fitness data set data_set = [] for i in population: data_set.append(i.fitness) # calculate population fitness data fittest = max(data_set) unfittest = min(data_set) average = int(sum(data_set) / len(population)) # debug print population fitness data if OUT_DATA is True: print("GENERATION " + str(generation)) print("Fittest:\t" + str(fittest)) print("Average:\t" + str(average)) print("Unfittest:\t" + str(unfittest)) print("-------------------------") # write population fitness data to csv if CSV_NAME is not None: GA_csv.write(CSV_NAME, [generation, fittest, average, unfittest])
def main(argv=''): global CSV_NAME if argv != '': CSV_NAME = argv GA_csv.init(CSV_NAME) run(generation_limit, P_size, G_size, C_rate, M_rate)
if new_population[p].fitness < new_population[n_worst].fitness: n_worst = p # replace least fit in new_population with fittest in new_population for p in range(len(old_population)): if p == n_worst and old_population[o_best].fitness > new_population[n_worst].fitness: genome = old_population[o_best].genome else: genome = new_population[p].genome survivors.append(Solution(genome)) return survivors # =========== # entry point # =========== if __name__ == '__main__': if (len(sys.argv) >= 2): CSV_NAME = sys.argv[1] GA_csv.init(CSV_NAME) run(generation_limit, P_size, G_size, C_rate, M_rate) def main(argv=''): global CSV_NAME if argv != '': CSV_NAME = argv GA_csv.init(CSV_NAME) run(generation_limit, P_size, G_size, C_rate, M_rate)