예제 #1
0
    def test_complete_tournament(self, strategies, prob_end, seed, reps):
        """
        A test to check that a spatial tournament on the complete graph
        gives the same results as the round robin.
        """
        players = [s() for s in strategies]

        # create a prob end round robin tournament
        tournament = axelrod.ProbEndTournament(players,
                                               prob_end=prob_end,
                                               repetitions=reps)
        axelrod.seed(seed)
        results = tournament.play(progress_bar=False)

        # create a complete spatial tournament
        # edges
        edges = [(i, j) for i in range(len(players))
                 for j in range(i, len(players))]

        spatial_tournament = axelrod.ProbEndSpatialTournament(
            players, prob_end=prob_end, repetitions=reps, edges=edges)
        axelrod.seed(seed)
        spatial_results = spatial_tournament.play(progress_bar=False)
        self.assertEqual(results.match_lengths, spatial_results.match_lengths)
        self.assertEqual(results.ranked_names, spatial_results.ranked_names)
        self.assertEqual(results.wins, spatial_results.wins)
        self.assertEqual(results.scores, spatial_results.scores)
        self.assertEqual(results.cooperation, spatial_results.cooperation)
예제 #2
0
 def test_one_turn_tournament(self, tournament, seed):
     """
     Tests that gives same result as the corresponding spatial round robin
     spatial tournament
     """
     prob_end_tour = axelrod.ProbEndSpatialTournament(
         tournament.players,
         prob_end=1,
         edges=tournament.edges,
         repetitions=tournament.repetitions)
     axelrod.seed(seed)
     prob_end_results = prob_end_tour.play(progress_bar=False)
     axelrod.seed(seed)
     one_turn_results = tournament.play(progress_bar=False)
     self.assertEqual(prob_end_results.scores, one_turn_results.scores)
     self.assertEqual(prob_end_results.wins, one_turn_results.wins)
     self.assertEqual(prob_end_results.cooperation,
                      one_turn_results.cooperation)
예제 #3
0
 def test_init(self):
     tournament = axelrod.ProbEndSpatialTournament(
         name=self.test_name,
         players=self.players,
         game=self.game,
         prob_end=self.test_prob_end,
         edges=self.test_edges,
         noise=0.2)
     self.assertEqual(tournament.match_generator.edges, tournament.edges)
     self.assertEqual(len(tournament.players), len(test_strategies))
     self.assertEqual(tournament.game.score(('C', 'C')), (3, 3))
     self.assertEqual(tournament.turns, float("inf"))
     self.assertEqual(tournament.repetitions, 10)
     self.assertEqual(tournament.name, 'test')
     self.assertTrue(tournament._with_morality)
     self.assertIsInstance(tournament._logger, logging.Logger)
     self.assertEqual(tournament.noise, 0.2)
     self.assertEqual(tournament.match_generator.noise, 0.2)
     self.assertEqual(tournament.prob_end, self.test_prob_end)
     anonymous_tournament = axelrod.Tournament(players=self.players)
     self.assertEqual(anonymous_tournament.name, 'axelrod')