from functions import genesis from functions import ras_calc from functions import fitness from functions import mate from agent import agent #Global Variables g = 0 #instantaenous generation count target_ras = 0 #global minima for convergence criteria max_gen = 50 #generation for exit criteria size = 100 #population size mut_prob = 0.1 #overall mutation probability fittest = [] #generation 0 population = genesis(size) population = ras_calc(population) while g <= max_gen: #exit criteria #evaluation parents = fitness(population) fittest.append(parents[0]) ras_fittest = parents[0].ras # convergence criteria if ras_fittest <= target_ras: break #generation update (crossover,mutation,etc) g += 1
from functions import genesis from functions import write_block, change_block import os from_who = 'ivan' to_whom = 'petr' amount = 1002 def create_dir(num): if not os.path.exists('{}'.format(num)): os.makedirs('{}'.format(num)) return ('Done!') #write_block(from_who,to_whom,amount) genesis() #create_dir(2)
def GA_FineMut(ind_op, gen_op, mut_prob_op, n_runs, n_genes_op): config_perf_FineMut = { 'Config #': [], 'Mut_Prob': [], 'Fit_Ave_Fit': [], 'Ave_Ave_Fit': [], 'Weak_Ave_Fit': [], } raw_data_FineMut = {} #Test config modelling mut_configs = np.linspace(mut_prob_op - 0.05, mut_prob_op, 11) counter = 0 for m_config in mut_configs: counter += 1 raw_data_FineMut[f"Config # {counter}"] = [] #config status print(f"Config # {counter}") config_perf_FineMut['Config #'].append(counter) config_perf_FineMut['Mut_Prob'].append(m_config) #intermediary Data Storage Lists percent_improvement = [] ave_cost_fittest_g = [] ave_cost_fittest_run = [] stdv_g1 = [] stdv_gEnd = [] ch_stdv = [] run = 0 while run < n_runs: #iterator run += 1 #GA Parameters gen = 1 target_cost = 0 max_gen = gen_op size = ind_op mut_prob = m_config mut_type = 'n_gene' #mutation type - all,gene,motor n_genes = n_genes_op fittest = [] search_limit = 5000 #Simulation Parameters dt = 5e-4 tsteps = 100 #Generation 0 population = genesis(size) #population = response(population,dt,tsteps) #population = cost_calc(gen,population) population = rastrigin(population) cost_g1_s = [] for agent in population: cost_g1_s.append(agent.ras) #storage for plotting cost_fittest_g = [] gen_s = [] #GA loop while gen <= max_gen: gen_s.append(gen) #parents = fitness(population) parents = fitness_ras(population) fittest.append(parents[0]) for item in range(3): random.shuffle(parents) #cost_fittest = parents[0].j_fluc cost_fittest = parents[0].ras #cost_fittest_g.append(parents[0].j_fluc) cost_fittest_g.append(cost_fittest) if cost_fittest <= target_cost: break gen += 1 #children = mate(parents, mut_prob, mut_type, gen, max_gen, search_limit,n_genes) children = mate_ras(parents, mut_prob, mut_type, gen, max_gen, search_limit, n_genes) if children == None: break #children = response(children,dt,tsteps) #children = cost_calc(gen,children) children = rastrigin(children) parents.extend(children) population = parents # final stats: '''print(f'Defined Parameters:') print(f' Target Objective Value: {target_cost}') print(f' Maximum Generation Count: {max_gen}') print(f' Population Size: {size}') print(f' Mutation Probability: {mut_prob*100} %') print('') if gen < max_gen: print(f'Premature search stop at generation {gen}') else: print(f'Search completed for defined generations') #minimization = fittest[0].j_fluc - fittest[-1].j_fluc minimization = fittest[0].ras - fittest[-1].ras #percent_improvement = (minimization/fittest[0].j_fluc)*100 percent_improvement = abs((minimization/fittest[0].ras)*100) print(f'GA minimized: {minimization}') print(f'Percent Improvement: {percent_improvement} %') #print(f'Best objective value: {fittest[-1].j_fluc}') print(f'Best objective value: {fittest[-1].ras}') print(f'With genes: {fittest[-1].genes}')''' cost_fittest_run = [] raw_data_FineMut[f"Config # {counter}"].append(fittest[-1].ras) cost_fittest_run.append(fittest[-1].ras) cost_gEnd_s = [] for agent in population: cost_gEnd_s.append(agent.ras) #Intermediary Performance Data percent_improvement.append( abs(((fittest[0].ras - fittest[-1].ras) / fittest[0].ras) * 100)) ave_cost_fittest_g.append(stat.mean(cost_fittest_g)) ave_cost_fittest_run.append(stat.mean(cost_fittest_run)) stdv_g1.append(stat.pstdev(cost_g1_s)) stdv_gEnd.append(stat.pstdev(cost_gEnd_s)) ch_stdv.append( abs((stat.pstdev(cost_gEnd_s) - stat.pstdev(cost_g1_s)) / stat.pstdev(cost_g1_s))) #Final Performance Data #config_perf['Min_%Imp'].append(min(percent_improvement)) #config_perf['Ave_%Imp'].append(stat.mean(percent_improvement)) #config_perf['Max_%Imp'].append(max(percent_improvement)) config_perf_FineMut['Fit_Ave_Fit'].append(min(ave_cost_fittest_run)) config_perf_FineMut['Ave_Ave_Fit'].append( stat.mean(ave_cost_fittest_run)) config_perf_FineMut['Weak_Ave_Fit'].append(max(ave_cost_fittest_run)) #config_perf['Min_StDv_g1'].append(min(stdv_g1)) #config_perf['Ave_StDv_g1'].append(stat.mean(stdv_g1)) #config_perf['Max_StDv_g1'].append(max(stdv_g1)) #config_perf['Min_StDv_gEnd'].append(min(stdv_gEnd)) #config_perf['Ave_StDv_gEnd'].append(stat.mean(stdv_gEnd)) #config_perf['Max_StDv_gEnd'].append(max(stdv_gEnd)) #config_perf['Min_%Ch_StDv'].append(min(ch_stdv)) #config_perf['Ave_%Ch_StDv'].append(stat.mean(ch_stdv)) #config_perf['Max_%Ch_StDv'].append(max(ch_stdv)) return config_perf_FineMut, raw_data_FineMut