def testFitness2Correlation(self): """Correlation should make a difference""" G = ArrayWrapper.array(CorelatedGame) for k in range(20): p = Dynamics.RandomDistribution(8) compare = Dynamics._QuickFitness2(p, G) fitness = Dynamics._Fitness2(p, G, 0.2) self.failIf(AlmostEqual(fitness, compare))
def testQuickFitness2FairGame(self): """QuickFitness2 should yield equal fitnesses in a totally fair game""" G = ArrayWrapper.array(lambda a,b: 0.3) for i in range(20): p = Dynamics.RandomDistribution(5) f = Dynamics._QuickFitness2(p, G) for k in range(1,5): self.failIf(f[k] != f[0])
def testFitness2ZeroCorrelation(self): """Fitness2 should return the same results QuickFitness2 if e=0.0.""" 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._Fitness2(p, G, 0.0) self.failUnless(AlmostEqual(fitness, compare))
def testNumericQuickFitness2Players(self): """QuickFitness2 and numeric_QuickFitness2 should yield the same result """ 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._numeric_QuickFitness2(p, G) 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 testSampledQuickFitness2(self): """SampledQuickFitness2 should yield similar results as QuickFitness2""" for i in range(5): G = array(GenRandomGame(2, 8)) p = Dynamics.RandomDistribution(8) fitness = Dynamics._QuickFitness2(p, G) failures = 0 for k in range(5): sampled = Dynamics._SampledQuickFitness2(p, G, 1000) if not AlmostEqual(fitness, sampled, 0.1): failures += 1 self.failIf(failures > 1)
def testQuickFitness2DemandGame(self): """Test QuickFitness with the 'demand game'""" fitness = Dynamics._QuickFitness2(self.pop1, self.DemandGame) self.failUnless(fitness[2] > fitness[1] and fitness[2] >= fitness[0])