def testFitnessCorrelation(self): """Correlation should make a difference""" G = ArrayWrapper.array(CorelatedGame) for k in range(20): p = Dynamics.RandomDistribution(8) compare = Dynamics._QuickFitness(p, G, 3) fitness = Dynamics._Fitness(p, G, 0.2, 3) self.failIf(AlmostEqual(fitness, compare))
def testFitnessZeroCorrelation(self): """Fitness should return the same results as QuickFitness if e=0.0.""" for i in range(5): G = array(GenRandomGame(4, 7)) for k in range(5): p = Dynamics.RandomDistribution(7) compare = Dynamics._QuickFitness(p, G, 4) fitness = Dynamics._Fitness(p, G, 0.0, 4) self.failUnless(AlmostEqual(fitness, compare))
def testFitness2Players(self): """Fitness should be the same as Fitness2 in the 2 player case""" for i in range(20): G = array(GenRandomGame(2, 8)) for k in range(5): p = Dynamics.RandomDistribution(8) compare = Dynamics._Fitness2(p, G, 0.2) fitness = Dynamics._Fitness(p, G, 0.2, 2) self.failUnless(AlmostEqual(fitness, compare))
def testSampledFitness(self): """SampledFitness should yield roughly the same results as Fitness""" for i in range(5): G = array(GenRandomGame(3, 8)) p = Dynamics.RandomDistribution(8) fitness = Dynamics._Fitness(p, G, 0.2, 3) failures = 0 for k in range(5): sampled = Dynamics._SampledFitness(p, G, 0.2, 3, 5000) if not AlmostEqual(fitness, sampled, 0.15): failures += 1 self.failIf(failures > 1)