diff options
Diffstat (limited to 'ero1/src/helper/main_parcours.py')
| -rw-r--r-- | ero1/src/helper/main_parcours.py | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/ero1/src/helper/main_parcours.py b/ero1/src/helper/main_parcours.py new file mode 100644 index 0000000..02b92de --- /dev/null +++ b/ero1/src/helper/main_parcours.py @@ -0,0 +1,137 @@ +import time +from src.helper.debug_printer import debug_print +from src.helper.export_cost import export_cost +from src.helper.export_to_kml import export_to_kml +from src.deneigeuses.hierholzer import process_hierholzer +from src.deneigeuses.directed_cpp import oriented_cpt +from src.helper.display_graph import display_graph +from src.helper.output_debug import output_debug +from src.generation.graph_generation import generate_graph +from src.helper.color_suburbs import display_suburbs_with_colors +from src.helper.prune_maps import prune_verdun +import networkx as nx + + +# IMPORT FOR YAML +from src.helper.export_import_yaml import load_paths_from_yaml +from src.helper.partitions import partition +from src.generation.suburb_snowplow_generation import generate_quartiers_from_path + +# IMPORT FOR DRONE +from src.drone.postier_chinoisV2 import final_path +# from src.drone.postier_chinoisV2 import postier_chinois_process + +def main_parcours(debug_mode=False, place_name=None, reversed_legend=None): + """ + Fonction principale pour le parcours du graphe. + Parameters: + debug_mode : Indique si le mode debug est activé ou non. + place_name : Le nom de la place à parcourir. + reversed_legend : Si la légende est inversée. + """ + + #output_debug(None, None, None, debug_mode) + + parcours_deneigeuses = [] + # ---------------------- GENERATION DU GRAPHE --------------------------- + + debug_print("Génération du graph de Montréal en cours...", debug_mode) + graph = generate_graph("Montréal, Québec, Canada", debug_mode) + debug_print("Graph généré avec succès.", debug_mode) + + # ---------------------- GENERATION DU GRAPHE --------------------------- + + # ---------------------- PARCOURS - DRONE --------------------------- + + start_time_drone = time.time() + + #debug_print("Parcours du drone dans chaque arrondissement", debug_mode) + # - Load from the saved file directly + parcours_drone = load_paths_from_yaml(graph, filename="paths/paths-PostierChinoisV1.yml") # Nom à rajouter du coup + finalPath = final_path(graph, parcours_drone) + + # - Postier Chinois V{?} + # parcours_drone, finalPath = postier_chinois_process(graph, debug_mode) + + end_time_drone = time.time() + + # ---------------------- PARCOURS - DRONE --------------------------- + + # display_suburbs_with_colors(graph, parcours_drone, connections) + + # ---------------------- RECUPERATION DU PARCOURS DU DRONE --------------------------- + temp = [] + # if place_name in parcours_drone: + # debug_print("Parcours du drone dans l'arrondissement de " + place_name, debug_mode) + # for elt in ["Outremont", "Verdun", "Anjou", "Rivière-des-Prairies–Pointe-aux-Trembles", "Le Plateau-Mont-Royal"] : + # if elt in parcours_drone: + # print(elt, len(parcours_drone[elt])) + # temp.extend(parcours_drone[elt]) + # else: + # print("Arrondissement non trouvé:", elt) + # print("Total", len(temp)) + # parcours_drone = temp + # else: + # debug_print("Parcours du drone dans l'arrondissement de " + place_name + " non trouvé", debug_mode) + + # ---------------------- RECUPERATION DU PARCOURS DU DRONE --------------------------- + + #debug_print("Etablissement de connections entre arrondissement :", debug_mode) + #connections = connect_circuits(graph, parcours_drone) + + #output_debug(graph, parcours_drone, connections, debug_mode) + + # ---------------------- PARCOURS - DENEIGEUSE --------------------------- + + # G_partition = generate_quartiers_from_path(parcours_drone, graph, suburb_list=["Outremont", "Verdun", "Anjou", "Rivière-des-Prairies–Pointe-aux-Trembles", "Le Plateau-Mont-Royal"], debug_mode=True) + # partitions = partition(G_partition, 5, debug_mode=True) + + # display_graph(graph, "Test 1", reversed_legend, parcours_drone, None, False) + + start_time_deneigeuse = time.time() + + # TEMP FIX + # parcours_deneigeuse = parcours_drone + + ## Postier chinois qui fonctionne que sur un graph fortement connexe + + verdun = generate_graph("Verdun, Montreal, Canada", debug_mode=debug_mode) + # verdun = prune_verdun(verdun) + parcours_deneigeuse = oriented_cpt(verdun, graph, debug_mode) + + # for elt in partitions: + # drone_edges = [(u, v) for u, v in elt.edges()] + # parcours_deneigeuses.append(process_hierholzer(graph, drone_edges, debug_mode)) + # parcours_deneigeuse = process_hierholzer(graph, parcours_drone, debug_mode) + end_time_deneigeuse = time.time() + + # ---------------------- PARCOURS - DENEIGEUSE --------------------------- + + #display_graph(graph, "Test 2", reversed_legend, parcours_deneigeuse, None, False) + + # ---------------------- EXPORT COST --------------------------- + + # parcours_deneigeuses.append(parcours_deneigeuse) + for elt in ["Outremont", "Verdun", "Anjou", "Rivière-des-Prairies–Pointe-aux-Trembles", "Le Plateau-Mont-Royal"] : + if elt in parcours_drone: + print(elt, len(parcours_drone[elt])) + temp.extend(parcours_drone[elt]) + else: + print("Arrondissement non trouvé:", elt) + print("Total", len(temp)) + parcours_drone = temp + + if "verdun" in place_name.lower(): + export_cost(parcours_drone, parcours_deneigeuses, graph, debug_mode, end_time_deneigeuse - start_time_deneigeuse, end_time_drone - start_time_drone) + else: + print("/!\\ Exportation du coût du parcours désactivée : Seul Verdun est supporté") + + # ---------------------- EXPORT COST --------------------------- + + # ---------------------- EXPORT TO KML --------------------------- + + export_to_kml(parcours_deneigeuses, finalPath, graph, debug_mode) + + # ---------------------- EXPORT TO KML --------------------------- + + return True |
