コード例 #1
0
 def loop(self):
     self.cntGenes=0
     self.menu={}
     for s in self.species:
         self.cntGenes+=len(s.genes)
         self.menu[s.num]=[]
         for g in s.genes:
             self.menu[s.num].append(g.num)
     self.showInfo()
     sumfitness=0.0
     newspecies=[]
     newgenes = []
     for s in self.species:
         s.breed()
         for n in s.newSpecies():
             newspecies.append(n)
     for n in newspecies:
         self.species.append(Specie(members=[n],appearTime=self.generation))
     for s in self.species:
         for n in s.newGenes():
             newgenes.append(n)
     while len(newgenes):
         n=newgenes[0]
         for s in self.species:
             for o in s.genes:
                 if o not in newgenes:
                     self.adjustFitness(new=n,old=o)
         del newgenes[0]
     for s in self.species:
         s.sort()
         s.recountFitness()
         sumfitness+=s.fitness
     # sumfitness/=len(self.species)
     self.resource+=RESOURCE
     dieList=[]
     i=0
     while i <len(self.species):
         s=self.species[i]
         r=self.resource*(s.fitness)/sumfitness
         print '[%d] get resource:%d'%(s.num,r)
         for d in s.distribute(resource=r):
             dieList.append(d)
         if not len(s.genes):
             print 'The specie [%d] has died out.'%s.num
             del self.species[i]
             continue
         i+=1
     self.resource=0.0
     while len(dieList):
         # self.resource+=self.happyCorner(unlucky=dieList[0])
         self.happyCorner(unlucky=dieList[0])
         del dieList[0]
     saveCurrent(self.packCurrent())
     self.generation+=1
コード例 #2
0
def init():
    drop()
    print'Initializing...'
    str=GeneStructure(gsNew=-1,fromDB=1,num=0)
    g=Gene(structure=str,weights=[],thresholds=[],num=0)
    for i in range (0,SIZE_SENSOR+SIZE_OUTPUT+1):
        str.appendNeuron()
        g.thresholds.append(random.uniform(-0.5,0.5))
    for i in range(0,SIZE_SENSOR):
        str.appendSynapse(origin=i,terminus=SIZE_SENSOR+SIZE_OUTPUT)
        g.weights.append(random.uniform(-2,2))
        str.appendSynapse(origin=SIZE_SENSOR+SIZE_OUTPUT,terminus=i+SIZE_SENSOR)
        g.weights.append(random.uniform(-2,2))
    save.saveStruct(str.pack())
    g.set()
    sp1=Specie(members=[g],appearTime=0)
    nature=Nature(species=[sp1],generation=0,restResource=0)
    save.saveCurrent(nature.packCurrent())
    print'Initializing has been done.'