Vous êtes sur la page 1sur 10

Licence Mécanique

Projet : simulation de
trafic routier

19/04/2019
Sommaire
Sommaire...............................................................................................................................................2

2
Introduction
Cette étude modélise l’évolution du trafic sur une route et met en évidence les différents
régimes de circulation, notamment la formation de bouchons.

On se place dans le cadre d’une route en circuit fermé, sans entrée ni sortie, les véhicules
présents se suivant et ne pouvant se dépasser. La route est discrétisée en cases et on place sur
ces cases un certain nombre de véhicules. Ces véhicules sont placés le plus régulièrement
possible et leur vitesse est fixée à une valeur maximale autorisée.

Ce modèle repose sur 4 phases, appliquées à chaque itération :

- Accélération : les véhicules roulent à leur vitesse maximale


- Décélération : ils décélèrent si la voiture qui les précède est trop proche
- Freinage aléatoire : les véhicules ralentissent également avec une probabilité fixée, qui
représente les facteurs liés au conducteur (distraction, sécurité,…)
- Progression : les véhicules avancent selon la contrainte du circuit fermé

Les paramètres de cette simulation seront donc la longueur de la route n max, le nombre de
véhicules en circulation n v ≤ nmax , la vitesse maximale autorisée v max, la probabilité de freinage
aléatoire f .

Nous avons repris la première version de notre programme pour la version finale du projet.

Nous avons réalisé cette simulation jusqu’à la formation de bouchons, pour connaître
l’influence du nombre de voitures sur le trafic.

Nos principales difficultés étaient sur la création de la fonction DISTANCE permettant de


déterminer la distance entre les véhicules, en raison de la contrainte du circuit fermé et sur la
création de fichier des paramètres. Nous n’avons pu aboutir le projet sur la détermination du
nombre de véhicules suivant la densité, en raison du grand nombre d’itérations que cela
nécessitait. Cependant, nous avons séparé le programme et le module en fichiers séparés.

3
Programmation
Pour commencer, nous définissons 2 types dérivées dans un module. D’une part, nous
aurons les informations relatives à chaque véhicule, c’est-à-dire la position pos et la vitesse v .
D’autre part, nous aurons les informations relatives à la route, plus précisément la longueur de
la route, le nombre de véhicules, la vitesse maximale autorisée et enfin un tableau de
véhicules.

n max
nv
v max

Véhicule 1 Véhicule 2 …
Position1 Position2 …
Vitesse1 Vitesse2 …

Figure 1 – Description du type dérivé ROUTE contenant un tableau de véhicules défini à partir
du type dérivé VEHICULE

Nous initialisons ensuite les valeurs des paramètres de la simulation, que l’on peut initialiser
dans le programme principal mais qu’on choisit de placer dans un fichier de données qui sera
lu par le programme.

On initialise la position des véhicules et leur vitesse fixée à la vitesse maximale autorisée. Les
véhicules sont placés le plus régulièrement possible.

Différents sous programmes sont crées qui permettent de gérer les différentes phases et
affichage de la simulation.

1. Phase accélération :
On vérifie la vitesse de chaque véhicule sur la route et si sa vitesse v n’atteint pas la vitesse
maximale v max, on l’incrémente de 1.

2. Phase décélération :
Si la distance entre la voiture et celle qui la précèdent est plus petit que sa vitesse, alors sa
vitesse prend la valeur de la distance séparant ces voitures.

Pour ce faire, on crée une fonction distance qui permet de calculer la distance entre deux
véhicules. Elle représente le nombre de cases séparant ces véhicules
Cette fonction s’applique facilement pour les véhicules qui ne sont pas en bout de route. Pour
celui qui se trouve en bout de route, on doit prendre en compte le fait que la route est un
circuit fermé.

4
Pour i =1 à n v faire
Ipl ← modulo(i,nv ) + 1
Si pos(ip1) > pos(i) alors
Distance(i) ← pos(ip1) – pos(i) – 1
Sinon distance(i) ← pos(ip1) – pos(i) + n_max – 1
Fin si
Fin pour

3. Phase freinage :
On appelle un nombre aléatoire x et s’il est inférieur à f et que la vitesse v> 0, alors on
décrémente v de 1.

4. Phase progression :
On avance de v cases, avec la contrainte du circuit fermé, c'est-à-dire :

Pour i = 1 à n_v faire


Si pos+ v >nmax alors
pos ( i ) ← pos ( i ) + v ( i )−nmax

Sinon pos ( i ) ← pos ( i ) + v ( i )

Fin si

Fin pour

5. Affichage :

On crée un sous-programme AFFICHAGE qui affiche la route, la route étant un tableau de


caractères contenant des espaces. On place ensuite, suivant la position des voitures, un
caractère grâce à la fonction ACHAR(i+64), qui permettra également de différencier les
véhicules.
Un argument d’entrée de type logical de ce sous-programme permet la possibilité de 2
affichages :
- FALSE : Un affichage temporel, c'est-à-dire, un affichage qui permet de voir
l’évolution de la position des véhicules après chaque itération
- TRUE : Un affichage dynamique, c'est-à-dire qui efface l’affichage des itérations
précédentes. Cet affichage est permis en ralentissant l’exécution du programme grâce
à l’instruction ‘sleep 0.2’

On créer des bords pour faire en sorte que ce soit semblable à une vraie route lors de
l’affichage dynamique.
Poi

5
6. Formation de bouchons
On fixe, cette fois, la probabilité de freinage f à 0,05.

La fonction BOUCHON renvoie la longueur du bouchon formé, c'est-à-dire le nombre de fois


où la distance entre les véhicules est égale à 0.

6
Ré sultats
Après avoir compiler et executer le programme, on obtient l’allure d’une route. Les véhicules
sont des lettres, dans l’ordre alphabétique, qui se suivent sans se dépasser.

1. Cas d’une seule voiture :

Figure 2 – Evolution temporelle de la position d’une voiture

2. Cas de plusieurs voitures, avec une probabilité de freinage f =0,3

Dans ce cas, la phase décélération intervient.

Figure 3 – Evolution temporelle de la route avec plusieurs voitures

7
3. Cas de plusieurs voitures, avec une probabilité de freinage f =0,05

Figure 4 – Evolution temporelle de la route avec plusieurs voitures

On remarque la présence de bouchons tout au long de la route si on fait varier la longueur de


la route ou le nombre de véhicules. Pour plusieurs tests effectués avec la longueur de la route
constante, une vitesse maximale fixée à 3 et un nombre de véhicules variant, on a pu observer
que :

- Le trafic est parfaitement fluide si le nombre de véhicules est inferieur à environ 24%
de la capacité de la route.
- Les bouchons se forment si le nombre de véhicules occupent plus de 24% de la
capacité de la route pour une vitesse maximale de 3

8
Amé liorations
Nous avons scindé notre le programme et le module en deux fichiers distincts.

La compilation est permise en utilisant l’instruction g95 –o exécutable module.f90

9
Conclusion

10

Vous aimerez peut-être aussi