-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathProblem_SPG_ice_hockey.py
29 lines (23 loc) · 9.58 KB
/
Problem_SPG_ice_hockey.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from datetime import datetime
class SPG_ice_hockey:
"""
An MDP. Contains methods for initialisation, state transition.
Can be aggregated or unaggregated.
"""
def __init__(self, gamma=1):
# assert games_directory is not None
# self.games_directory = games_directory
self.gamma = gamma
self.reset = None
self.isEpisodic = True
# same action for all instances
self.actions = ['the_action']
self.dimNames = ['xAdjCoord9','yAdjCoord9','scoreDifferential9','manpowerSituation9','outcome9','velocity_x9','velocity_y9','time_remain9','duration9','home9','away9','angle2gate9','assist9','block9','carry9','check9','controlledbreakout9','controlledentryagainst9','dumpin9','dumpinagainst9','dumpout9','faceoff9','goal9','icing9','lpr9','offside9','pass9','pass1timer9','penalty9','pressure9','pscarry9','pscheck9','pslpr9','pspuckprotection9','puckprotection9','reception9','receptionprevention9','shot9','shot1timer9','xAdjCoord8','yAdjCoord8','scoreDifferential8','manpowerSituation8','outcome8','velocity_x8','velocity_y8','time_remain8','duration8','home8','away8','angle2gate8','assist8','block8','carry8','check8','controlledbreakout8','controlledentryagainst8','dumpin8','dumpinagainst8','dumpout8','faceoff8','goal8','icing8','lpr8','offside8','pass8','pass1timer8','penalty8','pressure8','pscarry8','pscheck8','pslpr8','pspuckprotection8','puckprotection8','reception8','receptionprevention8','shot8','shot1timer8','xAdjCoord7','yAdjCoord7','scoreDifferential7','manpowerSituation7','outcome7','velocity_x7','velocity_y7','time_remain7','duration7','home7','away7','angle2gate7','assist7','block7','carry7','check7','controlledbreakout7','controlledentryagainst7','dumpin7','dumpinagainst7','dumpout7','faceoff7','goal7','icing7','lpr7','offside7','pass7','pass1timer7','penalty7','pressure7','pscarry7','pscheck7','pslpr7','pspuckprotection7','puckprotection7','reception7','receptionprevention7','shot7','shot1timer7','xAdjCoord6','yAdjCoord6','scoreDifferential6','manpowerSituation6','outcome6','velocity_x6','velocity_y6','time_remain6','duration6','home6','away6','angle2gate6','assist6','block6','carry6','check6','controlledbreakout6','controlledentryagainst6','dumpin6','dumpinagainst6','dumpout6','faceoff6','goal6','icing6','lpr6','offside6','pass6','pass1timer6','penalty6','pressure6','pscarry6','pscheck6','pslpr6','pspuckprotection6','puckprotection6','reception6','receptionprevention6','shot6','shot1timer6','xAdjCoord5','yAdjCoord5','scoreDifferential5','manpowerSituation5','outcome5','velocity_x5','velocity_y5','time_remain5','duration5','home5','away5','angle2gate5','assist5','block5','carry5','check5','controlledbreakout5','controlledentryagainst5','dumpin5','dumpinagainst5','dumpout5','faceoff5','goal5','icing5','lpr5','offside5','pass5','pass1timer5','penalty5','pressure5','pscarry5','pscheck5','pslpr5','pspuckprotection5','puckprotection5','reception5','receptionprevention5','shot5','shot1timer5','xAdjCoord4','yAdjCoord4','scoreDifferential4','manpowerSituation4','outcome4','velocity_x4','velocity_y4','time_remain4','duration4','home4','away4','angle2gate4','assist4','block4','carry4','check4','controlledbreakout4','controlledentryagainst4','dumpin4','dumpinagainst4','dumpout4','faceoff4','goal4','icing4','lpr4','offside4','pass4','pass1timer4','penalty4','pressure4','pscarry4','pscheck4','pslpr4','pspuckprotection4','puckprotection4','reception4','receptionprevention4','shot4','shot1timer4','xAdjCoord3','yAdjCoord3','scoreDifferential3','manpowerSituation3','outcome3','velocity_x3','velocity_y3','time_remain3','duration3','home3','away3','angle2gate3','assist3','block3','carry3','check3','controlledbreakout3','controlledentryagainst3','dumpin3','dumpinagainst3','dumpout3','faceoff3','goal3','icing3','lpr3','offside3','pass3','pass1timer3','penalty3','pressure3','pscarry3','pscheck3','pslpr3','pspuckprotection3','puckprotection3','reception3','receptionprevention3','shot3','shot1timer3','xAdjCoord2','yAdjCoord2','scoreDifferential2','manpowerSituation2','outcome2','velocity_x2','velocity_y2','time_remain2','duration2','home2','away2','angle2gate2','assist2','block2','carry2','check2','controlledbreakout2','controlledentryagainst2','dumpin2','dumpinagainst2','dumpout2','faceoff2','goal2','icing2','lpr2','offside2','pass2','pass1timer2','penalty2','pressure2','pscarry2','pscheck2','pslpr2','pspuckprotection2','puckprotection2','reception2','receptionprevention2','shot2','shot1timer2','xAdjCoord1','yAdjCoord1','scoreDifferential1','manpowerSituation1','outcome1','velocity_x1','velocity_y1','time_remain1','duration1','home1','away1','angle2gate1','assist1','block1','carry1','check1','controlledbreakout1','controlledentryagainst1','dumpin1','dumpinagainst1','dumpout1','faceoff1','goal1','icing1','lpr1','offside1','pass1','pass1timer1','penalty1','pressure1','pscarry1','pscheck1','pslpr1','pspuckprotection1','puckprotection1','reception1','receptionprevention1','shot1','shot1timer1','xAdjCoord0','yAdjCoord0','scoreDifferential0','manpowerSituation0','outcome0','velocity_x0','velocity_y0','time_remain0','duration0','home0','away0','angle2gate0']
self.dimSizes = ['continuous','continuous','discrete','discrete','discrete','continuous','continuous','continuous','continuous','discrete','discrete','continuous','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','continuous','continuous','discrete','discrete','discrete','continuous','continuous','continuous','continuous','discrete','discrete','continuous','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','continuous','continuous','discrete','discrete','discrete','continuous','continuous','continuous','continuous','discrete','discrete','continuous','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','continuous','continuous','discrete','discrete','discrete','continuous','continuous','continuous','continuous','discrete','discrete','continuous','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','continuous','continuous','discrete','discrete','discrete','continuous','continuous','continuous','continuous','discrete','discrete','continuous','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','continuous','continuous','discrete','discrete','discrete','continuous','continuous','continuous','continuous','discrete','discrete','continuous','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','continuous','continuous','discrete','discrete','discrete','continuous','continuous','continuous','continuous','discrete','discrete','continuous','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','continuous','continuous','discrete','discrete','discrete','continuous','continuous','continuous','continuous','discrete','discrete','continuous','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','continuous','continuous','discrete','discrete','discrete','continuous','continuous','continuous','continuous','discrete','discrete','continuous','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','discrete','continuous','continuous','discrete','discrete','discrete','continuous','continuous','continuous','continuous','discrete','discrete','continuous']
self.stateFeatures = dict(zip(self.dimNames, self.dimSizes))
self.nStates = len(self.stateFeatures)
d = datetime.today().strftime('%d-%m-%Y--%H:%M:%S')
self.probName = ('{0}_gamma={1}_mode={2}').format(d, gamma,
'Action Feature States' if self.nStates > 12 else 'Feature States')
# self.games_directory = games_directory
return