Exemple #1
0
 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)
Exemple #2
0
 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
Exemple #3
0
 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)
Exemple #4
0
 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