Skip to content

Commit 06a2887

Browse files
authored
Merge pull request #671 from Axelrod-Python/670
Simplify (and correct) mean payoff diff scores
2 parents d9b078d + 360758c commit 06a2887

File tree

2 files changed

+10
-22
lines changed

2 files changed

+10
-22
lines changed

axelrod/result_set.py

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -464,28 +464,8 @@ def build_payoff_diffs_means(self):
464464
Where pij is the mean difference of the
465465
scores per turn between player i and j in repetition m.
466466
"""
467-
plist = list(range(self.nplayers))
468-
payoff_diffs_means = [[0 for opponent in plist] for player in plist]
469-
470-
for player in plist:
471-
for opponent in plist:
472-
diffs = []
473-
for index_pair, repetitions in self.interactions.items():
474-
if (player, opponent) == index_pair:
475-
for interaction in repetitions:
476-
scores = iu.compute_final_score_per_turn(interaction,
477-
self.game)
478-
diffs.append(scores[0] - scores[1])
479-
elif (opponent, player) == index_pair:
480-
for interaction in repetitions:
481-
scores = iu.compute_final_score_per_turn(interaction,
482-
self.game)
483-
diffs.append(scores[1] - scores[0])
484-
if diffs:
485-
payoff_diffs_means[player][opponent] = mean(diffs)
486-
else:
487-
payoff_diffs_means[player][opponent] = 0
488-
467+
payoff_diffs_means = [[mean(diff) for diff in player]
468+
for player in self.score_diffs]
489469
return payoff_diffs_means
490470

491471
@update_progress_bar

axelrod/tests/unit/test_resultset.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,14 @@ def test_eigenmoses_rating(self):
364364
for j, rate in enumerate(rs.eigenmoses_rating):
365365
self.assertAlmostEqual(rate, self.expected_eigenmoses_rating[j])
366366

367+
def test_self_interaction_for_random_strategies(self):
368+
# Based on https://github.com/Axelrod-Python/Axelrod/issues/670
369+
axelrod.seed(0)
370+
players = [s() for s in axelrod.demo_strategies]
371+
tournament = axelrod.Tournament(players, repetitions=2, turns=5)
372+
results = tournament.play()
373+
self.assertEqual(results.payoff_diffs_means[-1][-1], 1.0)
374+
367375

368376
class TestResultSetFromFile(unittest.TestCase):
369377
tmp_file = tempfile.NamedTemporaryFile(mode='w', delete=False)

0 commit comments

Comments
 (0)