1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
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
|