Desbordes Xavier Joly Alban CFA M Rapport d’analyse Road to San Francisco Introduction : Le but de ce projet est la modélisation et la simulation d’un réseau routier et de sa circulation urbaine. Ce réseau est un réseau moderne dont on défini les limites et les fonctionnalités. Nous avons opté pour la modélisation d’un réseau routier basé sur le modèle américain, et plus précisément d’une partie de la ville de San Francisco. Nous retrouverons dans ce modèle les différentes caractéristiques d’un réseau routier mais dans une version limitée. Ces délimitations seront décrites dans la suite de ce rapport ainsi que les points forts sur lesquels nous souhaitons nous appuyer pour mettre en avant une réflexion sur la différence entre le modèle américain et le modèle européen basé. Nous présenterons aussi dans ce rapport un premier diagramme des classes, le dictionnaire de données, le diagramme de cas d’utilisation du logiciel, le manuel utilisateur ainsi que le compte rendu de nos travaux et des difficultés rencontrées. Sommaire : Introduction : ........................................................................................................................................ 2 Sommaire : ........................................................................................................................................... 3 Diagramme de cas d’utilisation : ......................................................................................................... 4 Diagramme de classe : ......................................................................................................................... 6 Dictionnaire des données : ................................................................................................................... 7 Détail du diagramme de classe : .......................................................................................................... 9 Manuel Utilisateur : ........................................................................................................................... 12 Objectif du logiciel......................................................................................................................... 12 Particularités du réseau routier ....................................................................................................... 12 1 Les routes ........................................................................................................................... 12 2 Les véhicules ...................................................................................................................... 12 3 Les carrefours ..................................................................................................................... 13 4 Le tramway ........................................................................................................................ 13 Interface Graphique et Utilisation du logiciel ................................................................................ 13 1 Interface du logiciel ........................................................................................................... 13 2 Utilisation du logiciel ......................................................................................................... 15 a) Générer un trafic .................................................................................................................... 15 b) Fermer une route .................................................................................................................... 16 c) Remplacer un carrefour par un rond point ............................................................................. 16 Compte rendu : ................................................................................................................................... 17 Nos choix ....................................................................................................................................... 17 Difficultés rencontrées ................................................................................................................... 18 Diagramme de cas d’utilisation : Voici les cas d’action de l’utilisateur sur le système modélisé : CréerVéhicule : L’utilisateur peut créer, à partir d’un point de « respawn », un véhicule de type moto, voiture ou camion. Il spécifiera si il le souhaite le point d’arrivée du véhicule ou celui-ci sera choisi aléatoirement par le système. Par défaut les catégories et quelques véhicules seront prédéfinis. Il aura la possibilité de choisir un véhicule parmi la liste prédéfinie et de le mettre en circulation sur le réseau routier de « San Francisco » BloquerRoute : L’utilisateur peut en cliquant sur une route bloquer la circulation sur celle-ci. Il aura le choix entre la création de travaux ou la génération d’un accident de la route. Le résultat sera le même, il entrainera le blocage complet de la route et les véhicules présents dessus seront bloqués. Les véhicules dont leur itinéraire devait passer par cette route seront réorientés vers un nouvel itinéraire évitant cette portion de route bloquée. RemettreEnServiceRoute : L’utilisateur peut, toujours par un clique sur une portion de route, remettre la route qui était dans un état « en travaux » ou « accident de la route » en service. Le poids de cette route est à nouveau recalculé. CréerPanneElectricité : L’utilisateur peut générer une panne d’électricité générale entrainant le disfonctionnement des feux rouges. La règle de la priorité à droite est alors appliquée. L’intérêt de cette fonction est de voir l’influence d’un tel événement sur le réseau routier modélisé. TransformerIntersection : L’intérêt de cette fonction est de modifier une intersection existante soit d’un carrefour en un rond point ou inversement. L’utilité de cette fonction est de permettre de modéliser le passage d’un système « américain » à un système « européen » et de voir les conséquences de la mise en place d’un rond point sur un tel schéma urbain (le rond point permettant de faire demi-tour, contrairement au système avec des carrefours). ModifierCaractRoute : L’utilisateur peut, en cliquant sur une route, modifier l’état de la route. Il peut influer sur le coefficient de la pente de la route ainsi que sa longueur. Ces modifications entraineront un recalcule du poids de la route qui varie en fonction de ces paramètres. ModifierEtatFeu : Lorsqu’un utilisateur clique sur un carrefour il pourra visualiser les feux qui lui sont associés. L’état d’un feu en particulier sera modifiable et l’utilisateur visualisera ainsi l’impact de ce changement sur le réseau routier. Diagramme de classe : Dictionnaire des données : Mnémonique Feu MarcheFeu() ArretFeu() Carrefour NbSorties GererPassage() BloquerCarrefour() Rond Point GererPassage() Graphe Intersection NomIntersection CoordonneeX CoordonneeY Respawn NomSpawn CoordonneeX CoordonneeY Image CreerVehicule() Reseau NomReseau DiagnosticReseau() PanneElectricité() Reinitialisation() Route Poids EtatRoute NomRoute CoordonneeX CoordonneeY Libellé Classe objet représentant un feu tricolore Fonction permettant de remettre en marche un feu tricolore Fonction permettant d’arrêter le fonctionnement d’un feu tricolore Classe objet modélisant un carrefour Nombre de sorties d’un carrefour Fonction gérant le passage des véhicules dans un carrefour Fonction permettant de rendre un carrefour inutilisable Classe objet modélisant un rond point Fonction gérant le passage des véhicules dans un rond point Classe objet regroupant les intersections Nom caractérisant une intersection Coordonnée X d’une intersection Coordonnée Y d’une intersection Classe objet représentant un point de départ ou d’arrivée d’un véhicule Nom d’un point de départ/arrivée Coordonnée X d’une intersection Coordonnée Y d’une intersection Image du respawn Fonction permettant de créer un véhicule à partir d’un point de respawn Classe objet modélisant le plateau du programme Nom du réseau routier Fonction permettant de donner l’état du réseau à un instant T Permet de simuler une panne générale d’électricité et par conséquent d’éteindre tous les feux tricolores. Retour à la normale. Les feux sont à nouveau en fonctionnement Classe objet modélisant une route du système routier du programme Poids de la route. Ce poids est pris en compte dans l’algorithme du plus court chemin. Etat de la route. Par exemple, bloquée. Nom de la route Coordonnée X d’une route Coordonnée Y d’une route Type Classe Contraintes Méthode Méthode Classe Entier >0 String Entier Entier Classe <> ‘’ >=0 >=0 String Entier Entier Image Méthode <> ‘’ >=0 >=0 Méthode String Méthode Méthode Méthode Classe Entier >0 Entier String Entier Entier >0 >=0 >=0 CoeffPente LongueurRoute CalculPoids() Véhicule NomVehicule TypeVehicule Image RoutePrecedente Poids CalculPoidsVehic() CalculItineraire() Circuler() Tramway Circuler() Coefficient de la pente de la route. Paramètre pris en compte dans le calcul du poids de la pente Longueur de la route Fonction permettant de calculer le poids d’une route Classe objet modélisant un véhicule Nom d’un véhicule Catégorie de véhicule Image associée au véhicule Ancienne route empruntée par le véhicule. Pour empêcher le véhicule d’effectuer un demi tour sur un carrefour. Poids associé à un véhicule Méthode permettant de calculer le poids associé à un véhicule Méthode permettant de calculer le plus court chemin d’un véhicule Méthode faisant circuler les véhicules en respectant les contraintes et règles de notre réseau. Classe objet modélisant un tramway Méthode permettant de lancer le tramway dans la circulation Entier >=0 Entier Méthode >0 Classe String Entier Image Objet Entier Méthode Méthode Méthode Classe <> ‘’ >=0 >0 Détails du diagramme de classe : Détail du diagramme classe par classe et association par association : Classe Respawn : Cette classe correspond aux points de départ et d’arrivée d’un véhicule. Le trafic sera généré uniquement à partir de ces points. Association Respawn Véhicule : Il existe deux association partant de la classe Respawn et allant vers véhicule qui modélise le fait qu’un véhicule n’a qu’un seul point de départ et un seul point d’arrivée, mais qu’un Respawn peut être le point de départ et d’arrivée de plusieurs véhicules. Classe IG Principale : Cette classe gère l’interface du logiciel. C’est dans cette interface que l’on retrouvera tous les éléments nécessaires au fonctionnement du programme. Avec notamment intégration du plateau « Réseau », visualisation des véhicules sur le plateau, et les principales options proposées à l’utilisateur comme la modification d’un carrefour en rond point ou vice et versa. Association IG Principale Réseau : Un réseau à une seule et unique interface graphique et cette interface ne gère qu’un seul et unique réseau. Classe Réseau : Cette classe modélise le réseau routier de la ville de « San Francisco ». La particularité de ce réseau est qu’à la base il ne comprend que des intersections avec priorité à droite ou gestion des feux tricolore. L’intérêt de notre modélisation sera l’ajout de rond point à la place de carrefour existant et d’observer l’impact de ces changements sur le modèle de réseau routier américain. Association Réseau Respawn : Le réseau routier est composé de plusieurs respawns qui correspondent aux points de départ et d’arrivée des véhicules, et un respawn est propre à un réseau routier. Association Réseau Graphe Intersection : Le réseau routier est composé d’un ensemble de graphes d’intersections qui pourront être des carrefours ou des ronds points, et un graphe d’intersection n’appartient qu’à un seul réseau. Association Réseau Route : Un réseau routier est composé de plusieurs routes et une route n’est présente qu’une seule fois dans le réseau représenté du fait qu’elle possède un nom qui lui est propre et qui la différencie des autres. Classe Feu : Cette classe modélise les feux tricolores et leur fonctionnement. On peut allumer un feu tricolore ou l’arrêter. Classe Carrefour : Cette classe permet la modélisation des carrefours dans le réseau routier que nous simulons. Un carrefour peut posséder des feux rouges ou non mais dans tous les cas, s’il n’y a pas de feux tricolores la règle de la priorité à droite s’applique. Dans cette classe est présent les fonctions nécessaires au fonctionnement du carrefour avec l’implémentation des règles de priorités. Cette classe hérite de la classe Graphe Intersection. Association Carrefour Feu : Un carrefour possède plusieurs feux tricolores. Il en possède 2 ou zéro. Classe Rond Point : Cette classe modélise un rond point dans le système routier que nous réalisons. Les méthodes associées à cette classe permettent la gestion des ronds points et des priorités liées à leur fonctionnement. Cette classe hérite également de la classe Graphe Intersection. Classe Graphe Intersection : Cette classe est le graphe d’intersection que nous utilisons pour gérer la liaison des carrefours entres eux. Une instance de la classe connait ses carrefours précédents (ceux d’où peuvent venir les véhicules) ainsi que ses carrefours suivants. Nous avons opté pour une modélisation du réseau routier en tant que graphe afin de permettre le calcul du chemin le plus court. Dans ces graphes , les éléments de type « Graphe d’intersection » en sont les points et les routes en sont les arcs. Une intersection possède un nom qui l’identifie, et se situe à une coordonnée fixe. Association Graphe Intersection Véhicule : Un graphe d’intersection peut contenir plusieurs véhicules et un véhicule ne peut se situer que sur un seul graphe d’intersection à la fois ou tout simplement ne pas se situer sur un graphe d’intersection. Plus clairement, un véhicule est sur un carrefour ou pas du tout mais ne peut être sur deux carrefours en même temps. Association SesSuivants et SesPrécédents : Entre deux graphes d’intersections. Puisque les points de notre graphe sont des intersections et que les routes en sont les arcs, cette association modélise le fait que chaque point de notre graphe connaît ses suivants et ses précédents et les arcs pour y aller. Classe Route : La classe Route modélise une route sur le système routier du programme. Une route peut être assimilée à un arc d’un graphe. Une route à par conséquent un poids qui varie en fonction de plusieurs facteurs comme la longueur de la route, son coefficient de pente et l’état de la route. Une route comme dans toutes les villes possède un nom qui lui est propre et qui l’identifie dans le réseau routier que nous modélisons. Elle est la liaison entre deux intersections et à donc des coordonnées précises sur le graphe. Association Route Véhicule : Une route peut contenir plusieurs véhicules en fonction de sa longueur et ce jusqu’à saturation de la route. Classe Véhicule : Cette classe modélise les véhicules présents sur le réseau routier du programme. Un véhicule possède un nom particulier qui l’identifie. L’utilisateur ne peut pas créer d’autres véhicules. Un nombre déterminé de véhicule sera proposé, l’intérêt de ces différentes catégories de véhicule portera sur le fait qu’ils auront une taille différente ce qui déterminera leur insertion sur une route déterminée. Classe Tramway : Cette classe hérite de la classe véhicule. Un tramway a comme particularité de toujours suivre le même trajet. Si la route qu’il emprunte habituellement est bloquée ou en travaux le tramway est alors bloqué. Classe IG Ajout_Vehicule : Cette classe est une interface graphique qui permettra la sélection d’un véhicule particulier et son insertion sur le réseau routier de manière aléatoire ou suivant un trajet défini par l’utilisateur en précisant le respawn de départ et celui d’arrivée. Association IG Ajout_Vehicule Véhicule : L’interface graphique permettant l’ajout de véhicule connait les différents véhicules proposés par le logiciel et il n’y a qu’une seule et unique interface graphique qui gère l’ajout de véhicule. Manuel Utilisateur : Objectif du logiciel Le logiciel répond à plusieurs objectifs : 1. Modéliser un réseau routier particulier de type américain (sur la base de la ville de San Francisco). 2. Simuler un trafic sur ce réseau dans le but de constater sa capacité à absorber la suppression d’une route (par un accident ou des travaux). 3. Remplacer certains carrefours par des rond point afin d’évaluer les différences entre le modèle européen et le modèle américain. Particularités du réseau routier Le réseau routier modélisé comporte plusieurs particularités : 1 Les routes Les routes sont soit à double sens, soit à sens unique. Elles peuvent avoir une inclinaison, c'est-à-dire une pente. Cette pente sera prise en compte dans le calcul du plus court chemin, i.e. entre deux itinéraires d’égales distances, le logiciel préférera l’itinéraire le plus économe en terme de montées. Une route peut être bloquée soit par un accident, soit par des travaux. Aucun trafic n’est alors possible. Néanmoins, si cette route est à double sens alors une seule voie est indisponible (celle où a eu lieu l’évènement). 2 Les véhicules Il y a plusieurs types de véhicules : Voitures Camions Motos Chaque type de véhicule a une taille différente sur la route, par exemple un camion est plus long qu’une moto. Le logiciel ne gère pas les dépassements car tous les véhicules ont la même vitesse. Les véhicules ont un point de départ (lieu de création) et un point d’arrivée. Pour arriver à destination, un véhicule calcul le plus court chemin pour y parvenir. De la même manière, si une route, appartenant à l’itinéraire du véhicule, est bloquée (à cause d’un accident, …) alors le véhicule recalcule un plus court chemin sans prendre cette route. Chaque véhicule est donc intelligent et équipé d’un GPS. 3 Les carrefours Un carrefour ne possède pas forcément de feux. Dans ce cas, la règle de la priorité à droite est en vigueur sur notre réseau routier. Un véhicule ne peut pas faire un demi-tour sur un carrefour. 4 Le tramway A l’image de San Francisco, notre réseau routier est équipé d’un tramway. Un tramway fait des allers et retours entre deux points. L’utilisateur aura la possibilité d’arrêter ce trafic à tout moment. Interface Graphique et Utilisation du logiciel 1 Interface du logiciel Description générale de l’interface La fenêtre se décompose ainsi : Une barre de menu en haut comportant 3 onglets Fichiers, Actions et Aide. Comme pour la grande majorité des applications Windows, lorsque l’utilisateur clique sur l’une de ces catégories, plusieurs choix apparaissent. Click sur Fichier L’utilisateur peut Charger une carte ou bien quitter l’application via ce menu. Le chargement d’une carte permet d’afficher à l’écran notre réseau routier. Click sur Action Via ce menu, l’utilisateur peut créer une panne de courant. Cela aura pour effet d’éteindre tous les feux du réseau routier. Dans le cas d’un carrefour sans feux, la règle de la priorité à droite est de vigueur. Cette manipulation permet une évaluation de la qualité du réseau américain lors d’une panne de courant. Toujours grâce à ce menu, l’utilisateur peut consulter un résumé du réseau routier, comme par exemple le nombre de voitures qui y circulent, … Click sur Aide L’utilisateur peut consulter l’aide du logiciel et les crédits. Un écran principal divisé en deux. Dans la partie gauche, l’utilisateur trouve la modélisation du réseau routier avec la modélisation des différents véhicules, des routes (en rouge si il y a une pente), des points de respawn et des feux rouges. La partie droite permet l’interaction de l’utilisateur avec le réseau routier. Exemple : Lorsque l’utilisateur clique sur un carrefour du réseau routier, il peut consulter dans la barre à droite les informations liées à ce carrefour. Il peut aussi interagir dessus : extinction des feux OU remplacement du carrefour par un rond point. Lorsque l’utilisateur clique sur un point de respawn, l’utilisateur a la possibilité, via la colonne droite de l’écran principal, de créer un véhicule partant de ce point de respawn. Lorsque l’utilisateur clique sur une route, il peut, toujours via la colonne droite, interagir sur cette route : Fermer la route ou Augmenter la pente ou Réduire la pente. Pour résumé l’écran principal, la colonne droite permet les interactions sur le réseau routier situé dans l’écran gauche. 2 Utilisation du logiciel a) Générer un trafic Comme nous l’avons vu dans la description de l’interface, pour générer un trafic, l’utilisateur doit cliquer sur un point de respawn. Les points de respawn sont les bâtiments qui se situent autour du réseau routier. Lorsqu’un véhicule est créé, une destination aléatoire est déterminée et un itinéraire idéal est calculé. L’utilisateur a la le choix entre différents véhicules. Pour effectuer ce choix, une interface apparaît : L’itinéraire idéal correspond au chemin le plus court avec le moins de routes en pente possible. Si une route de l’itinéraire est fermée après l’estimation de l’itinéraire, le véhicule recalcule un itinéraire. b) Fermer une route Pour fermer une route et tester la capacité d’absorption de changements d’itinéraires du système américain, l’utilisateur doit cliquer sur la route et, via la colonne droite, cliquer sur le bouton « Fermer ». c) Remplacer un carrefour par un rond point Afin de pouvoir comparer le système américain et celui européen, l’utilisateur a la possibilité de remplacer n’importe quel carrefour par un rond point. Un rond point a l’avantage de permettre le demi-tour en cas de changement d’itinéraire. Pour effectuer un changement, l’utilisateur doit simplement cliquer sur un carrefour puis sur le bouton « Remplacer par un rond point » qui se situe dans la colonne droite. Compte rendu : Nos choix Nous avons choisi de modéliser un réseau routier américain pour plusieurs raisons : - Tout d’abord, cela va nous permettre de tester ce réseau routier en fonction de sa capacité à absorber un trafic important et de sa capacité à offrir des itinéraires alternatifs en cas d’imprévus. - En remplaçant certains carrefours par des ronds points, cette modélisation nous permettra de faire des comparaisons entre modèle américain et modèle européen. - Enfin ce réseau a l’avantage d’être facile à modéliser, puisque toutes les rues sont « droites » (verticales ou horizontales). Nous avons aussi du faire d’autre choix au sujet du réseau routier car modéliser le réseau américain aurait été trop complexe. - Le réseau routier est modélisé sous forme d’un graphe. Il est plus facile ainsi de calculer l’itinéraire le plus court entre deux points (deux carrefours). Nous pensons d’ailleurs utiliser l’algorithme de Dijkstra. - On interdit aux voitures d’effectuer des demi-tours. Les véhicules ne pourront pas reprendre la route par où ils sont venus, sauf si le carrefour a été modifié entre temps en rond point (Intérêt du rond point). - Toutes les voitures ont la même vitesse car nous considérons qu’en ville la vitesse fixée suffisamment basse permet à toutes les voitures de la respecter. De plus ce choix permet d’éviter la modélisation des dépassements. Notre but étant de voir la capacité d’absorption du trafic et non les possibilités de dépassement qu’offre ce réseau, nous avons jugé que les dépassements n’étaient pas une priorité. - Notre réseau routier offre différents types de véhicules : chaque véhicule n’a pas le même gabarit. Ainsi une rue est plus rapidement encombrée si il n’y a que des camions dessus. - Les routes sont soit à double sens soit à sens unique. Il n’y a pas de voies doubles ou triples. Ainsi il est plus facile de gérer le réseau comme étant un graphe. - Les routes peuvent présenter une inclinaison (pente). Dans ce cas, cela sera pris en compte dans le calcul du plus court chemin. Ce choix découle de notre envie de se rapprocher du réseau routier de San Francisco. - Toujours pour cette même raison, notre modélisation intègre un tramway qui fait des allers et retours entre deux points. L’utilisateur aura d’ailleurs, via l’interface, la possibilité de stopper le tramway. - Au niveau de la signalisation, notre modélisation intègrera les feux tricolores et les règles de priorité à droite. Ceci facilitant l’analyse et la conception. - Pour la gestion du trafic, nous avons opté pour la présence de points de respawn qui sont des points situés autour du réseau et qui offre la possibilité de créer des véhicules afin d’augmenter la circulation sur notre réseau. A la création d’un véhicule nous avons choisi de définir la destination du véhicule de manière aléatoire. Néanmoins cette destination sera toujours un autre point de respawn. Notre dernier choix concerne l’interface et les interactions utilisateur. Nous avons opté pour une interface scindée en deux avec le réseau routier modélisé dans la partie droite et les interactions possibles dans celle de gauche. Exemple : Lorsque l’utilisateur clique sur un carrefour du réseau routier, il peut consulter dans la barre à droite les informations liées à ce carrefour. Il peut aussi interagir dessus : extinction des feux OU remplacement du carrefour par un rond point. Ce choix nous permettra de faire réellement interagir l’utilisateur et surtout de faire évoluer le réseau en temps réel. Difficultés rencontrées La principale difficulté que nous avons rencontré lors de cette phase d’analyse provient finalement de problèmes d’implémentation Java. Nous pensons toujours lors d’une phase d’analyse ou de conception à la façon d’implémenter nos idées. Ces pensées guident d’ailleurs nos choix d’analyse. Et dans le cadre du réseau, certains éléments n’ont toujours pas trouvé de réponses. Ainsi nous avons fait l’analyse sans trop nous soucier de certains points d’implémentation. Une autre difficulté à laquelle nous avons du faire face est l’insertion des interfaces graphiques dans le diagramme des classes, et les méthodes que nous utiliserons par la suite, ainsi que les attributs présents dans ces classes. Nous avons aussi eu quelques problèmes à délimiter notre sujet. En effet, nous avons du refreiner notre envie de modéliser un système américain complètement fidèle à l’original.