def __init__(self, chromosome, maxNIndividuals, valueInitializer=Randomization(-0.1,0.1), **kwargs): """ @param chromosome: The prototype chromosome @param maxNIndividuals: The maximum allowed number of individuals """ SimplePopulation.__init__(self) self._prototype = EvolinoSubIndividual(chromosome) self._maxNIndividuals = maxNIndividuals self._valueInitializer = valueInitializer self.setArgs(**kwargs) for _ in range(maxNIndividuals): self.addIndividual(self._prototype.copy()) self._valueInitializer.apply(self)
class EvolinoSubPopulation(SimplePopulation): """ The class for Evolino subpopulations. Mostly the same as SimplePopulation but with a few extensions. It contains a set of EvolinoSubIndividuals. On initialization, a prototype individual is created from the prototype chromosome. This individual is then cloned and added so that the population exists of maxNIndividuals individuals. The genomes of these clones are then randomized by the Randomization operator. """ def __init__(self, chromosome, maxNIndividuals, valueInitializer=Randomization(-0.1, 0.1), **kwargs): """ :key chromosome: The prototype chromosome :key maxNIndividuals: The maximum allowed number of individuals """ SimplePopulation.__init__(self) self._prototype = EvolinoSubIndividual(chromosome) self._maxNIndividuals = maxNIndividuals self._valueInitializer = valueInitializer self.setArgs(**kwargs) for _ in range(maxNIndividuals): self.addIndividual(self._prototype.copy()) self._valueInitializer.apply(self) def setArgs(self, **kwargs): for key, val in kwargs.iteritems(): getattr(self, key) setattr(self, key, val) def getMaxNIndividuals(self): """ Returns the maximum allowed number of individuals """ return self._maxNIndividuals def addIndividualFitness(self, individual, fitness): """ Add fitness to the individual's fitness value. :key fitness: a float value denoting the fitness """ self._fitness[individual] += fitness
class EvolinoSubPopulation(SimplePopulation): """ The class for Evolino subpopulations. Mostly the same as SimplePopulation but with a few extensions. It contains a set of EvolinoSubIndividuals. On initialization, a prototype individual is created from the prototype chromosome. This individual is then cloned and added so that the population exists of maxNIndividuals individuals. The genomes of these clones are then randomized by the Randomization operator. """ def __init__(self, chromosome, maxNIndividuals, valueInitializer=Randomization(-0.1,0.1), **kwargs): """ @param chromosome: The prototype chromosome @param maxNIndividuals: The maximum allowed number of individuals """ SimplePopulation.__init__(self) self._prototype = EvolinoSubIndividual(chromosome) self._maxNIndividuals = maxNIndividuals self._valueInitializer = valueInitializer self.setArgs(**kwargs) for _ in range(maxNIndividuals): self.addIndividual(self._prototype.copy()) self._valueInitializer.apply(self) def setArgs(self, **kwargs): for key, val in kwargs.iteritems(): getattr(self, key) setattr(self, key, val) def getMaxNIndividuals(self): """ Returns the maximum allowed number of individuals """ return self._maxNIndividuals def addIndividualFitness(self, individual, fitness): """ Add fitness to the individual's fitness value. @param fitness: a float value denoting the fitness """ self._fitness[individual] += fitness
def __init__(self, chromosome, maxNIndividuals, valueInitializer=Randomization(-0.1, 0.1), **kwargs): """ :key chromosome: The prototype chromosome :key maxNIndividuals: The maximum allowed number of individuals """ SimplePopulation.__init__(self) self._prototype = EvolinoSubIndividual(chromosome) self._maxNIndividuals = maxNIndividuals self._valueInitializer = valueInitializer self.setArgs(**kwargs) for _ in range(maxNIndividuals): self.addIndividual(self._prototype.copy()) self._valueInitializer.apply(self)