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
|
return manhattan_distance
|
||||||
|
|
||||||
|
|
||||||
def get_cost_for_plant(plant_name):
|
'''def get_cost_for_plant(plant_name):
|
||||||
plant_costs = {
|
plant_costs = {
|
||||||
"pszenica": 7,
|
"pszenica": 7,
|
||||||
"kukurydza": 9,
|
"kukurydza": 9,
|
||||||
@ -43,7 +43,7 @@ def get_cost_for_plant(plant_name):
|
|||||||
else:
|
else:
|
||||||
# Jeśli nazwa rośliny nie istnieje w słowniku, zwróć domyślną wartość
|
# Jeśli nazwa rośliny nie istnieje w słowniku, zwróć domyślną wartość
|
||||||
return 0
|
return 0
|
||||||
|
'''
|
||||||
|
|
||||||
def A_star(istate, pole, goalTreasure):
|
def A_star(istate, pole, goalTreasure):
|
||||||
# goalTreasure = (random.randint(0,NUM_X-1), random.randint(0,NUM_Y-1))
|
# 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
|
elem = elem.parent
|
||||||
for node, action in path:
|
for node, action in path:
|
||||||
# Obliczanie kosztu ścieżki dla każdego pola i wyświetlanie
|
# 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_plant_name_and_cost_from_coordinates(child_state['x'], child_state['y'], pole)
|
||||||
plant_cost = get_cost_for_plant(plant_name)
|
|
||||||
if action == "left" or action == "right": # Liczenie kosztu tylko dla pól nie będących obrotami
|
if action == "left" or action == "right": # Liczenie kosztu tylko dla pól nie będących obrotami
|
||||||
total_cost += obrot
|
total_cost += obrot
|
||||||
else:
|
else:
|
||||||
@ -97,9 +96,9 @@ def A_star(istate, pole, goalTreasure):
|
|||||||
child.action = resp[0]
|
child.action = resp[0]
|
||||||
|
|
||||||
# Pobranie nazwy rośliny z danego slotu na podstawie współrzędnych
|
# 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
|
# 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":
|
if child.action == "left" or child.action == "right":
|
||||||
child.g = elem.g + obrot
|
child.g = elem.g + obrot
|
||||||
@ -130,15 +129,15 @@ def A_star(istate, pole, goalTreasure):
|
|||||||
return False
|
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
|
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
|
slot = pole.slot_dict[(x, y)] # Pobranie slotu na podstawie współrzędnych
|
||||||
if slot.plant: # Sprawdzenie, czy na slocie znajduje się roślina
|
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:
|
else:
|
||||||
return None # jeśli na slocie nie ma rośliny
|
return 0 # jeśli na slocie nie ma rośliny
|
||||||
else:
|
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,
|
#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]
|
child.action = resp[0]
|
||||||
|
|
||||||
# Pobranie nazwy rośliny z danego slotu na podstawie współrzędnych
|
# 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)
|
|
||||||
|
|
||||||
# Obliczenie kosztu ścieżki dla dziecka
|
# Obliczenie kosztu ścieżki dla dziecka
|
||||||
child.g = elem.g + plant_cost
|
child.g = elem.g + plant_cost
|
||||||
|
Loading…
Reference in New Issue
Block a user