def __init__(self, genes=None, x=0.0, y=0.0, predator=False): R = funcs.gene2color(genes[-1]) G = funcs.gene2color(genes[-2]) B = funcs.gene2color(genes[-3]) if predator: R, G, B = 0.9, 0.1, 0.1 super(Creature, self).__init__([x, y], radius_multiplier=0.5, color=(R, G, B), energy=Creature.health) self.predator = predator self.cod = None self.rotation = random.random() self.speed = 0.0 self.num_detections = 1 self.distance = 0.0 self.rotated = 0.0 self.consumed_energy = 1 self.life_length = 1 self.antennae_length = self.radius_multiplier * self.G_MAXIMUM_RADIUS * 5 self.brain = eval(Creature.brain_type)(genes)
def __init__(self, genes=None, x=0.0, y=0.0, predator=False): R = funcs.gene2color(genes[-1]) G = funcs.gene2color(genes[-2]) B = funcs.gene2color(genes[-3]) if predator: R,G,B = 0.9, 0.1, 0.1 super(Creature, self).__init__([x,y], radius_multiplier=0.5, color=(R,G,B), energy=Creature.health) self.predator = predator self.cod = None self.rotation = random.random() self.speed = 0.0 self.num_detections = 1 self.distance = 0.0 self.rotated = 0.0 self.consumed_energy = 1 self.life_length = 1 self.antennae_length = self.radius_multiplier * self.G_MAXIMUM_RADIUS * 5 self.brain = eval(Creature.brain_type)(genes)
def printStatsCreatures(self,pop,gen,dba,dbb,dbp): fits = [ind.fitness.values[0] for ind in pop] mean = sum(fits) / len(pop) reds = [funcs.gene2color(genome[-1]) for genome in pop] greens = [funcs.gene2color(genome[-2]) for genome in pop] blues = [funcs.gene2color(genome[-3]) for genome in pop] stats.add("creature_fitness.avg",mean) stats.add("creature_fitness.min",min(fits)) stats.add("creature_fitness.max",max(fits)) stats.add("creature.death_by_bush_procent",dbb*1.0/(dbb+dba+dbp)) stats.add("creature.death_by_predator_procent",dbp*1.0/(dbb+dba+dbp)) stats.add("creature_color.red", sum(reds)/len(reds)) stats.add("creature_color.blue", sum(blues)/len(blues)) stats.add("creature_color.green", sum(greens)/len(greens)) return ("(%3i): Max: %6.2f, Avg: %6.2f, Min: %5.2f, DBBP: %.2f" % (gen, max(fits), mean, min(fits),dbb*1.0/(dbb+dbp+dba)))
def printStatsCreatures(self, pop, gen, dba, dbb, dbp): fits = [ind.fitness.values[0] for ind in pop] mean = sum(fits) / len(pop) reds = [funcs.gene2color(genome[-1]) for genome in pop] greens = [funcs.gene2color(genome[-2]) for genome in pop] blues = [funcs.gene2color(genome[-3]) for genome in pop] stats.add("creature_fitness.avg", mean) stats.add("creature_fitness.min", min(fits)) stats.add("creature_fitness.max", max(fits)) stats.add("creature.death_by_bush_procent", dbb * 1.0 / (dbb + dba + dbp)) stats.add("creature.death_by_predator_procent", dbp * 1.0 / (dbb + dba + dbp)) stats.add("creature_color.red", sum(reds) / len(reds)) stats.add("creature_color.blue", sum(blues) / len(blues)) stats.add("creature_color.green", sum(greens) / len(greens)) return ("(%3i): Max: %6.2f, Avg: %6.2f, Min: %5.2f, DBBP: %.2f" % (gen, max(fits), mean, min(fits), dbb * 1.0 / (dbb + dbp + dba)))