Changeset 1194 for framspy/evolalg/base/experiment_niching_abc.py
- Timestamp:
- 01/30/23 00:27:10 (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
framspy/evolalg/base/experiment_niching_abc.py
r1190 r1194 28 28 ExperimentABC.__init__(self,popsize=popsize, hof_size=hof_size, save_only_best=save_only_best) 29 29 self.fit = fit 30 self.normalize = normalize 30 31 self.knn_niching = knn_niching 31 32 self.knn_nslc = knn_nslc 32 self.normalize = normalize33 33 self.archive_size=archive_size 34 34 if popsize < self.knn_niching: … … 72 72 else: 73 73 raise Exception("Wrong fit type: ", self.fit, 74 f" chose correct one or implement new behavio ur")74 f" chose correct one or implement new behavior") 75 75 population_structures.update_archive(dissim_matrix, population_archive) 76 76 … … 98 98 99 99 def make_new_population_nsga2(self, population, prob_mut, prob_xov): 100 N = len(population)101 expected_ mut = int(N * prob_mut)102 expected_xov = int(N *prob_xov)100 expected_mut = int(self.popsize * prob_mut) 101 expected_xov = int(self.popsize * prob_xov) 102 assert expected_mut + expected_xov <= self.popsize, "If probabilities of mutation (%g) and crossover (%g) added together exceed 1.0, then the population would grow every generation..." % (prob_mut, prob_xov) 103 103 assignCrowdingDist(population) 104 offspring = tools.selTournamentDCD(population, N)104 offspring = tools.selTournamentDCD(population, self.popsize) 105 105 106 106 def addGenotypeIfValid(ind_list, genotype): 107 107 new_individual = Individual() 108 108 new_individual.set_and_evaluate(genotype, self.evaluate) 109 if new_individual.fitness is not BAD_FITNESS: # this is how we defined BAD_FITNESS in frams_evaluate()109 if new_individual.fitness is not BAD_FITNESS: 110 110 ind_list.append(new_individual) 111 111 112 112 counter = 0 113 113 114 def get_ind yvidual(pop, c):114 def get_individual(pop, c): 115 115 if c < len(pop): 116 116 ind = pop[c] … … 125 125 newpop = [] 126 126 while len(newpop) < expected_mut: 127 ind, counter = get_ind yvidual(offspring, counter)127 ind, counter = get_individual(offspring, counter) 128 128 addGenotypeIfValid(newpop, self.mutate(ind.genotype)) 129 129 130 130 # adding valid crossovers of selected individuals... 131 131 while len(newpop) < expected_mut + expected_xov: 132 ind1, counter = get_indyvidual(offspring, counter) 133 ind2, counter = get_indyvidual(offspring, counter) 134 addGenotypeIfValid(newpop, self.cross_over( 135 ind1.genotype, ind2.genotype)) 132 ind1, counter = get_individual(offspring, counter) 133 ind2, counter = get_individual(offspring, counter) 134 addGenotypeIfValid(newpop, self.cross_over(ind1.genotype, ind2.genotype)) 136 135 137 136 # select clones to fill up the new population until we reach the same size as the input population 138 137 while len(newpop) < len(population): 139 ind, counter = get_ind yvidual(offspring, counter)138 ind, counter = get_individual(offspring, counter) 140 139 newpop.append(Individual().copyFrom(ind)) 141 140 … … 194 193 help="What normalization use for dissimilarity matrix, max (default}, sum and none") 195 194 parser.add_argument("-knn",type= int, default= 0, 196 help="Nearest neighbo urs parameter for local novelty/niching, if knn==0 global is performed.Default:0")195 help="Nearest neighbors parameter for local novelty/niching, if knn==0 global is performed.Default:0") 197 196 return parser 198 197
Note: See TracChangeset
for help on using the changeset viewer.