From 91693d2b19d0c5cdfb0159dd6f190564e80200bf Mon Sep 17 00:00:00 2001 From: Gabriela Piekarska Date: Thu, 9 Jun 2022 10:12:52 +0200 Subject: [PATCH] Update 'src/board.py' MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit łączenie z algorytmem genetycznym --- src/board.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/board.py b/src/board.py index 4261d97..87e1966 100644 --- a/src/board.py +++ b/src/board.py @@ -7,6 +7,7 @@ import pygame import snn import joblib import os +import gen_algorithms screen = [] objectArray = [] @@ -176,6 +177,7 @@ def kb_listen(objectArray, gridLength, path): agent = objectArray[0] #agent.move(gridLength, path) + if __name__ == '__main__': pygame.init() # inicjalizacja modułów, na razie niepotrzebna gridSize = 15 @@ -222,6 +224,39 @@ if __name__ == '__main__': pathPos = 0 nextCheckpoint = 1 + +#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 + 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 + + population_set = gen_algorithms.generate_routes(names, routes_num) + list_of_sums = gen_algorithms.sums_for_all_routes(population_set, houses_info) + progenitor_list = gen_algorithms.selection(population_set, list_of_sums) + new_population_set = gen_algorithms.population_mating(progenitor_list) + final_mutated_population = gen_algorithms.mutate_population(new_population_set) + final_route = [-1, np.inf, np.array([])] # format listy + for i in range(400): + list_of_sums = gen_algorithms.sums_for_all_routes(final_mutated_population, houses_info) + # zapisujemy najlepsze rozwiązanie + if list_of_sums.min() < final_route[1]: + final_route[0] = i + final_route[1] = list_of_sums.min() + final_route[2] = np.array(final_mutated_population)[list_of_sums.min() == list_of_sums] + + progenitor_list = gen_algorithms.selection(population_set, list_of_sums) + new_population_set = gen_algorithms.population_mating(progenitor_list) + + final_mutated_population = gen_algorithms.mutate_population(new_population_set) + print("tutaj") + print(final_route) + print(houses_info) # tu nazwa domu i lokalizacja + while True: agent_x, agent_y = astarPath[pathPos] checkpoint_x, checkpoint_y = checkpoints[nextCheckpoint]