Partition du réseau
Le nombre de zones correspond au nombre de drones étudié. Le code contient des scénarios allant d'un à quarante-cinq drones et permet de filtrer les propositions par coût ou durée de mission.
odd_nodes = [
node for node in G1.nodes
if G1.degree(node) % 2 == 1
]
for (u, v), dist in sorted_pairs:
if u not in used and v not in used:
matching.add((u, v))
used.add(u)
used.add(v)
euler_circuit = list(nx.eulerian_circuit(G_aug))
Prototype d'aide à la décision pour préparer le survol de Montréal par des drones et comparer des plans de déneigement à partir du réseau routier réel.
ERO1 applique la recherche opérationnelle à un cas concret : organiser une reconnaissance aérienne, puis répartir les rues à déneiger en tenant compte des distances, du temps et du coût des véhicules.
Le rendu comporte deux études complémentaires. La première prépare des circuits de drones couvrant le réseau routier de Montréal. La seconde construit et compare des tournées de déneigeuses sur cinq arrondissements : Outremont, Verdun, Anjou, Rivière-des-Prairies–Pointe-aux-Trembles et Le Plateau-Mont-Royal.
Le réseau routier est chargé depuis OpenStreetMap avec OSMnx, puis représenté sous forme de graphe. Les deux études réutilisent cette base pour produire des parcours et des indicateurs destinés à comparer plusieurs configurations.
OpenStreetMap et graphes
Zones et circuits de drones
Tournées, temps et coûts
Le programme découpe le graphe de Montréal en zones géographiques avec K-means. Lorsqu'une zone n'est pas connexe, il recherche des liaisons pour réunir ses composantes avant de calculer un circuit de couverture.
Le nombre de zones correspond au nombre de drones étudié. Le code contient des scénarios allant d'un à quarante-cinq drones et permet de filtrer les propositions par coût ou durée de mission.
Pour chaque zone, les sommets de degré impair sont appariés par une méthode gloutonne. Le graphe augmenté est ensuite parcouru avec un circuit eulérien afin de couvrir toutes ses rues.
Le programme génère des cartes intermédiaires, le circuit obtenu, les distances par drone et un fichier récapitulatif des scénarios.
Dans ce second volet, une rue est considérée comme une unité de travail. Le programme calcule les plus courts chemins entre les extrémités des rues et conserve ces distances en cache pour éviter de répéter les calculs les plus coûteux.
Les méthodes employées sont des heuristiques : elles cherchent rapidement une solution exploitable, mais ne garantissent pas l'optimum global. Pour le drone, le partitionnement géographique peut produire des zones déséquilibrées et l'appariement glouton reste approximatif. Les liaisons ajoutées utilisent aussi des distances directes sans modéliser les contraintes réelles de vol.
Pour le déneigement, chaque exécution compare des flottes homogènes d'un seul type de véhicule. Le rapport final identifie donc la gestion d'une flotte hétérogène comme une amélioration à apporter au prototype.
Le rendu est signé par une équipe de cinq étudiants. La répartition détaillée des tâches n'étant pas documentée, je présente les études du drone et des déneigeuses comme un travail collectif, sans m'attribuer un module particulier.
Ce projet m'a permis de relier un problème concret à une modélisation en graphe, puis de comparer des scénarios plutôt que de chercher une réponse unique. Il m'a également familiarisé avec les compromis entre qualité d'une solution, temps de calcul et limites d'un modèle.