def test_bits2ints(self): self.assertEquals([19, 25], helper.bits2ints([5, 5], [1, 0, 0, 1, 1, 1, 1, 0, 0, 1])) self.assertEquals([2, 0, 7, 9], helper.bits2ints([2, 1, 3, 4], [1, 0, 0, 1, 1, 1, 1, 0, 0, 1])) self.assertRaises(AssertionError, helper.bits2ints, [5, 5], [1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1]) self.assertRaises(AssertionError, helper.bits2ints, [5, 7], [1, 0, 0, 1, 1, 1, 1, 0, 0, 1]) self.assertRaises(AssertionError, helper.bits2ints, [5, 5], [1])
def genes2args(self,genes):#将基因串转化为参数值,因为一个参数对应的表示空间是2的幂,因此可能出现2个基因串对因一个参数值 ints = helper.bits2ints(self.bitgroups,genes) #print [len(pool) for pool in self.argpool],ints #print len(ints) args = [] for i in xrange(len(ints)): curv = ints[i] % len(self.argpool[i]) #对应候选pool中的位置,可能在两个位置,如11个数据分布在2**4中,则3和14都对应第四个数据 #print i,len(self.argpool[i]),ints[i],curv args.append(self.argpool[i][curv]) #print 'ints:%s,args:%s' % (ints,args) return args
def genes2args(self, genes): #将基因串转化为参数值,因为一个参数对应的表示空间是2的幂,因此可能出现2个基因串对因一个参数值 ints = helper.bits2ints(self.bitgroups, genes) #print [len(pool) for pool in self.argpool],ints #print len(ints) args = [] for i in xrange(len(ints)): curv = ints[i] % len( self.argpool[i] ) #对应候选pool中的位置,可能在两个位置,如11个数据分布在2**4中,则3和14都对应第四个数据 #print i,len(self.argpool[i]),ints[i],curv args.append(self.argpool[i][curv]) #print 'ints:%s,args:%s' % (ints,args) return args