Skip to content

Instantly share code, notes, and snippets.

@rizar
Created July 1, 2019 18:00
Show Gist options
  • Save rizar/94662aa7cbad859af33160e5291c6012 to your computer and use it in GitHub Desktop.
Save rizar/94662aa7cbad859af33160e5291c6012 to your computer and use it in GitHub Desktop.
Sub selection script (run with the seed as the only argument)
import numpy
import sys
players = [
'Alex Lacoste',
'Karl Janelle',
'JF Marcil',
'Pat Steeves',
'Dzmitry Bahdanau',
'Philippe Guay',
'Archy',
'Simon Hudson',
'Simon Lemieux'
]
games = [
'July 2',
'July 9',
'July 16',
'July 23',
'July 30',
'August 6',
'August 13',
'August 20',
'August 27']
rng = numpy.random.RandomState(int(sys.argv[1]))
def generate_rosters():
rosters = []
for game in games:
rosters.append(rng.permutation(len(players)))
return numpy.array(rosters)
def compute_fairness(rosters):
"""People have debated over centuries what's fair..."""
player_skips = numpy.zeros(len(players))
for r in rosters:
player_skips[r[0]] += 1.1
player_skips[r[1]] += 1
return -player_skips.max()
best_rosters = None
best_fairness = -10
for i in range(100000):
rosters = generate_rosters()
fairness = compute_fairness(rosters)
if fairness > best_fairness:
best_fairness = fairness
best_rosters = rosters
print("Best fairness:", best_fairness)
for game, roster in zip(games, best_rosters):
print(game)
print("1st sub:", players[roster[1]])
print("2nd sub:", players[roster[0]])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment