Update 'src/board.py'

działający kod :D
This commit is contained in:
Gabriela Piekarska 2022-06-09 21:39:54 +02:00
parent b7402c8e49
commit 898d4687b4

View File

@ -205,32 +205,13 @@ if __name__ == '__main__':
height = 530
screen = pygame.display.set_mode((width, height)) # ustalanie rozmiarów okna
startPos = (0, 0)
finalPos = (14, 14)
astarPath = astar.aStar(weightsMap, collisionsMap, startPos, finalPos)
checkpoints = [startPos]
for house in houses:
checkpoints.append((house.pos.x, house.pos.y))
checkpoints.append(finalPos)
astarPath = []
for i in range(len(checkpoints) - 1):
path = astar.aStar(weightsMap, collisionsMap, checkpoints[i], checkpoints[i + 1])
if i == 0:
astarPath += path
else:
astarPath += path[1:]
print(astarPath)
pathPos = 0
nextCheckpoint = 1
#od tąd podstawiony algorytm genetyczny
# od tad proboje
# parametry
num_of_houses = 8 # ilość domków
routes_num = 40 # ilość ścieżek, które będziemy generować
# rate = 0.3 # do mutacji, by liczby były ładniejsze
houses_coordinates = [[7, 4], [3, 10], [8, 10], [4, 5], [1, 2], [10, 4], [13, 14], [6, 9]] # generowanie losowych współrzędnych między 1, a 9
houses_coordinates = [[7, 4], [3, 10], [8, 10], [4, 5], [1, 2], [10, 4], [13, 14],
[6, 9]] # generowanie losowych współrzędnych między 1, a 9
names = np.array(['Dom A', 'Dom B', 'Dom C', 'Dom D', 'Dom E', 'Dom F', 'Dom G', 'Dom H']) # nazwy domów
houses_info = {x: y for x, y in
zip(names, houses_coordinates)} # zawiera nazwę domu i jego współrzędne X, Y - słownik
@ -253,10 +234,39 @@ if __name__ == '__main__':
new_population_set = gen_algorithms.population_mating(progenitor_list)
final_mutated_population = gen_algorithms.mutate_population(new_population_set)
print("tutaj")
print(final_route) # ostateczny wynik
print(final_route[2][0][0]) # żeby wyciągnąć z wyniku nazwę domu, który jest na i-tym miejscy trzeba wziąć final_route[2][0][i]
print(houses_info[final_route[2][0][0]]) # podstawiając jako argument nazwę domu z final_route dostajemy jego współrzędne x, y
print("Najlepsza ścieżka według algorytmu genetycznego: ")
print(final_route)
print(final_route[2][0][
0]) # żeby wyciągnąć z wyniku nazwę domu, który jest na i-tym miejscy trzeba wziąć final_route[2][0][i]
print(houses_info[final_route[2][0][0]][0]) # podstawiając jako argument nazwę domu z final_route dostajemy jego współrzędne x, y
houses_gen = [House(f'dom-{i}', pos) for i, pos in enumerate([Position(x, y) for x, y in [ # nasze współrzędne w odpowiedniej kolejności z genetycznego
(houses_info[final_route[2][0][0]][0], houses_info[final_route[2][0][0]][1]), (houses_info[final_route[2][0][1]][0], houses_info[final_route[2][0][1]][1]),
(houses_info[final_route[2][0][2]][0], houses_info[final_route[2][0][2]][1]), (houses_info[final_route[2][0][3]][0], houses_info[final_route[2][0][3]][1]),
(houses_info[final_route[2][0][4]][0], houses_info[final_route[2][0][4]][1]), (houses_info[final_route[2][0][5]][0], houses_info[final_route[2][0][5]][1]),
(houses_info[final_route[2][0][6]][0], houses_info[final_route[2][0][6]][1]), (houses_info[final_route[2][0][7]][0], houses_info[final_route[2][0][7]][1])
]])]
startPos = (0, 0)
finalPos = (14, 14)
astarPath = astar.aStar(weightsMap, collisionsMap, startPos, finalPos)
checkpoints = [startPos]
for house in houses_gen:
checkpoints.append((house.pos.x, house.pos.y)) #tutaj dodać pozycje z genetycznego???
checkpoints.append(finalPos)
astarPath = []
for i in range(len(checkpoints) - 1):
path = astar.aStar(weightsMap, collisionsMap, checkpoints[i], checkpoints[i + 1])
if i == 0:
astarPath += path
else:
astarPath += path[1:]
print(astarPath)
pathPos = 0
nextCheckpoint = 1
while True:
agent_x, agent_y = astarPath[pathPos]