Example #1
0
class Population:
	def __init__(self):
		self.artist = Artist(Population.imageFitnessFunction)

	def evolve(self):
		oldFitness = self.artist.fitness
		self.mutationCommands = self.artist.mutate()
		[m.execute() for m in self.mutationCommands]
		if self.artist.fitness > oldFitness:
			return False
		return True

	def unevolve(self):
		if self.mutationCommands:
			[c.undo() for c in self.mutationCommands] 

	def bestArtist(self):
		return self.artist
	
	@staticmethod
	def imageFitnessFunction(image):
		return ImageTools.compareToArray(image, precachedTarget)
Example #2
0
class Population:
    def __init__(self):
        self.artist = Artist(Population.imageFitnessFunction)

    def evolve(self):
        oldFitness = self.artist.fitness
        self.mutationCommands = self.artist.mutate()
        [m.execute() for m in self.mutationCommands]
        if self.artist.fitness > oldFitness:
            return False
        return True

    def unevolve(self):
        if self.mutationCommands:
            [c.undo() for c in self.mutationCommands]

    def bestArtist(self):
        return self.artist

    @staticmethod
    def imageFitnessFunction(image):
        return ImageTools.compareToArray(image, precachedTarget)
    population = int(args['population'])
    input_path = args['file']

    img = Image.open(input_path)
    if args["width"] != None:
        img = setSize(int(args["width"]), img)
    size = img.size

    artist = Artist(None, 50, size)
    parent_img = artist.draw(size, (0, 0, 0, 255))
    artist.getFittness(parent_img, img)

    while (1):
        child_artist = Artist(artist.DNA, 50, size)
        child_artist.DNA = child_artist.mutate()
        child_img = child_artist.draw(size, (0, 0, 0, 255))
        child_artist.getFittness(child_img, img)
        artists.append(child_artist)

        for child_artist in artists:
            if child_artist.fittness < artist.fittness:
                artist = child_artist

        if generation % 50 == 0:
            print "[+] Generation: {}".format(generation)
            print "[+] Fittness: {}".format(artist.fittness)
            artist.draw(size, (0, 0, 0, 255),
                        save=True,
                        save_path=output_path,
                        name=str(generation))