Пример #1
0
    def linkMutate(self, forceBias):
        neuron1 = self.randomNeuron(False)
        neuron2 = self.randomNeuron(True)

        newLink = Gene()
        if neuron1 <= Inputs and neuron2 <= Inputs:
            #Both input nodes
            return

        if neuron2 <= Inputs:
            # Swap output and input
            temp = neuron1
            neuron1 = neuron2
            neuron2 = temp

        newLink.into = neuron1
        newLink.out = neuron2
        if forceBias:
            newLink.into = Inputs

        if self.contains_link(newLink):
            return

        newLink.innovation = self.pool.new_innovation()
        newLink.weight = random.random() * 4 - 2

        self.genes.append(newLink)
Пример #2
0
    def loadFile(self, filename, env):
        file = open(filename, "r")
        self.__init__(env)
        self.generation = int(file.readline().replace("\n", ""))
        self.maxFitness = int(file.readline().replace("\n", ""))
        #gui.settext(5, 8, maxFitnessLabel, "Max Fitness. " .. math.floor(pool.maxFitness))
        numSpecies = int(file.readline().replace("\n", ""))
        for s in range(0, numSpecies):
            species = Species()
            self.species.append(species)
            species.topFitness = float(file.readline().replace("\n", ""))
            species.staleness = int(file.readline().replace("\n", ""))
            numGenomes = int(file.readline().replace("\n", ""))
            for g in range(0, numGenomes):
                genome = Genome(self)
                species.genomes.append(genome)
                genome.fitness = float(file.readline().replace("\n", ""))
                genome.maxneuron = int(file.readline().replace("\n", ""))
                line = file.readline().replace("\n", "")
                while line != "done":
                    genome.mutationRates[line] = float(file.readline().replace(
                        "\n", ""))
                    line = file.readline().replace("\n", "")
                numGenes = int(file.readline().replace("\n", ""))
                for n in range(0, numGenes):
                    gene = Gene()
                    genome.genes.append(gene)
                    enabled = 0
                    line = file.readline()
                    data = []
                    for x in [x for i, x in enumerate(line.split(" "))]:
                        try:
                            data.append(int(x))
                        except ValueError:
                            data.append(float(x))
                    gene.into, gene.out, gene.weight, gene.innovation, enabled = data

                    gene.enabled = enabled == 1
        file.close()

        while self.fitnessAlreadyMeasured():
            self.nextGenome()
        self.initializeRun()
        self.currentFrame = self.currentFrame + 1