def createGame(self, arenaDimensions=[5,5], robotInit=[0,0], envInit=[1,1]): ''' Creates turn based product ''' robotList = [] for i in xrange(self.numRobots): robotList.append( fsmIndiv(arenaDimensions, robotLabelFuction, agentName='R'+str(i), agentAlphabetInput=[['nn',1,1],['ss',1,1],['ee',1,1],['ww',1,1], ['oo',0,0],['ne',1,1],['nw',1,1],['se',1,1],['sw',1,1]], drawTransitionGraph = False, grammarType = 'SP_2', agentType = 'KNOWN')) env = fsmIndiv(arenaDimensions, envLabelFuction, agentName='E0', agentAlphabetInput=[['nn',1,1],['ss',1,1],['ee',1,1],['ww',1,1], ['oo',0,0],['ne',1,1],['nw',1,1],['se',1,1],['sw',1,1]], drawTransitionGraph = False, grammarType = 'SP_2', agentType = 'UNKNOWN', defaultAction = 'oo0') self.turnProduct = fsmTurnProduct([env]+robotList, arenaDimensions) self.gameStateLabels = {} for stateID in self.turnProduct.gameStates.keys(): currLabel = self.turnProduct.generateStateLabels(stateID, self.agentsLabelInitList) self.gameStateLabels[stateID] = currLabel.propositionList return
def initializeGame (self): '''Initialize game parameters and objects''' arenaDimensions = [4,4] # Creating robot agent semi-automata self.robot = fsmIndiv(arenaDimensions, robotLabelFuction, agentName= 'R', agentAlphabetInput=[['nn',1,1],['ss',1,1],['ee',1,1],['ww',1,1],['oo',0,0]]) # Creating env agent semi-automata self.env = fsmIndiv(arenaDimensions, envLabelFuction, agentName='E', agentAlphabetInput=[]) # Generating turn-based product self.gameProduct = fsmTurnProduct([self.robot,self.env], arenaDimensions, drawTransitionGraph=False, labelFunction=gameLabelFunction) # Specifying environment dynamics self.gameProduct.addAgentActions('E', ['oo0']) # Getting transition system parameters self.gameStates, self.gameAlphabet, self.gameTransitions, self.newTransitions = self.gameProduct.getFSA() # Getting labels of all states self.gameStateLabels = {} for stateID in self.gameProduct.gameStates.keys(): self.gameStateLabels[stateID] = self.gameProduct.generateStateLabels(stateID).propositionList return
def createGame(self, arenaDimensions=[5, 5], robotInit=[0, 0], envInit=[1, 1]): ''' Creates turn based product ''' robotList = [] for i in xrange(self.numRobots): robotList.append( fsmIndiv(arenaDimensions, robotLabelFuction, agentName='R' + str(i), agentAlphabetInput=[['nn', 1, 1], ['ss', 1, 1], ['ee', 1, 1], ['ww', 1, 1], ['oo', 0, 0], ['ne', 1, 1], ['nw', 1, 1], ['se', 1, 1], ['sw', 1, 1]], drawTransitionGraph=False, grammarType='SP_2', agentType='KNOWN')) env = fsmIndiv(arenaDimensions, envLabelFuction, agentName='E0', agentAlphabetInput=[['nn', 1, 1], ['ss', 1, 1], ['ee', 1, 1], ['ww', 1, 1], ['oo', 0, 0], ['ne', 1, 1], ['nw', 1, 1], ['se', 1, 1], ['sw', 1, 1]], drawTransitionGraph=False, grammarType='SP_2', agentType='UNKNOWN', defaultAction='oo0') self.turnProduct = fsmTurnProduct([env] + robotList, arenaDimensions) self.gameStateLabels = {} for stateID in self.turnProduct.gameStates.keys(): currLabel = self.turnProduct.generateStateLabels( stateID, self.agentsLabelInitList) self.gameStateLabels[stateID] = currLabel.propositionList return
# # print newGameProduct.arenaDimensions # # # Tests for getTransitionAction(st1, st2) # st1 = 'E0_22_R0_00_R1_10_T_R0' # st2 = 'E0_22_R0_11_R1_10_T_R1' # print gameProduct.getTransitionAction(st1, st2) if __name__=="__main__": robotList = [] arenaDimensions = [2,2] numRobots = 2 for i in xrange(numRobots): robotList.append( fsmIndiv(arenaDimensions, cpsFsmLabelFunctions.robotLabelFuction, agentName='R'+str(i), agentAlphabetInput=[['nn',1,1],['ss',1,1],['ee',1,1],['ww',1,1], ['oo',0,0],['ne',1,1],['nw',1,1],['se',1,1],['sw',1,1]], drawTransitionGraph = False, grammarType = 'SP_2', agentType = 'KNOWN')) env = fsmIndiv(arenaDimensions, cpsFsmLabelFunctions.envLabelFuction, agentName='E0', agentAlphabetInput=[['oo',0,0]], drawTransitionGraph = False, grammarType = 'SP_2', agentType = 'UNKNOWN') turnProduct = fsmTurnProduct([env]+robotList, arenaDimensions)
# startTime = time.clock() # Create turn-based product. Normally, this will be output from the GUI. arenaDimensions = [4,4] #Grid dimensions (x-dir,y-dir) or (col, row) numRobots = 2 robotLabelInit = {} robotLabelInit['condLabels'] = {} robotLabelInit['condLabels']['p1'] = [[0,0],[3,3]] robotLabelInit['condLabels']['p2'] = [[3,0],[0,3]] robotList = [] for i in xrange(numRobots): robotList.append( fsmIndiv(arenaDimensions, robotLabelFuction, agentName= 'R'+str(i), agentAlphabetInput=[['oo',0,0],['nn',1,1],['ss',1,1],['ee',1,1],['ww',1,1]])) for i in xrange(numRobots): for key in robotList[i].states.keys(): env = fsmIndiv(arenaDimensions, envLabelFuction, agentName='E', agentAlphabetInput=[['oo',0,0]]) gameProduct = fsmTurnProduct([env]+robotList, arenaDimensions, drawTransitionGraph=False) gameStates, gameAlphabet, gameTransitions, newTransitions = gameProduct.getFSA() p1Set = set(['00','33']) p2Set = set(['30','03']) gameStateLabels = {}
# Create turn-based product. Normally, this will be output from the GUI. arenaDimensions = [4, 4] #Grid dimensions (x-dir,y-dir) or (col, row) numRobots = 2 robotLabelInit = {} robotLabelInit['condLabels'] = {} robotLabelInit['condLabels']['p1'] = [[0, 0], [3, 3]] robotLabelInit['condLabels']['p2'] = [[3, 0], [0, 3]] robotList = [] for i in xrange(numRobots): robotList.append( fsmIndiv(arenaDimensions, robotLabelFuction, agentName='R' + str(i), agentAlphabetInput=[['oo', 0, 0], ['nn', 1, 1], ['ss', 1, 1], ['ee', 1, 1], ['ww', 1, 1]])) for i in xrange(numRobots): for key in robotList[i].states.keys(): env = fsmIndiv(arenaDimensions, envLabelFuction, agentName='E', agentAlphabetInput=[['oo', 0, 0]]) gameProduct = fsmTurnProduct([env] + robotList, arenaDimensions, drawTransitionGraph=False) gameStates, gameAlphabet, gameTransitions, newTransitions = gameProduct.getFSA( )
# st1 = 'E0_22_R0_00_R1_10_T_R0' # st2 = 'E0_22_R0_11_R1_10_T_R1' # print gameProduct.getTransitionAction(st1, st2) if __name__ == "__main__": robotList = [] arenaDimensions = [2, 2] numRobots = 2 for i in xrange(numRobots): robotList.append( fsmIndiv(arenaDimensions, cpsFsmLabelFunctions.robotLabelFuction, agentName='R' + str(i), agentAlphabetInput=[['nn', 1, 1], ['ss', 1, 1], ['ee', 1, 1], ['ww', 1, 1], ['oo', 0, 0], ['ne', 1, 1], ['nw', 1, 1], ['se', 1, 1], ['sw', 1, 1]], drawTransitionGraph=False, grammarType='SP_2', agentType='KNOWN')) env = fsmIndiv(arenaDimensions, cpsFsmLabelFunctions.envLabelFuction, agentName='E0', agentAlphabetInput=[['oo', 0, 0]], drawTransitionGraph=False, grammarType='SP_2', agentType='UNKNOWN') turnProduct = fsmTurnProduct([env] + robotList, arenaDimensions)