def test_hardcoded_fixations(self): game = games.two_times_two(a=3.0, b=0.5, c=0.5, d=2.0) intensity_of_selection = 1.0 population_size = 5 # number_of_samples=100000 number_of_samples = 20000 index_of_the_incumbent = 1 index_of_the_mutant = 0 # numerical_value = numerical.fixation_probability_strategy_a(game, intensity_of_selection, population_size) numerical_value = numerical.fixation_probability( mutant_index=0, resident_index=1, intensity_of_selection=intensity_of_selection, population_size=population_size, game_matrix=game, mapping='EXP') print(numerical_value) mp = MoranProcess(population_size, intensity_of_selection, game_matrix=game, fitness_mapping='exp', mutation_probability=0.1) simulated_value = mp.simulate_fixation_probability( index_of_the_incumbent=index_of_the_incumbent, index_of_the_mutant=index_of_the_mutant, number_of_samples=number_of_samples, seed=None) print(simulated_value) self.assertAlmostEqual(numerical_value, simulated_value, places=2, msg="", delta=None)
def test_fixation_of_neutral_mutant(self): number_of_strategies_value = 2 number_of_samples_=10000 for _ in xrange(0,5): pop_size =np.random.randint(2,11) mp = MoranProcess(population_size=pop_size, intensity_of_selection=0.0, game_matrix=np.random.rand(number_of_strategies_value,number_of_strategies_value), number_of_strategies=number_of_strategies_value, fitness_mapping='exp', mutation_probability=0.1) fix = mp.simulate_fixation_probability(0, 1, number_of_samples=number_of_samples_, seed=None) np.testing.assert_allclose(fix,1.0/pop_size, rtol=0.01, atol=0.01, err_msg="Paila", verbose=True)
def test_fixation_of_neutral_mutant(self): number_of_strategies_value = 2 number_of_samples_ = 10000 for _ in range(0, 5): pop_size = np.random.randint(2, 11) mp = MoranProcess(population_size=pop_size, intensity_of_selection=0.0, game_matrix=np.random.rand(number_of_strategies_value, number_of_strategies_value), number_of_strategies=number_of_strategies_value, fitness_mapping='exp', mutation_probability=0.1) fix = mp.simulate_fixation_probability(0, 1, number_of_samples=number_of_samples_, seed=None) np.testing.assert_allclose(fix, 1.0 / pop_size, rtol=0.01, atol=0.01, err_msg="Paila", verbose=True)
def test_if_a_type_is_not_there_it_never_shows_up(self): #np.random.seed(999) for i in xrange(0,3): pop = np.random.randint(1,10,5) #random population with 5 strategies zero_element = np.random.randint(0,5) pop[zero_element] = 0 pop_size = np.sum(pop) mp = MoranProcess(population_size=pop_size, intensity_of_selection=1.0, game_matrix=np.random.rand(5,5), number_of_strategies=5, fitness_mapping='exp', mutation_probability=0.1) for j in xrange(0,1000): pop = mp.step(pop, mutation_step=False)[0] self.assertEqual(pop[zero_element], 0, "Type " + str(zero_element) +" showed up in population "+ str(pop) +" at iteration "+ str(i)+" "+str(j))
def test_if_a_type_is_not_there_it_never_shows_up(self): # np.random.seed(999) for i in range(0, 3): pop = np.random.randint(1, 10, 5) # random population with 5 strategies zero_element = np.random.randint(0, 5) pop[zero_element] = 0 pop_size = np.sum(pop) mp = MoranProcess(population_size=pop_size, intensity_of_selection=1.0, game_matrix=np.random.rand(5, 5), number_of_strategies=5, fitness_mapping='exp', mutation_probability=0.1) for j in range(0, 1000): pop = mp.step(pop, mutation_step=False)[0] self.assertEqual(pop[zero_element], 0, "Type " + str(zero_element) + " showed up in population " + str( pop) + " at iteration " + str(i) + " " + str(j))
def test_hardcoded_fixations(self): game= games.two_times_two(a=3.0, b=0.5, c=0.5, d=2.0) intensity_of_selection=1.0 population_size=5 #number_of_samples=100000 number_of_samples=20000 index_of_the_incumbent=1 index_of_the_mutant=0 #numerical_value = numerical.fixation_probability_strategy_a(game, intensity_of_selection, population_size) numerical_value = numerical.fixation_probability(mutant_index=0, resident_index=1, intensity_of_selection=intensity_of_selection, population_size=population_size, game_matrix=game, mapping='EXP') print numerical_value mp = MoranProcess(population_size, intensity_of_selection, game_matrix=game, fitness_mapping='exp', mutation_probability=0.1) simulated_value = mp.simulate_fixation_probability(index_of_the_incumbent=index_of_the_incumbent, index_of_the_mutant=index_of_the_mutant, number_of_samples=number_of_samples, seed=None) print simulated_value self.assertAlmostEqual(numerical_value, simulated_value, places=2, msg="", delta=None)