def args2genes(self,args):#将参数值转化为基因串 #print args,self.bitgroups assert len(args) == len(self.bitgroups) genes = [] items = sorted(args.items()) for i in xrange(len(items)): #print self.argpool[i],items[i],items[i][0],items[i][1] pos = locate(self.argpool[i],items[i][1]) #必然可以找到 #print 'bitgroups[i]/pos',self.bitgroups[i],pos genes.extend(helper.int2bits(pos,self.bitgroups[i])) #print items,',genes2args:',self.genes2args(genes) #print genes return genes
def args2genes(self, args): #将参数值转化为基因串 #print args,self.bitgroups assert len(args) == len(self.bitgroups) genes = [] items = sorted(args.items()) for i in xrange(len(items)): #print self.argpool[i],items[i],items[i][0],items[i][1] pos = locate(self.argpool[i], items[i][1]) #必然可以找到 #print 'bitgroups[i]/pos',self.bitgroups[i],pos genes.extend(helper.int2bits(pos, self.bitgroups[i])) #print items,',genes2args:',self.genes2args(genes) #print genes return genes
def lastStoneWeight(self, stones): """ :type stones: List[int] :rtype: int """ # while len(stones) > 1: # stones.sort() # stones.reverse() # stones[0], stones[1] = stones[0]-stones[1], 0 # stones.pop(1) # if stones[0] == 0: # return(0) # else: # return(stones[0]) stones.sort() while len(stones) > 1: stone_1, stone_2 = stones.pop(), stones.pop() if stone_1 != stone_2: stone_rest = stone_1 - stone_2 stones.insert(locate(stones, stone_rest), stone_rest) return stones[0] if len(stones) > 0 else 0
def roulette(sums): v = random.randint(0, sums[-1]) return locate(sums, v)