def create_offspring(self): self.fitnessroulette_ini() self.F1.advance_generation() for fdude in self.F1: if self.selec == 'expon': pa=parentselect_exp(self.m,7.) pb=parentselect_exp(self.m,7.) elif self.selec=='roulette': pa,pb=self.fitnessroulette() if pb==pa: pb=randint(self.m-1) if pb>=pa: pb+=1 elif self.selec=='elite': pa,pb=randint(self.m,size=2) if pb==pa: pb=randint(self.m-1) if pb>=pa: pb+=1 else: raise NotImplementedError("in terms of parent selection the options are 'roulette', 'expon', 'elite'") if pa>pb: pa,pb=pb,pa if self.CO=='uniform': fdude.CO_from(self.F0[pa],self.F0[pb]) fdude.ancestcode=0.9 elif self.CO=='BLXa': fdude.BLX_alpha(self.F0[pa],self.F0[pb],self.alpha) fdude.ancestcode=0.11 elif self.CO=='BLXab': fdude.BLX_alpha_beta(self.F0[pa],self.F0[pb],self.alpha,self.beta) fdude.ancestcode=0.19 elif self.CO=='WHX': fdude.WHX(self.F0[pa],self.F0[pb],self.alpha) fdude.ancestcode=0.45 else: raise NotImplementedError("in terms of CO the options are 'uniform', 'BLXa', 'BLXab', 'WHX'") fdude.mutate(self.Pm,self.mstep)
def create_offspring(self): self.F1.advance_generation() self.F0.reset_event_counters() for i, dude in enumerate(self.F1): oldguy = self.F0[i] if i < self.elite_size: dude.copy_DNA_of(oldguy, copyscore=True) dude.ancestcode = 0.18 # blue-purple for conserved dudes elif rand() < self.saga_ratio: self.F0.sa_events += 1 dude.copy_DNA_of(oldguy) dude.mutate(self.sa_mprob, sd=self.sa_mstep) dude.evaluate() if dude.isbetter(oldguy): self.F0.sa_improved += 1 dude.ancestcode = 0.49 # turquoise for improvement through mutation elif rand() < exp( -np.fabs(dude.score - oldguy.score) / self.sa_T ): # use of fabs makes it neutral to whatever self.F0.whatisfit self.F0.sa_tolerated += 1 dude.ancestcode = 0.25 # yellow/beige for tolerated dude else: dude.ancestcode = 0.18 # blue-purple for conserved dudes dude.copy_DNA_of(oldguy, copyscore=True) # preferring parent DNA else: self.F0.ga_events += 1 pa, pb = parentselect_exp(self.F0.psize, self.ga_selp, size=2) dude.CO_from(self.F0[pa], self.F0[pb]) dude.evaluate() dude.ancestcode = 0.39 # white for CO dude # possible changes: accept CO dude only after SA criterion else take better parent (and mutate?) if dude.isbetter(self.F0[pa]) and dude.isbetter(self.F0[pb]): self.F0.ga_improved += 1 self.F0.calculate_event_rates() self.F0.neval += self.F0.psize - self.elite_size # manually updating counter of calls to the objective function
def create_offspring(self): self.fitnessroulette_ini() self.F1.advance_generation() for fdude in self.F1: if self.selec == 'expon': pa = parentselect_exp(self.m, 7.) pb = parentselect_exp(self.m, 7.) elif self.selec == 'roulette': pa, pb = self.fitnessroulette() if pb == pa: pb = randint(self.m - 1) if pb >= pa: pb += 1 elif self.selec == 'elite': pa, pb = randint(self.m, size=2) if pb == pa: pb = randint(self.m - 1) if pb >= pa: pb += 1 else: raise NotImplementedError( "in terms of parent selection the options are 'roulette', 'expon', 'elite'" ) if pa > pb: pa, pb = pb, pa if self.CO == 'uniform': fdude.CO_from(self.F0[pa], self.F0[pb]) fdude.ancestcode = 0.9 elif self.CO == 'BLXa': fdude.BLX_alpha(self.F0[pa], self.F0[pb], self.alpha) fdude.ancestcode = 0.11 elif self.CO == 'BLXab': fdude.BLX_alpha_beta(self.F0[pa], self.F0[pb], self.alpha, self.beta) fdude.ancestcode = 0.19 elif self.CO == 'WHX': fdude.WHX(self.F0[pa], self.F0[pb], self.alpha) fdude.ancestcode = 0.45 else: raise NotImplementedError( "in terms of CO the options are 'uniform', 'BLXa', 'BLXab', 'WHX'" ) fdude.mutate(self.Pm, self.mstep)