def testQuickFitnessFairGame(self): """Fitness should return equal fitnesses a 'totally fair' game""" G = ArrayWrapper.array(lambda a,b,c,d: 5.0) for i in range(10): r = Dynamics.RandomDistribution(7) f = Dynamics._QuickFitness(r, G, 4) for k in range(1,7): self.failIf(f[k] != f[0])
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 testQuickFitness2Players(self): """QuickFitness should not make a difference to QF2 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._QuickFitness2(p, G) fitness = Dynamics._QuickFitness(p, G, 2) self.failUnless(AlmostEqual(fitness, compare))
def testSampledQuickFitness(self): """SampledQuickFitness should yield similar results as QuickFitness""" for i in range(5): G = array(GenRandomGame(4, 7)) p = Dynamics.RandomDistribution(7) fitness = Dynamics._QuickFitness(p, G, 4) failures = 0 for k in range(5): sampled = Dynamics._SampledQuickFitness(p, G, 4, 5000) if not AlmostEqual(fitness, sampled, 0.1): failures += 1 self.failIf(failures > 1)