This: -simplified cost taking for A*
This commit is contained in:
parent
eb17e42686
commit
e448c80739
23
AStar.py
23
AStar.py
@ -27,7 +27,7 @@ def heuristic(state, goal):
|
||||
return manhattan_distance
|
||||
|
||||
|
||||
def get_cost_for_plant(plant_name):
|
||||
'''def get_cost_for_plant(plant_name):
|
||||
plant_costs = {
|
||||
"pszenica": 7,
|
||||
"kukurydza": 9,
|
||||
@ -43,7 +43,7 @@ def get_cost_for_plant(plant_name):
|
||||
else:
|
||||
# Jeśli nazwa rośliny nie istnieje w słowniku, zwróć domyślną wartość
|
||||
return 0
|
||||
|
||||
'''
|
||||
|
||||
def A_star(istate, pole, goalTreasure):
|
||||
# goalTreasure = (random.randint(0,NUM_X-1), random.randint(0,NUM_Y-1))
|
||||
@ -79,8 +79,7 @@ def A_star(istate, pole, goalTreasure):
|
||||
elem = elem.parent
|
||||
for node, action in path:
|
||||
# Obliczanie kosztu ścieżki dla każdego pola i wyświetlanie
|
||||
plant_name = get_plant_name_from_coordinates(node.state['x'], node.state['y'], pole)
|
||||
plant_cost = get_cost_for_plant(plant_name)
|
||||
plant_cost = get_plant_name_and_cost_from_coordinates(child_state['x'], child_state['y'], pole)
|
||||
if action == "left" or action == "right": # Liczenie kosztu tylko dla pól nie będących obrotami
|
||||
total_cost += obrot
|
||||
else:
|
||||
@ -97,9 +96,9 @@ def A_star(istate, pole, goalTreasure):
|
||||
child.action = resp[0]
|
||||
|
||||
# Pobranie nazwy rośliny z danego slotu na podstawie współrzędnych
|
||||
plant_name = get_plant_name_from_coordinates(child_state['x'], child_state['y'], pole)
|
||||
plant_cost = get_plant_name_and_cost_from_coordinates(child_state['x'], child_state['y'], pole)
|
||||
# Pobranie kosztu dla danej rośliny
|
||||
plant_cost = get_cost_for_plant(plant_name)
|
||||
#plant_cost = get_cost_for_plant(plant_name)
|
||||
|
||||
if child.action == "left" or child.action == "right":
|
||||
child.g = elem.g + obrot
|
||||
@ -130,15 +129,15 @@ def A_star(istate, pole, goalTreasure):
|
||||
return False
|
||||
|
||||
|
||||
def get_plant_name_from_coordinates(x, y, pole):
|
||||
def get_plant_name_and_cost_from_coordinates(x, y, pole):
|
||||
if (x, y) in pole.slot_dict: # Sprawdzenie, czy podane współrzędne znajdują się na polu
|
||||
slot = pole.slot_dict[(x, y)] # Pobranie slotu na podstawie współrzędnych
|
||||
if slot.plant: # Sprawdzenie, czy na slocie znajduje się roślina
|
||||
return slot.plant.nazwa # Zwrócenie nazwy rośliny na slocie
|
||||
return slot.plant.stan.koszt # Zwrócenie nazwy rośliny na slocie
|
||||
else:
|
||||
return None # jeśli na slocie nie ma rośliny
|
||||
return 0 # jeśli na slocie nie ma rośliny
|
||||
else:
|
||||
return None # jeśli podane współrzędne są poza polem
|
||||
return 0 # jeśli podane współrzędne są poza polem
|
||||
|
||||
|
||||
#to ogólnie identyczna funkcja jak w BFS ale nie chciałam tam ruszać, żeby przypadkiem nie zapsuć do BFS,
|
||||
@ -216,9 +215,7 @@ def A_star2(istate, pole, goalTreasure):
|
||||
child.action = resp[0]
|
||||
|
||||
# Pobranie nazwy rośliny z danego slotu na podstawie współrzędnych
|
||||
plant_name = get_plant_name_from_coordinates(child_state['x'], child_state['y'], pole)
|
||||
# Pobranie kosztu dla danej rośliny
|
||||
plant_cost = get_cost_for_plant(plant_name)
|
||||
plant_cost = get_plant_name_and_cost_from_coordinates(child_state['x'], child_state['y'], pole)
|
||||
|
||||
# Obliczenie kosztu ścieżki dla dziecka
|
||||
child.g = elem.g + plant_cost
|
||||
|
Loading…
Reference in New Issue
Block a user