Beispiel #1
0
def run(
             BenchmarkTeam,
             StatsToMaximize,
             TeamsToInclude=[x for x in range(1,13)],
             Population=1000,
             Generations=60,
             PlayersDictionary = team.readPickle('players'),
             NumbersPerPositionAsList = [5,5,5,6,3],
             TimeFrame = 'stats_lastmonth'
            ):
   playersDic = PlayersDictionary
   rwList = team.makePositionList('RW',playersDic,TeamsToInclude)
   lwList = team.makePositionList('LW',playersDic,TeamsToInclude)
   cList = team.makePositionList('C',playersDic,TeamsToInclude)
   dList = team.makePositionList('D',playersDic,TeamsToInclude)

   creator.create("FitnessMax", base.Fitness, weights=(1.0,) )
   #creator.create("FitnessMax", base.Fitness, weights=tuple( [x/10 for x in range(10,(10-len(StatsToMaximize)),-1)] ) )
   creator.create("Team", list, fitness=creator.FitnessMax)

   toolbox = base.Toolbox()
   toolbox.register("genteam", generateTeam, c=cList, rw=rwList, lw=lwList, d=dList, npos=NumbersPerPositionAsList)
   toolbox.register("population", tools.initRepeat, list, toolbox.genteam)
   toolbox.register("evaluate", evalTeamFitness, BT=BenchmarkTeam, stats=StatsToMaximize, p=playersDic, time=TimeFrame)
   toolbox.register("mate", tools.cxTwoPoint)
   toolbox.register("mutate", mutateTeam, indpb=0.05, c=cList, rw=rwList, lw=lwList, d=dList, npos=NumbersPerPositionAsList)
   #toolbox.register("select", tools.selNSGA2)
   toolbox.register("select", tools.selTournament, tournsize=10)
   toolbox.decorate("mate", checkCrossover(c=cList, rw=rwList, lw=lwList, d=dList, npos=NumbersPerPositionAsList))

   random.seed()
   pop = toolbox.population(n=Population)
   hof = tools.HallOfFame(1)
   algorithms.eaSimple(pop, toolbox, cxpb=0.5, mutpb=0.2, ngen=Generations,  halloffame=hof, verbose=True)

   return( hof[0] , hof[0].fitness.values )
import random
import numpy
from deap import algorithms
from deap import base
from deap import creator
from deap import tools
import team

playersDic = team.readPickle('players')
teamsToInclude=[0,6]
rwList = team.makePositionList('RW',playersDic,teamsToInclude)
lwList = team.makePositionList('LW',playersDic,teamsToInclude)
cList = team.makePositionList('C',playersDic,teamsToInclude)
dList = team.makePositionList('D',playersDic,teamsToInclude)
statsToMaximize = [14,16,1,2,31,32]

#Define Player and Player's Fitness
creator.create("FitnessMax", base.Fitness, weights=tuple([1.0]*len(statsToMaximize)) )
creator.create("Team", list, fitness=creator.FitnessMax)

#Register Player Operations
def generateTeam(c,rw,lw,d):
   return creator.Team(team.makeRandomTeam(c,rw,lw,d))

def evalTeamFitness(individual):
   listOfPlayerStatsForIndividual = [[playersDic[player]['stats_lastmonth'][statid] for statid in statsToMaximize]for player in individual]
   combinedStatsForIndividual = tuple([sum(totalstats) for totalstats in zip(*listOfPlayerStatsForIndividual)])
   return combinedStatsForIndividual

toolbox = base.Toolbox()
toolbox.register("genteam", generateTeam, c=cList, rw=rwList, lw=lwList, d=dList)
Beispiel #3
0
import genetic
import team

#non-goalie stat categories
ng=[ 1,2,4,5,6,7,9,10,12,14,16,31,32]

MYTEAMID=6

players = team.readPickle('players')
myteam = team.readPickle('teams')[MYTEAMID]

#get only first 24 players
mystarters = myteam['team_roster'][:24]

#interesting stats in order of descending importance
st = [1,2,4,14,5,31,32]

def test(stat,time):
    mystats = team.calcTeamStats(mystarters, stat, players, time)
    head = team.statidHeader(stat)
    t1,f1=genetic.run(mystarters,TeamsToInclude=[0,MYTEAMID],StatsToMaximize=stat,
                        TimeFrame=time, Population=1000, Generations=60)
    print('\n\n\n\n\n\n\n')

    [print(head[i],mystats[i]) for i in range(len(head))]
    print()

    gastats = team.calcTeamStats(t1, stat, players, time)
    [print(head[i],gastats[i]) for i in range(len(head))]

    m = set(mystarters)