示例#1
0
文件: Brain.py 项目: Denakee/SnakeAI
 def readGenes(self, numInputs):
     # should create all of its neurons based on its genes
     for i in range(TweakingVariables.outputCount):  # create output neurons
         self.neurons.append(Neuron.Neuron())
         self.mapOutputToNeuron(i, self.neurons[-1])
         self.neurons[-1].type = -1
     for gene in self.genes:  # first create all of them!
         self.neurons.append(Neuron.Neuron())
         self.neurons[-1].type = int(gene.getSequence()[:1])
     for gene in self.genes:  # now connect them
         neuronWorkingOn = self.neurons[TweakingVariables.outputCount + self.genes.index(gene)]
         for codon in gene.getSequence()[1:]:
             if TweakingVariables.convertLetterToNum(
                 codon
             ) != 0 and TweakingVariables.outputCount + numInputs + TweakingVariables.convertLetterToNum(
                 codon
             ) - 1 < len(
                 self.neurons
             ):
                 neuronWorkingOn.addChild(
                     self.neurons[
                         TweakingVariables.outputCount + numInputs + TweakingVariables.convertLetterToNum(codon) - 1
                     ]
                 )
             elif (
                 TweakingVariables.convertLetterToNum(codon) != 0
                 and TweakingVariables.convertLetterToNum(codon) < TweakingVariables.pureRange2
             ):
                 # not enough genes were supplied in creation, need to fix this
                 self.genes.append(Gene.Gene("1000"))
                 # create defaut gene
                 self.neurons.append(Neuron.Neuron())
                 self.neurons[-1].type = int(self.genes[-1].getSequence()[:1])
             elif TweakingVariables.convertLetterToNum(codon) != 0:
                 neuronWorkingOn.addChild(self.neurons[int(codon) - (TweakingVariables.pureRange2)])
示例#2
0
文件: Gene.py 项目: Denakee/SnakeAI
 def randomMutation(number):
     if number == 0:  # determines the type of neuron
         return str(1 + random.randint(0, TweakingVariables.range1 - 1))
     # determines where the neuron leads
     temp = random.randint(0, TweakingVariables.range2 - 1)
     return str(TweakingVariables.convertNumToLetter(temp))