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)
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
 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))