From 5af2f22a646c7a56e33cd3c011677b2c0270c64c Mon Sep 17 00:00:00 2001 From: Yurii Date: Tue, 26 Apr 2022 00:04:13 +0200 Subject: [PATCH] manchattan --- classes/bfs.py | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/classes/bfs.py b/classes/bfs.py index 7aead5a..a2400af 100644 --- a/classes/bfs.py +++ b/classes/bfs.py @@ -78,7 +78,7 @@ class BFS: if current_position[2] == 180: # jesli patrzy na polnoc if neighbours_list[0][1] not in ['wall', 'cliff_south', 'cliff_east', 'cliff_north', 'cliff_west']: if neighbours_list[0][1] == 'grass': - cost = 2 + cost = 5 elif neighbours_list[0][1] == 'sand': cost = 1 elif neighbours_list[0][1] == 'mine': @@ -87,7 +87,7 @@ class BFS: new_nodes.append(tmp) if neighbours_list[1][0] not in ['wall', 'cliff_south', 'cliff_east', 'cliff_north', 'cliff_west']: if neighbours_list[1][0] == 'grass': - cost = 2 + cost = 5 elif neighbours_list[1][0] == 'sand': cost = 1 elif neighbours_list[1][0] == 'mine': @@ -96,7 +96,7 @@ class BFS: new_nodes.append(tmp) if neighbours_list[1][2] not in ['wall', 'cliff_south', 'cliff_east', 'cliff_north', 'cliff_west']: if neighbours_list[1][2] == 'grass': - cost = 2 + cost = 5 elif neighbours_list[1][2] == 'sand': cost = 1 elif neighbours_list[1][2] == 'mine': @@ -107,7 +107,7 @@ class BFS: if current_position[2] == 90: # jesli patrzy na wschod if neighbours_list[1][2] not in ['wall', 'cliff_south', 'cliff_east', 'cliff_north', 'cliff_west']: if neighbours_list[1][2] == 'grass': - cost = 2 + cost = 5 elif neighbours_list[1][2] == 'sand': cost = 1 elif neighbours_list[1][2] == 'mine': @@ -116,7 +116,7 @@ class BFS: new_nodes.append(tmp) if neighbours_list[0][1] not in ['wall', 'cliff_south', 'cliff_east', 'cliff_north', 'cliff_west']: if neighbours_list[0][1] == 'grass': - cost = 2 + cost = 5 elif neighbours_list[0][1] == 'sand': cost = 1 elif neighbours_list[0][1] == 'mine': @@ -125,7 +125,7 @@ class BFS: new_nodes.append(tmp) if neighbours_list[2][1] not in ['wall', 'cliff_south', 'cliff_east', 'cliff_north', 'cliff_west']: if neighbours_list[2][1] == 'grass': - cost = 2 + cost = 5 elif neighbours_list[2][1] == 'sand': cost = 1 elif neighbours_list[2][1] == 'mine': @@ -136,7 +136,7 @@ class BFS: if current_position[2] == 0: # jesli patczy na poludzie if neighbours_list[2][1] not in ['wall', 'cliff_south', 'cliff_east', 'cliff_north', 'cliff_west']: if neighbours_list[2][1] == 'grass': - cost = 2 + cost = 5 elif neighbours_list[2][1] == 'sand': cost = 1 elif neighbours_list[2][1] == 'mine': @@ -145,7 +145,7 @@ class BFS: new_nodes.append(tmp) if neighbours_list[1][2] not in ['wall', 'cliff_south', 'cliff_east', 'cliff_north', 'cliff_west']: if neighbours_list[1][2] == 'grass': - cost = 2 + cost = 5 elif neighbours_list[1][2] == 'sand': cost = 1 elif neighbours_list[1][2] == 'mine': @@ -154,7 +154,7 @@ class BFS: new_nodes.append(tmp) if neighbours_list[1][0] not in ['wall', 'cliff_south', 'cliff_east', 'cliff_north', 'cliff_west']: if neighbours_list[1][0] == 'grass': - cost = 2 + cost = 5 elif neighbours_list[1][0] == 'sand': cost = 1 elif neighbours_list[1][0] == 'mine': @@ -165,7 +165,7 @@ class BFS: if current_position[2] == 270: # jesli patczy na wschod if neighbours_list[1][0] not in ['wall', 'cliff_south', 'cliff_east', 'cliff_north', 'cliff_west']: if neighbours_list[1][0] == 'grass': - cost = 2 + cost = 5 elif neighbours_list[1][0] == 'sand': cost = 1 elif neighbours_list[1][0] == 'mine': @@ -174,7 +174,7 @@ class BFS: new_nodes.append(tmp) if neighbours_list[2][1] not in ['wall', 'cliff_south', 'cliff_east', 'cliff_north', 'cliff_west']: if neighbours_list[2][1] == 'grass': - cost = 2 + cost = 5 elif neighbours_list[2][1] == 'sand': cost = 1 elif neighbours_list[2][1] == 'mine': @@ -183,7 +183,7 @@ class BFS: new_nodes.append(tmp) if neighbours_list[0][1] not in ['wall', 'cliff_south', 'cliff_east', 'cliff_north', 'cliff_west']: if neighbours_list[0][1] == 'grass': - cost = 2 + cost = 5 elif neighbours_list[0][1] == 'sand': cost = 1 elif neighbours_list[0][1] == 'mine': @@ -203,8 +203,9 @@ class BFS: def graphsearch(self, fringe, explored, succ, goaltest): - # def manhattan(state, target_state): - # return abs(state.get_x() - target_state.get_x()) + abs(state.get_y() - target_state.get_y()) + def manhattan(state, target_state): + return abs(state[0] - target_state[0]) + abs(state[1] - target_state[1]) + self.window.pause(True) positiont_at_beginning = [self.agent.position_x, self.agent.position_y, self.agent.rotation_degrees] # x, y, gdzie_patczy @@ -247,7 +248,7 @@ class BFS: neighbours_list_of_our_node = self.successor(tmp_node_position) # lista możliwych akcij - print(neighbours_list_of_our_node) + #print(neighbours_list_of_our_node) for node_ in neighbours_list_of_our_node: # jesli pozucja wezla nie jest w fringe i nie jest w visited @@ -256,3 +257,9 @@ class BFS: x = node.Node(tmp_node, node_[0], node_[1], node_[2]) # action heapq.heappush(fringe, (counter, x)) self.window.draw_search([self.agent.position_x, self.agent.position_y], [node_[1][0], node_[1][1]], self.agent.current_map.tile_size, self.agent.current_map, self.agent) + + p = manhattan(node_[1], goaltest) + node_[2] + # print(f'Mancgeten = {p}') + + +