break for next in _get_neighbors(current, theMap): if theMap[next.pos[0]][next.pos[1]] >= 0: theMap[next.pos[0]][next.pos[1]] = next.depth self.searchedNodes += 1 self.queue.sort_add(next) return self.path if __name__ == "__main__": # map_object, info = pp.generateMap2d([60,60]) map_object = pp.generateMap2d([60, 60]) start = Node( [np.where(map_object == -2)[0][0], np.where(map_object == -2)[1][0]], None, 0, 0) goal = Node( [np.where(map_object == -3)[0][0], np.where(map_object == -3)[1][0]], None, 0, 0) searcher = AstarM() searcher.search(map_object, start, goal) print("Number of visited nodes: {}".format(searcher.searchedNodes)) print("Length of path: {}".format( len(searcher.path[0]) + len(searcher.path[1]))) pp.plotMap(map_object, searcher.path)
for next in _get_neighbors(current, theMap): if theMap[next.pos[0]][next.pos[1]] == 0: theMap[next.pos[0]][next.pos[1]] = next.depth self.searchedNodes += 1 self.queue.add(next) return self.path if __name__ == "__main__": # map_object, info = pp.generateMap2d([60,60]) #np.random.seed(2) map_object = pp.generateMap2d([50, 50]) start = Node( [np.where(map_object == -2)[0][0], np.where(map_object == -2)[1][0]], None, 0, 0) goal = Node( [np.where(map_object == -3)[0][0], np.where(map_object == -3)[1][0]], None, 0, 0) searcher = DFSearch() searcher.search(map_object, start, goal) print("Number of visited nodes: {}".format(searcher.searchedNodes)) print("Length of path: {}".format( len(searcher.path[0]) + len(searcher.path[1]))) pp.plotMap(map_object, searcher.path)
from task1_ISA_GreedySearch_Euclidean import GreedySearchE from task1_ISA_GreedySearch_Manhattan import GreedySearchM from task1_ISA_Astar_Euclidean import AstarE from task1_ISA_Astar_Manhattan import AstarM BFS_Data = [] Random_Data = [] DFS_Data = [] for i in range(100): print(i) BFSAgent = BFSearch() RandomAgent = RandomSearch() DFSAgent = DFSearch() map_object = pp.generateMap2d([100, 100]) map_object2 = np.copy(map_object) map_object3 = np.copy(map_object) start = Node( [np.where(map_object == -2)[0][0], np.where(map_object == -2)[1][0]], None, 0, 0) goal = Node( [np.where(map_object == -3)[0][0], np.where(map_object == -3)[1][0]], None, 0, 0) BFSAgent.search(map_object, start, goal) RandomAgent.search(map_object2, start, goal) DFSAgent.search(map_object3, start, goal) BFS_Data.append({
"PathLenght": 0, "Expanded": 0 } for result in resultList: for key in result.keys(): if key != "AgentType" and key in analysedResults.keys(): analysedResults[key] += result[key] for key in analysedResults.keys(): if key != "AgentType" and key != "Wins": analysedResults[key] = analysedResults.get(key) / len(resultList) return analysedResults for roundIndex in range(10): searchMap = generateMap2d([100, 100]) for agent in agents: searchMapCopy = copy(searchMap) startNodeMask = np.where(searchMap == -2) startNode = [startNodeMask[0][0], startNodeMask[1][0]] goalNodeMask = np.where(searchMap == -3) goalNode = [goalNodeMask[0][0], goalNodeMask[1][0]] agent.__init__(searchMap=searchMapCopy, startPosition=startNode, goalPosition=goalNode) agentResults = agent.search() resultData[type(agent).__name__].append(agentResults) for agentKey in resultData.keys(): analysedResultData.append(analyseResults(resultData[agentKey]))