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)])
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))