|
2 | 2 | from LineupGenerator import LineupGenerator
|
3 | 3 |
|
4 | 4 | class Nba(LineupGenerator):
|
5 |
| - def __init__(self, sport, num_lineups, overlap, player_limit, teams_limit, solver, correlation_file, players_file, defenses_goalies_file, output_file): |
6 |
| - super().__init__(sport, num_lineups, overlap, player_limit, teams_limit, solver, correlation_file, players_file, defenses_goalies_file, output_file) |
| 5 | + def __init__(self, sport, num_lineups, overlap, player_limit, teams_limit, stack, solver, correlation_file, players_file, defenses_goalies_file, output_file): |
| 6 | + super().__init__(sport, num_lineups, overlap, player_limit, teams_limit, stack, solver, correlation_file, players_file, defenses_goalies_file, output_file) |
7 | 7 | self.salary_cap = 55000
|
8 | 8 | self.header = ['PG', 'PG', 'SG', 'SG', 'SF', 'SF', 'PF', 'PF', 'C']
|
9 | 9 |
|
@@ -31,10 +31,51 @@ def generate(self, lineups):
|
31 | 31 | prob += (used_team[i] <= (pulp.lpSum(self.players_teams[k][i]*players_lineup[k] for k in range(self.num_players))))
|
32 | 32 |
|
33 | 33 | # stacks SGs with another player from the same team
|
34 |
| - prob += (pulp.lpSum(self.players_teams[k][i]*self.positions['PG'][k]*players_lineup[k] for k in range(self.num_players)) |
35 |
| - <= pulp.lpSum(self.players_teams[k][i]*self.positions['SG'][k]*players_lineup[k] for k in range(self.num_players))) |
| 34 | + if self.stack == "PG-SG": |
| 35 | + prob += (pulp.lpSum(self.players_teams[k][i]*self.positions['PG'][k]*players_lineup[k] for k in range(self.num_players)) |
| 36 | + <= pulp.lpSum(self.players_teams[k][i]*self.positions['SG'][k]*players_lineup[k] for k in range(self.num_players))) |
| 37 | + elif self.stack == "PG-(SG-SF-PF)": |
| 38 | + prob += (pulp.lpSum(self.players_teams[k][i]*self.positions['PG'][k]*players_lineup[k] for k in range(self.num_players)) |
| 39 | + <= (pulp.lpSum(self.players_teams[k][i]*self.positions['SG'][k]*players_lineup[k] for k in range(self.num_players)) |
| 40 | + + pulp.lpSum(self.players_teams[k][i]*self.positions['SF'][k]*players_lineup[k] for k in range(self.num_players)) |
| 41 | + + pulp.lpSum(self.players_teams[k][i]*self.positions['PF'][k]*players_lineup[k] for k in range(self.num_players)))) |
| 42 | + elif self.stack == "PG-(SG-SF-PF)-(SG-SF-PF)": |
| 43 | + prob += (2*pulp.lpSum(self.players_teams[k][i]*self.positions['PG'][k]*players_lineup[k] for k in range(self.num_players)) |
| 44 | + <= (pulp.lpSum(self.players_teams[k][i]*self.positions['SG'][k]*players_lineup[k] for k in range(self.num_players)) |
| 45 | + + pulp.lpSum(self.players_teams[k][i]*self.positions['SF'][k]*players_lineup[k] for k in range(self.num_players)) |
| 46 | + + pulp.lpSum(self.players_teams[k][i]*self.positions['PF'][k]*players_lineup[k] for k in range(self.num_players)))) |
| 47 | + elif self.stack == "PG-SG+PG-SG": |
| 48 | + for j in range(self.num_teams): |
| 49 | + if i != j: |
| 50 | + prob += (pulp.lpSum(self.players_teams[k][i]*self.positions['PG'][k]*players_lineup[k] for k in range(self.num_players)) |
| 51 | + <= pulp.lpSum(self.players_teams[k][i]*self.positions['SG'][k]*players_lineup[k] for k in range(self.num_players))) |
| 52 | + prob += (pulp.lpSum(self.players_teams[k][j]*self.positions['PG'][k]*players_lineup[k] for k in range(self.num_players)) |
| 53 | + <= pulp.lpSum(self.players_teams[k][j]*self.positions['SG'][k]*players_lineup[k] for k in range(self.num_players))) |
| 54 | + elif self.stack == "PG-(SG-SF-PF)+PG-(SG-SF-PF)": |
| 55 | + for j in range(self.num_teams): |
| 56 | + if i != j: |
| 57 | + prob += (pulp.lpSum(self.players_teams[k][i]*self.positions['PG'][k]*players_lineup[k] for k in range(self.num_players)) |
| 58 | + <= (pulp.lpSum(self.players_teams[k][i]*self.positions['SG'][k]*players_lineup[k] for k in range(self.num_players)) |
| 59 | + + pulp.lpSum(self.players_teams[k][i]*self.positions['SF'][k]*players_lineup[k] for k in range(self.num_players)) |
| 60 | + + pulp.lpSum(self.players_teams[k][i]*self.positions['PF'][k]*players_lineup[k] for k in range(self.num_players)))) |
| 61 | + prob += (pulp.lpSum(self.players_teams[k][j]*self.positions['PG'][k]*players_lineup[k] for k in range(self.num_players)) |
| 62 | + <= (pulp.lpSum(self.players_teams[k][j]*self.positions['SG'][k]*players_lineup[k] for k in range(self.num_players)) |
| 63 | + + pulp.lpSum(self.players_teams[k][j]*self.positions['SF'][k]*players_lineup[k] for k in range(self.num_players)) |
| 64 | + + pulp.lpSum(self.players_teams[k][j]*self.positions['PF'][k]*players_lineup[k] for k in range(self.num_players)))) |
| 65 | + elif self.stack == "PG-(SG-SF-PF)-(SG-SF-PF)+PG-(SG-SF-PF)-(SG-SF-PF)": |
| 66 | + for j in range(self.num_teams): |
| 67 | + if i != j: |
| 68 | + prob += (2*pulp.lpSum(self.players_teams[k][i]*self.positions['PG'][k]*players_lineup[k] for k in range(self.num_players)) |
| 69 | + <= (pulp.lpSum(self.players_teams[k][i]*self.positions['SG'][k]*players_lineup[k] for k in range(self.num_players)) |
| 70 | + + pulp.lpSum(self.players_teams[k][i]*self.positions['SF'][k]*players_lineup[k] for k in range(self.num_players)) |
| 71 | + + pulp.lpSum(self.players_teams[k][i]*self.positions['PF'][k]*players_lineup[k] for k in range(self.num_players)))) |
| 72 | + prob += (2*pulp.lpSum(self.players_teams[k][j]*self.positions['PG'][k]*players_lineup[k] for k in range(self.num_players)) |
| 73 | + <= (pulp.lpSum(self.players_teams[k][j]*self.positions['SG'][k]*players_lineup[k] for k in range(self.num_players)) |
| 74 | + + pulp.lpSum(self.players_teams[k][j]*self.positions['SF'][k]*players_lineup[k] for k in range(self.num_players)) |
| 75 | + + pulp.lpSum(self.players_teams[k][j]*self.positions['PF'][k]*players_lineup[k] for k in range(self.num_players)))) |
| 76 | + |
36 | 77 | prob += (pulp.lpSum(self.players_teams[k][i]*players_lineup[k] for k in range(self.num_players)) <= 4*used_team[i])
|
37 |
| - # # ensures that the lineup contains less than X unique teams |
| 78 | + # ensures that the lineup contains less than X unique teams |
38 | 79 | prob += (pulp.lpSum(used_team[i] for i in range(self.num_teams)) == 5)
|
39 | 80 |
|
40 | 81 | # each new lineup can't have more than the overlap variable number of combinations of players in any previous lineups
|
|
0 commit comments