def test_roulette_wheel_selection_factory(self): pls = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] fitness = [1, 3, 5, 7, 9, 11, 13, 15, 2, 4, 6, 8, 10, 12, 14, 16] selector = helper.roulette_wheel_selection_factory() seeds, gametes = selector(pls, fitness) #print seeds,gametes self.assertEquals(len(pls), len(seeds)) self.assertEquals(len(pls), len(gametes)) for i in xrange(len(seeds)): self.assertTrue(seeds[i] in pls) self.assertTrue(gametes[i] in pls) self.assertTrue(seeds[i] != gametes[i]) #times=2 selector2 = helper.roulette_wheel_selection_factory(2) seeds, gametes = selector2(pls, fitness) #print seeds,gametes self.assertEquals(2 * len(pls), len(seeds)) self.assertEquals(2 * len(pls), len(gametes)) for i in xrange(len(seeds)): self.assertTrue(seeds[i] in pls) self.assertTrue(gametes[i] in pls) self.assertTrue(seeds[i] != gametes[i]) #times非法 self.assertRaises(AssertionError, helper.roulette_wheel_selection_factory, 1.6)
def __init__(self, evmode='profit', psize=100, maxstep=100, goal=10000): assert evmode in evmap self.prepare() #准备argnames,argpool和template_func self.argnames = [k for k, v in sorted(self.args.items()) ] #为了方便预定义种子对位置的查找,因为dict是不保序的 #self.argnames = self.args.keys() self.argpool = [v for k, v in sorted(self.args.items()) ] #为了方便预定义种子对位置的查找,因为dict是不保序的 #print self.argpool #self.argpool = self.args.values() self.bitgroups = [ helper.calc_bitnumber(len(sp)) for sp in self.argpool ] #print self.bitgroups self.celler = BCell #这里只能是BCell #print self.argnames self.extractor = evmap[evmode] self.psize = psize self.maxstep = maxstep #self.crossover = helper.uniform_crossover #可能被predefined_population用到 self.crossover = helper.bitgroups_crossover_factory( self.bitgroups, helper.single_point_crossover_g) self.reproducer = helper.simple_reproducer_factory(0.85, 0.1) self.selector = helper.roulette_wheel_selection_factory( self.reproducer.times_of_length) self.goal = goal self.ev_result = {}
def test_cached_judge(self): class TCell(object):pass cell = TCell() proxy = pmock.Mock() proxy.expects(pmock.once()).judge(pmock.eq(cell)).will(pmock.return_value(88)) reproducer = helper.simple_reproducer_factory(0.8,0.001) nature = Nature(proxy.judge,helper.nonlinear_rank,helper.roulette_wheel_selection_factory(reproducer.times_of_length),reproducer) nature.cached_judge(cell) nature.cached_judge(cell) nature.cached_judge(cell) proxy.verify()
def __init__(self,evmode='profit',psize=100,maxstep=100,goal=10000): assert evmode in evmap self.prepare() #准备argnames,argpool和template_func self.argnames = [k for k,v in sorted(self.args.items())] #为了方便预定义种子对位置的查找,因为dict是不保序的 #self.argnames = self.args.keys() self.argpool = [v for k,v in sorted(self.args.items())] #为了方便预定义种子对位置的查找,因为dict是不保序的 #print self.argpool #self.argpool = self.args.values() self.bitgroups = [ helper.calc_bitnumber(len(sp)) for sp in self.argpool] #print self.bitgroups self.celler = BCell #这里只能是BCell #print self.argnames self.extractor = evmap[evmode] self.psize = psize self.maxstep = maxstep #self.crossover = helper.uniform_crossover #可能被predefined_population用到 self.crossover = helper.bitgroups_crossover_factory(self.bitgroups,helper.single_point_crossover_g) self.reproducer = helper.simple_reproducer_factory(0.85,0.1) self.selector = helper.roulette_wheel_selection_factory(self.reproducer.times_of_length) self.goal = goal self.ev_result = {}
def test_init(self): judge = lambda cell : 100 reproducer = helper.simple_reproducer_factory(0.8,0.001) nature = Nature(judge,helper.nonlinear_rank,helper.roulette_wheel_selection_factory(reproducer.times_of_length),reproducer) nature = Nature(judge,helper.nonlinear_rank,helper.roulette_wheel_selection_factory(reproducer.times_of_length),reproducer,101)