Python util 模块,PriorityQueue() 实例源码

我们从Python开源项目中,提取了以下11个代码示例,用于说明如何使用util.PriorityQueue()

项目:AI-Pacman    作者:AUTBS    | 项目源码 | 文件源码
def computeDistances(layout):
    "Runs UCS to all other positions from each position"
    distances = {}
    allNodes = layout.walls.asList(False)
    for source in allNodes:
        dist = {}
        closed = {}
        for node in allNodes:
            dist[node] = sys.maxint
        import util
        queue = util.PriorityQueue()
        queue.push(source, 0)
        dist[source] = 0
        while not queue.isEmpty():
            node = queue.pop()
            if node in closed:
                continue
            closed[node] = True
            nodeDist = dist[node]
            adjacent = []
            x, y = node
            if not layout.isWall((x,y+1)):
                adjacent.append((x,y+1))
            if not layout.isWall((x,y-1)):
                adjacent.append((x,y-1) )
            if not layout.isWall((x+1,y)):
                adjacent.append((x+1,y) )
            if not layout.isWall((x-1,y)):
                adjacent.append((x-1,y))
            for other in adjacent:
                if not other in dist:
                    continue
                oldDist = dist[other]
                newDist = nodeDist+1
                if newDist < oldDist:
                    dist[other] = newDist
                    queue.push(other, newDist)
        for target in allNodes:
            distances[(target, source)] = dist[target]
    return distances
项目:Berkeley-AI-PacMan-Lab-1    作者:jrios6    | 项目源码 | 文件源码
def uniformCostSearch(problem):
  "Search the node of least total cost first. "
  frontier = PriorityQueue()
  startNode = Node((problem.getStartState(), None, None))

  #Check if start node is goal
  if problem.isGoalState(startNode.state):
      return []

  for successors in problem.getSuccessors(problem.getStartState()):
      newNode = Node(successors, startNode)
      frontier.push(newNode, 0)

  explored = list()
  explored.append(startNode.state)

  while not frontier.isEmpty():
      leafNode = frontier.pop()
      if problem.isGoalState(leafNode.state):
          return leafNode.getPath()
      explored.append(leafNode.state)
      for successor in problem.getSuccessors(leafNode.state):
          newNode = Node(successor, leafNode)
          if newNode.state not in frontier.stateList and newNode.state not in explored:
              frontier.push(newNode, newNode.pathCost)
  return []
项目:Pacman-AI    作者:ryanshrott    | 项目源码 | 文件源码
def aStarSearch(problem, heuristic=nullHeuristic):
    "Search the node that has the lowest combined cost and heuristic first."

    # Use the genericSearch method, with the fringe maintained with a 
    # PriorityQueue. The cost is calculated using the provided heuristic. 
    # If no heuristic is given (such as UCS), then default to the given
    # nullHeuristic
    return genericSearch(problem, util.PriorityQueue(), heuristic)


# Abbreviations
项目:cs188_tbf    作者:loren-jiang    | 项目源码 | 文件源码
def uniformCostSearch(problem):
    """Search the node of least total cost first."""
    "*** YOUR CODE HERE ***"
    startState = problem.getStartState()
    visited = set()
    actions = []
    fringe = util.PriorityQueue()
    fringe.push((startState, None, None, actions), 0)

    while not fringe.isEmpty():
        currPath = fringe.pop()
        currState = currPath[0]
        action = currPath[1]
        stepCost = currPath[2]
        actions = currPath[3]
        if problem.isGoalState(currState):
            return actions
        if not currState in visited:
            visited.add(currState)
            paths = problem.getSuccessors(currState)
            for path in paths:
                if not path[0] in visited:
                    newActions = list(actions)
                    newActions.append(path[1])
                    fringe.push((path[0],path[1],path[2],newActions), problem.getCostOfActions(newActions))
    util.raiseNotDefined()
项目:cs188_tbf    作者:loren-jiang    | 项目源码 | 文件源码
def aStarSearch(problem, heuristic=nullHeuristic):
    """Search the node that has the lowest combined cost and heuristic first."""
    "*** YOUR CODE HERE ***"
    startState = problem.getStartState()
    visited = set()
    fringe = util.PriorityQueue()
    fringe.push((startState, ()), heuristic(startState,problem))

    while not fringe.isEmpty():
        currNode = fringe.pop()
        currState = currNode[0]
        currPlan = currNode[1]
        if problem.isGoalState(currState):
            return list(currPlan)
        if not currState in visited:
            visited.add(currState)
            paths = problem.getSuccessors(currState)
            for path in paths:
                newPlan = list(currPlan)
                newPlan.append(path[1])
                nextNode = (path[0], tuple(newPlan))
                if not path[0] in visited:
                    fringe.push(nextNode, heuristic(path[0],problem) 
                            + problem.getCostOfActions(newPlan)) 

# Abbreviations
项目:Pac-Man-Search    作者:xuefengDevelop    | 项目源码 | 文件源码
def uniformCostSearch(problem):
    """Search the node of least total cost first."""
    "*** YOUR CODE HERE ***"

    "we use PriorityQueue data structure, 'smart queue' "
    "struture and help us to find the lower cost of action"
    "use PriorityQueue to detect which route is shortest, and pop the shortest route"

    nodePriorityQueue = util.PriorityQueue()
    visited = []
    path = []
    totalCost = 0
    startNode =(problem.getStartState(),path)
    nodePriorityQueue.push((startNode),totalCost)

    "start while loop to find the correct path"

    while  nodePriorityQueue.isEmpty() is False:
        node,path = nodePriorityQueue.pop()

        visited.append(node)

        if problem.isGoalState(node):
            return path

        for successor, direction, cost in problem.getSuccessors(node) :
            if successor not in visited:
                visited.append(successor)
                newNode =(successor,path + [direction])
                nodePriorityQueue.push(newNode,problem.getCostOfActions(path + [direction]))
            if problem.isGoalState(successor):
                newNode =(successor,path + [direction])
                nodePriorityQueue.push(newNode,problem.getCostOfActions(path + [direction]))

    return None


    util.raiseNotDefined()
项目:Pac-Man-Search    作者:xuefengDevelop    | 项目源码 | 文件源码
def aStarSearch(problem, heuristic=nullHeuristic):

    """Search the node that has the lowest combined cost and heuristic first."""
    "*** YOUR CODE HERE ***"
    "it is very similar to UCS, just change the totalcost to the heuristic + cost  "
    nodePriorityQueue = util.PriorityQueue()
    visited = []
    path = []
    totalCost = heuristic(problem.getStartState(),problem)
    startNode =(problem.getStartState(),path)
    nodePriorityQueue.push((startNode),totalCost)

    "start while loop to find the correct path"

    while  nodePriorityQueue.isEmpty() is False:
        node,path = nodePriorityQueue.pop()

        visited.append(node)

        if problem.isGoalState(node):
            return path
        for successor, direction, cost in problem.getSuccessors(node) :
            if successor not in visited:
                visited.append(successor)
                newNode =(successor,path+[direction])
                totalCost = problem.getCostOfActions(path + [direction]) + heuristic(successor,problem)
                nodePriorityQueue.push(newNode,totalCost)
            if problem.isGoalState(successor):
                newNode =(successor,path + [direction])
                totalCost = problem.getCostOfActions(path + [direction]) + heuristic(successor,problem)
                nodePriorityQueue.push(newNode,totalCost)


    return None


    util.raiseNotDefined()


# Abbreviations
项目:Pacman-AI    作者:adamtache    | 项目源码 | 文件源码
def uniformCostSearch(problem):
  "Search the node of least total cost first. "
  "*** YOUR CODE HERE ***"
  frontier = util.PriorityQueue()
  visited = []
  startNode = ((problem.getStartState(), None, 0), [], 0)
  frontier.push(startNode, None)
  while not frontier.isEmpty():
    curr = frontier.pop()
    currLoc = curr[0][0]
    currDir = curr[0][1]
    currPath = curr[1]
    currCost = curr[2]
    if currLoc not in visited:
      visited.append(currLoc)
      if(problem.isGoalState(currLoc)):
        return currPath
      successors = problem.getSuccessors(currLoc)
      successorsList = list(successors)
      for i in successorsList:
        if i[0] not in visited:
          if(problem.isGoalState(i[0])):
            return currPath + [i[1]]
          newNode = (i, currPath+[i[1]], currCost + i[2])
          frontier.push(newNode, currCost + i[2])
  return []
项目:Pacman-AI    作者:adamtache    | 项目源码 | 文件源码
def aStarSearch(problem, heuristic=nullHeuristic):
  "Search the node that has the lowest combined cost and heuristic first."
  "*** YOUR CODE HERE ***"
  frontier = util.PriorityQueue()
  visited = []
  h = heuristic(problem.getStartState(), problem)
  g = 0
  f = g + h
  startingNode = (problem.getStartState(), None, g, []);
  frontier.push(startingNode, f)
  while not frontier.isEmpty():
    curr = frontier.pop()
    currLoc = curr[0]
    currDir = curr[1]
    currCost = curr[2]
    if currLoc not in visited:
      currPath = curr[3]
      visited.append(currLoc)
      successors = problem.getSuccessors(currLoc)
      successorsList = list(successors)
      for i in successorsList:
        if i[0] not in visited:
          if(problem.isGoalState(i[0])):
            return currPath + [i[1]]
          h = heuristic(i[0], problem)
          g = currCost + i[2]
          f = g + h
          newNode = (i[0], i[1], g, currPath+[i[1]])
          frontier.push(newNode, f)
  return []

# Abbreviations
项目:AI-PacMan-Projects    作者:deepeshmittal    | 项目源码 | 文件源码
def uniformCostSearch(problem):

    loc_pqueue = PriorityQueue()
    visited_node = {}
    parent_child_map = {}
    direction_list = [] 
    path_cost = 0

    start_node = problem.getStartState()
    parent_child_map[start_node] = []
    loc_pqueue.push(start_node,path_cost)

    def traverse_path(parent_node):
        while True:
            map_row = parent_child_map[parent_node]
            if (len(map_row) == 3):
                parent_node = map_row[0]
                direction = map_row[1]
                direction_list.append(direction)
            else:
                break       
        return direction_list

    while (loc_pqueue.isEmpty() == False):

        parent_node = loc_pqueue.pop()

        if (parent_node != problem.getStartState()):
            path_cost = parent_child_map[parent_node][2]

        if (problem.isGoalState(parent_node)):
            pathlist = traverse_path(parent_node)
            pathlist.reverse()
            return pathlist

        elif (visited_node.has_key(parent_node) == False):
            visited_node[parent_node] = []            
            sucessor_list = problem.getSuccessors(parent_node)
            no_of_child = len(sucessor_list)
            if (no_of_child > 0):          
                temp = 0
                while (temp < no_of_child):
                    child_nodes = sucessor_list[temp]
                    child_state = child_nodes[0];
                    child_action = child_nodes[1];
                    child_cost = child_nodes[2];
                    gvalue = path_cost + child_cost
                    if (visited_node.has_key(child_state) == False):
                        loc_pqueue.push(child_state,gvalue)
                    if (parent_child_map.has_key(child_state) == False):
                        parent_child_map[child_state] = [parent_node,child_action,gvalue]
                    else:
                        if (child_state != start_node):
                            stored_cost = parent_child_map[child_state][2]
                            if (stored_cost > gvalue):
                                parent_child_map[child_state] = [parent_node,child_action,gvalue]
                    temp = temp + 1
项目:AI-PacMan-Projects    作者:deepeshmittal    | 项目源码 | 文件源码
def uniformCostSearch(problem):

    loc_pqueue = PriorityQueue()
    visited_node = {}
    parent_child_map = {}
    direction_list = [] 
    path_cost = 0

    start_node = problem.getStartState()
    parent_child_map[start_node] = []
    loc_pqueue.push(start_node,path_cost)

    def traverse_path(parent_node):
        while True:
            map_row = parent_child_map[parent_node]
            if (len(map_row) == 3):
                parent_node = map_row[0]
                direction = map_row[1]
                direction_list.append(direction)
            else:
                break       
        return direction_list

    while (loc_pqueue.isEmpty() == False):

        parent_node = loc_pqueue.pop()

        if (parent_node != problem.getStartState()):
            path_cost = parent_child_map[parent_node][2]

        if (problem.isGoalState(parent_node)):
            pathlist = traverse_path(parent_node)
            pathlist.reverse()
            return pathlist

        elif (visited_node.has_key(parent_node) == False):
            visited_node[parent_node] = []            
            sucessor_list = problem.getSuccessors(parent_node)
            no_of_child = len(sucessor_list)
            if (no_of_child > 0):          
                temp = 0
                while (temp < no_of_child):
                    child_nodes = sucessor_list[temp]
                    child_state = child_nodes[0];
                    child_action = child_nodes[1];
                    child_cost = child_nodes[2];
                    gvalue = path_cost + child_cost
                    if (visited_node.has_key(child_state) == False):
                        loc_pqueue.push(child_state,gvalue)
                    if (parent_child_map.has_key(child_state) == False):
                        parent_child_map[child_state] = [parent_node,child_action,gvalue]
                    else:
                        if (child_state != start_node):
                            stored_cost = parent_child_map[child_state][2]
                            if (stored_cost > gvalue):
                                parent_child_map[child_state] = [parent_node,child_action,gvalue]
                    temp = temp + 1