Пример #1
0
 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])
Пример #2
0
 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
Пример #3
0
 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