tags:

views:

54

answers:

1

I'm able to go through the first function....but the second func is not running....getaction

 def registerInitialState(self, state):
    """
    This is the first time that the agent sees the layout of the game board. Here, we
    choose a path to the goal.  In this phase, the agent should compute the path to the
    goal and store it in a local variable.  All of the work is done in this method!

    state: a GameState object (pacman.py)
    """
    if self.searchFunction == None: raise Exception, "No search function provided for SearchAgent"
    starttime = time.time()
    problem = self.searchType(state) # Makes a new search problem
    self.actions  = self.searchFunction(problem) # Find a path
    totalCost = problem.getCostOfActions(self.actions)
    print('Path found with total cost of %d in %.1f seconds' % (totalCost, time.time() - starttime))
    if '_expanded' in dir(problem): print('Search nodes expanded: %d' % problem._expanded)

  def getAction(self, state):
    """
    Returns the next action in the path chosen earlier (in registerInitialState).  Return
    Directions.STOP if there is no further action to take.

    state: a GameState object (pacman.py)
    """
    if 'actionIndex' not in dir(self): self.actionIndex = 0
    i = self.actionIndex
    self.actionIndex += 1
    if i < len(self.actions):
      return self.actions[i]    
    else:
      return Directions.STOP


Error:  File  line 114, in getAction
    if i < len(self.actions):
TypeError: len() of unsized object

this is my function:when i execute, it shud give me the value of node but instead of it, it is giving me error. The value of i = 0 in the get action function. I dont know, why it is not incrementing.

while stack.isEmpty()!= 0:  
        node = stack.pop()
        print node

Error:

(5, 5)
Path found with total cost of 999999 in 0.0 seconds
Search nodes expanded: 1
None
+1  A: 

Add the print statement as per below and tell me what it says. self.actions is probably the None type or not a list-like object. You might want to check == None like the other one.

self.actionIndex += 1 
print self.actions
if i < len(self.actions): 
  return self.actions[i]     
else: 
  return Directions.STOP 

So the problem is probably somewhere in here:

problem = self.searchType(state) # Makes a new search problem 
self.actions  = self.searchFunction(problem) # Find a path 

making self.actions == None

You could debug further with:

problem = self.searchType(state) # Makes a new search problem 
print problem
self.actions  = self.searchFunction(problem) # Find a path 

to check if problem is working.. if so, searchFunction is not finding the path or something is going wrong and it is returning None.

BobTurbo
plz check the question again
Shilpa
ya..i edited the question...u can check the error at the end of question.
Shilpa
what shud i do now??You are right..it is none
Shilpa
You should trace what the object which is passed to getAction goes through. That should tell you where to look.
Noufal Ibrahim