J-0
00m
00j
00h
00min
00s

Version interactive avec LaTeX compilé

CCINP Informatique Commune PSI 2017

Étude de la capacité et de la congestion de l’autoroute A7

Notez ce sujet en cliquant sur l'étoile
0.0(0 votes)
Logo ccinp
2025_08_29_4a057fdd3c06db1b09aag

EPREUVE SPECIFIQUE - FILIERE PSI

INFORMATIQUE

Vendredi 5 mai : 8 h-11 h

N.B. : le candidat attachera la plus grande importance à la clarté, à la précision et à la concision de la rédaction. Si un candidat est amené à repérer ce qui peut lui sembler être une erreur d'énoncé, il le signalera sur sa copie et devra poursuivre sa composition en expliquant les raisons des initiatives qu'il a été amené à prendre.

Les calculatrices sont interdites

Le sujet comporte 15 pages dont:
  • 13 pages de texte de présentation et énoncé du sujet;
  • 2 pages d'annexes.
Toute documentation autre que celle fournie est interdite.

REMARQUES PRELIMINAIRES

L'épreuve doit être traitée en langage Python. Les syntaxes sont rappelées en annexe 2.
Les différents algorithmes doivent être rendus dans leur forme définitive sur la copie à rendre (les brouillons ne seront pas acceptés).
Il est demandé au candidat de bien vouloir rédiger ses réponses en précisant bien le numéro de la question traitée et, si possible, dans l'ordre des questions. La réponse ne doit pas se cantonner à la rédaction de l'algorithme sans explication; les programmes doivent être expliqués et commentés.

Étude de la capacité et de la congestion de l'autoroute A7

I Objectifs et démarche d'étude

Il existe plusieurs formes de congestions routières, selon leur cause : la congestion récurrente, la congestion «prévisible » (travaux, manifestations, météo) et la congestion due aux incidents et accidents, par définition imprévisibles. On s'intéresse ici au niveau de congestion récurrente qui peut être défini comme le surplus de demande qui amène la congestion.
Cette étude se focalise sur la congestion routière de l'autoroute A7 en France. La section étudiée ne comporte ni entrée ni sortie. La longueur de l'axe est de et comporte 3 voies sauf au niveau de la dernière station (non étudiée ici). Un seul sens de circulation est étudié.
La cartographie présentée sur la figure 1 donne l'implantation des différentes stations de mesure, de la station à M8P, et des contrôles de sanction automatique (CSA). Ces stations de mesure font partie du système de recueil automatique des données (RAD) présent sur les autoroutes.
Figure 1 - Cartographie de la zone d'étude
Pour réaliser les mesures, la chaussée est équipée de boucles électromagnétiques connectées aux stations qui remontent l'information vers un système central. Ces boucles permettent de compter le nombre de véhicules qui passent sur les routes et, dans le cadre de cette étude, il s'agit de boucles doubles qui permettent aussi d'estimer les vitesses.
La connaissance et le suivi du niveau de congestion récurrente permettent ensuite d'envisager des actions de régulation et d'aménagement de voirie. La simulation numérique est alors employée pour étudier différentes solutions d'aménagement ou proposer des solutions de régulation dynamique du trafic.
Objectifs
Le premier objectif est d'établir le diagramme fondamental (tracé du débit en fonction de la concentration) caractéristique du tronçon étudié à partir de l'historique de données de comptage.
Le deuxième objectif est de mettre en place une simulation numérique adaptée au tronçon étudié à partir de deux modèles afin de tester deux approches numériques différentes.

II Traitement des données expérimentales

La méthodologie choisie ici pour estimer la capacité d'une route est celle utilisée notamment par les centres d'études techniques de l'équipement. Elle consiste à représenter un diagramme fondamental, c'est-à-dire le débit , nombre de véhicules par unité de temps, en fonction de la concentration , nombre de véhicules par unité de longueur. Ce diagramme permet alors de déterminer les paramètres caractéristiques de la route.

II. 1 Exploitation des données de mesure

II.1.1 Sélection des mesures

L'ensemble des données produites par le réseau est archivé dans une base de données. Les variables d'intérêt moyennées par tranche de temps de 6 min pour chaque point de mesure sont le débit exp , représentatif du nombre de véhicules par unité de temps et la vitesse moyenne exp des véhicules en ce point. On peut également accéder à la concentration, c_exp, par calcul étant donné que c_exp .
Une version simplifiée de cette base de données est réduite à deux tables.
La table STATIONS répertorie les stations de mesures; elle contient les attributs:
  • id_station (clé primaire), entier identifiant chaque station;
  • nom, chaîne de caractères désignant le nom de la station;
  • nombre_voies, entier donnant le nombre de voies de la

    section d'autoroute.
    La table COMPTAGES répertorie les différents enregistrements de données réalisés au cours du temps par les stations de comptage. Elle contient les attributs:
  • id_comptage, entier identifiant chaque comptage ;
  • id_station, entier identifiant la station concernée;
  • date, entier datant la mesure;
  • voie, entier numérotant la voie sur laquelle a été effectuée la mesure ;
  • q_exp, flottant donnant le débit mesuré pendant 6 minutes;
  • v_exp, flottant donnant la vitesse moyenne mesurée pendant 6 minutes.
Q1. L'étude se focalise uniquement sur les mesures de l'une des stations, la . Écrire une requête SQL qui renvoie les données de comptage (id_comptage, date, voie, q_exp, v_exp) mesurées à la station de comptage de nom .
Le résultat de la requête précédente est stocké dans une nouvelle table COMPTAGES_M8B à cinq colonnes (id_comptage, date, voie, q_exp, v_exp).
On fait l'hypothèse que les mesures sur les différentes voies d'une même station sont enregistrées de façon synchronisée. Lors d'un enregistrement pour une station à trois voies, on écrit donc trois lignes dans la table COMPTAGES avec trois dates identiques. Pour chacun des enregistrements de la station , trois lignes avec trois dates identiques sont donc présentes dans la nouvelle table COMPTAGES_M8B. Pour la suite de l'étude, les résultats expérimentaux de chacune des trois voies doivent être agrégés pour se ramener à une voie unique.
Q2. Écrire une requête SQL qui renvoie, pour chaque date des données de COMPTAGES_M8B, le débit correspondant à la somme des débits de chaque voie.
De la même façon, une requête SQL permet d'obtenir la moyenne des vitesses sur l'ensemble des trois voies pour chaque date des données de COMPTAGES_M8B. Il n'est pas demandé d'écrire cette requête. Ainsi, dans la suite de l'étude, la portion d'autoroute sera simplifiée en ne considérant qu'une seule voie.

II.1.2 Diagramme fondamental

On veut tracer le diagramme fondamental du tronçon d'autoroute étudié (figure 2). Suite au traitement de la base de données, on dispose à présent du tableau à une dimension (aussi appelé vecteur) des débits q_exp (en véhicules par heure) et du vecteur des vitesses v_exp (en kilomètres par heure). Ces deux vecteurs possèdent composantes avec le nombre de points de mesure à tracer. Pour chaque composante , la relation permet d'obtenir la concentration. L'utilisation des tableaux à une dimension (ou vecteurs) est rappelée en annexe 2.
Figure 2 - Points de mesure M8B : diagramme fondamental (c_exp,q_exp)
Q3. Écrire une fonction trace( ) qui prend en arguments et et qui permet d'afficher le nuage de points du diagramme fondamental. On considèrera que les bibliothèques sont importées et on pourra utiliser la fonction « plot » donnée en annexe 2.

II. 2 Estimation de l'état de congestion

Au niveau d'une station de mesure, la situation est dite congestionnée lorsque les vitesses prises par les véhicules restent inférieures à et la situation est dite fluide lorsque les vitesses restent supérieures à .
Q4. La fonction congestion(v_exp), qui prend en argument v_exp et renvoie la valeur médiane du tableau de valeurs exp est définie ci-dessous. La recherche de la médiane est basée sur un algorithme de tri. Choisir une des 4 propositions données pour compléter les 2 lignes manquantes (indiquées par «ligne à compléter»). Donner le nom, puis la complexité de l'algorithme de tri employé, dans le meilleur et le pire des cas. Analyser la pertinence de ce choix.
def congestion(v_exp):
    nbmesures=len(v_exp)
    for i in range(nbmesures):
        v=v_exp[i]
        j = i
        while 0 < j and v < v_exp[j-1]:
            ligne à compléter
            ligne à compléter
        v_exp[j] = v
    return v_exp[nbmesures//2]
Propositions pour les lignes manquantes:
    1. v_exp $[j-1]=$ v_exp [j]
        $j=j-1$
    2. v_exp [j] = v_exp [j-1]
        $j=j-1$
    3. v_exp [j+1] = v_exp [j]
        $j=j+1$
    4. v_exp [j] = v_exp [j+1]
        $j=j+1$
Q5. À partir de la base de données de la station , on obtient le vecteur v_exp. On exécute la fonction congestion(v_exp), la valeur retournée par la fonction étant 30, quelle conclusion peut-on tirer de ce résultat?

III Élaboration d'une première simulation du trafic routier par la mécanique des fluides

Il est rappelé ici que dans toute la suite de l'étude, l'autoroute est assimilée à une seule voie. Le modèle continu revient à négliger le caractère discret de la matière. Pour le modèle routier, cela revient donc à regarder l'évolution du trafic sur des distances grandes devant la taille des véhicules, notée . On appelle , en véhicules par mètre, la concentration de véhicules par unité de longueur de route à l'instant et à la position . Sur une longeur , il y a, au plus, un seul véhicule, soit . On appelle , en véhicules par seconde, le débit de véhicules, c'est-à-dire le nombre de véhicules par unité de temps traversant la section de la route située à la position . La vitesse , en mètres par seconde, ne représente pas la vitesse de chacun des véhicules mais la vitesse moyenne du trafic à la position . On considère que les véhicules se déplacent selon l'axe dans le sens des croissants.
On rappelle la relation . Désormais, et représentent les grandeurs simulées et non plus des données expérimentales. On travaille dans la suite avec les unités du système international.
En considérant une portion d'autoroute pendant une durée et en supposant qu'il n'y a ni perte, ni création de véhicule, il est possible de montrer que et verifient l'équation aux dérivées partielles suivante:
Pour comprendre comment évoluent la concentration, la vitesse moyenne ou le débit de véhicules au cours du temps le long de l'autoroute, il convient donc de résoudre cette équation aux dérivées partielles à partir de la situation initiale.

III. 1 Discrétisation

Afin de résoudre numériquement cette équation aux dérivées partielles, nous avons besoin de la discrétiser. On choisit les paramètres suivants :
  • longueur de l'autoroute: La
  • durée de simulation: Temps
  • pas d'espace (en mètres) :
  • pas de temps (en secondes):
Figure 3 - Représentation de la discrétisation
Q6. Soit le tableau de valeurs contenant les concentrations en tous les points et à tous les instants discrétisés, comme représenté sur la figure 3. L'approximation numérique de la concentration au temps et à la position sera notée avec désignant l'indice de temps et désignant l'indice d'espace. Quelles sont les dimensions de ?

III. 2 Un modèle de diagramme fondamental

L'équation (1) possède deux inconnues. Il faut donc ajouter une deuxième équation pour pouvoir la résoudre. On propose tout d'abord de relier la vitesse et la concentration par le modèle de Greenshield établi à partir des analyses suivantes :
  • lorsque la concentration en véhicules tend vers 0 , les conducteurs peuvent rouler à la vitesse maximale autorisée, v_max en mètres par seconde;
  • lorsque les véhicules sont pare-choc contre pare-choc, la concentration est égale à max en véhicules par mètre: ils n'avancent plus.
Une relation linéaire entre vitesse et concentration est choisie dans le modèle de Greenshield, qui est ainsi défini par la relation suivante :
On souhaite concevoir une fonction diagramme permettant de réaliser le tracé du diagramme fondamental pour un instant donné (soit pour une ligne de ). Cette fonction fait appel à une fonction debit permettant de calculer les valeurs de débit à un instant en utilisant la relation de Greenshield (2). Ces valeurs sont stockées dans un vecteur . Le tracé du diagramme fondamental est réalisé et le tableau est retourné.
Q7. Écrire une fonction debit(v_max,c_max,C_ligne) qui prend en arguments la vitesse maximale (v_max), la concentration maximale (c_max) et un tableau contenant les concentrations à un instant donné (soit les éléments d'une ligne du tableau ) nommé ici ligne et qui renvoie un tableau de valeurs contenant les débits (en véhicules par seconde) aux différentes positions à ce même instant.
Q8. Spécifier les arguments d'entrée (et leur type) de la fonction diagramme. L'écriture du code de la fonction n'est pas demandée. Préciser les unités des différents termes. Tracer l'allure du diagramme fondamental obtenu. L'allure du diagramme dépend-elle du temps auquel on se place (soit du choix de la ligne de )?

III. 3 Résolution de l'équation

III.3.1 Situation initiale

On considère une situation de départ ( ), comme indiqué sur la figure 4. On se place dans une configuration où l'on a un profil de concentration dont on veut étudier l'évolution. La concentration la plus faible passe à , plus forte, à la distance et revient à en .
Chacune des distances sera discrétisée. L'approximation numérique d'une distance correspondra à la division entière de la distance par le pas.
Figure 4 - Configuration initiale
Q9. Concevoir une fonction _depart qui permet d'initialiser la première ligne du tableau (correspondant à ). L'écriture du code correspondant n'est pas demandée; en revanche, on précisera toutes les valeurs de pour lesquelles sera égale à et toutes les valeurs pour lesquelles sera égale à . L'en-tête ou spécification de la fonction devra être précisé(e) (et comporter les arguments d'entrée et leur type), ainsi que le résultat renvoyé par la fonction.

III.3.2 Résolution

Le tableau contient des zéros, exceptée la première ligne qui a été remplie de valeurs grâce à la mise en œuvre de la fonction C_depart. On souhaite à présent écrire la fonction resolution( max, max ) permettant de résoudre l'équation et de remplir complètement le tableau .
Connaissant pour tout indice les valeurs de , on cherche à déterminer .
Dans le schéma d'Euler «avant », la dérivée d'une fonction par rapport à la variable , au point , , est approximée (en utilisant ce point et le point situé «devant » lui) par .
est un vecteur contenant les valeurs de débits aux différentes positions et à l'instant (l'approximation du débit au temps et à la position sera donc notée .). À chaque instant devra être recalculé.
Q10. À partir de l'équation (1) et en utilisant des schémas d'Euler «avant » pour l'écriture des dérivées, montrer que la relation de récurrence donnant en fonction de et est donnée par l'une des propositions ci-dessous. Le numéro de la réponse correcte sera clairement indiqué sur la copie.
  1. .
  2. .
Pour que le nombre de voitures soit constant sur la longueur de la route, il faut se fixer des conditions aux limites périodiques. Ainsi, quand un véhicule arrive en bout d'autoroute, il est replacé au début de celle-ci. On considère donc que le véhicule situé en , se déplaçant vers la droite, a pour voisin de droite le véhicule situé en .
Q11. L'initialisation a été effectuée avec la fonction depart . Écrire une fonction resolution( max, max qui prend en arguments le tableau , les pas et , la concentration maximale et la valeur de la vitesse maximale et qui renvoie le tableau rempli au cours de la résolution. On pourra faire appel à la fonction debit(v_max, c_max, C_ligne) définie à la question Q7.

III. 4 Étude des solutions trouvées et modification du schéma

On étudie deux situations de départ basées sur le même profil que celui proposé à la situation initiale (figure 4). Dans le cas 1 , on choisit et , respectivement notées et , correspondant à des concentrations faibles. On peut montrer que, pour ces concentrations, le créneau se déplace vers la droite (dans le sens des croissants) au cours du temps. Cette démonstration n'est pas demandée. Dans le cas 2 , on choisit et , respectivement notées et , correspondant à des concentrations fortes. On peut montrer que, pour ces concentrations, le créneau se déplace vers la gauche (dans le sens des décroissants) au cours du temps. Cette démonstration n'est pas demandée.
On applique la fonction resolution à ces deux situations de départ et on représente la concentration en fonction de la position à différents instants (figure 5). La situation initiale est en traits interrompus (- -), les situations intermédiaires en traits continus (-) et la situation finale en pointillés (:).

Figure 5 - Résultats pour le cas 1 et pour le cas 2 avec Euler « avant » pour l’espace et « avant » pour le temps
On remarque qu'avec la situation de départ du cas 1, la solution diverge. Avec la situation de départ du cas 2, le créneau initial semble se déplacer vers la gauche.
Une modification est alors apportée à la fonction resolution. Dans la discrétisation en espace (c'est-àdire lors de l'écriture des dérivées par rapport à la variable d'espace), le schéma d'Euler «avant » en espace est remplacé par un schéma d'Euler «arrière » en espace. Dans ce schéma, la dérivée d'une fonction par rapport à la variable au point est approximée (en utilisant ce point et le point situé «derrière» lui) par . On obtient alors les résultats présentés figure 6.
Figure 6 - Résultats pour le cas 1 et pour le cas 2 avec Euler «arrière» pour l'espace et «avant » pour le temps
Cette fois-ci, avec la situation de départ du cas 1 , le créneau initial se déplace vers la droite et avec la situation de départ du cas 2 , la solution diverge.
Q12. On se place à l'itération ; les calculs des itérations précédentes ont déjà été réalisés. Le calcul des termes de (vecteur des débits à l'instant ) est fait par la fonction debit, étant déterminé à partir de la valeur de . Sur la grille de discrétisation donnée figure 3 (qui sera reproduite sur la copie), tracer des flèches partant des points déjà calculés aux itérations précédentes et allant vers le point à calculer (au pas d'espace et à l'itération ) dans le cas du schéma d'Euler «avant» pour la discrétisation en espace. Procéder de même dans le cas du schéma d'Euler «arrière» pour la discrétisation en espace.
Q13. En déduire un argument permettant de choisir le schéma d'Euler adapté à la situation de départ.
On cherche maintenant un schéma fonctionnel pour les deux situations. On propose celui de LaxFriedriechs qui:
  • utilise un schéma centré pour l'approximation des dérivées par rapport à la variable d'espace. Dans ce schéma, la dérivée d'une fonction par rapport à la variable au point est approximée (à partir du point précédent et du point suivant) par ;
  • approxime les dérivées par rapport à la variable de temps en remplaçant la valeur par la moyenne de la valeur prise au point précédent et de la valeur prise au point suivant .
Q14. Proposer les modifications de la fonction resolution (définie à la question Q11) nécessaires pour utiliser le schéma de Lax-Friedriechs.
La mise en œuvre de la fonction resolution permet, ensuite, d'effectuer le tracé des solutions obtenues dont le résultat est donné figure 7. Les instructions permettant de réaliser le tracé ne sont pas demandées.
Figure 7 - Les deux situations de départ résolues avec le schéma de Lax-Friedriechs

III. 5 Amélioration du programme : retour sur le choix du diagramme fondamental

Afin de s'assurer de la stabilité de la solution trouvée, il convient, une fois le schéma d'approximation déterminé, de définir les valeurs des paramètres tels que les pas de temps et d'espace. On suppose ici que ce travail a été réalisé. Cependant, cela ne signifie pas que l'on peut simuler fidèlement des phénomènes réels. En effet, le diagramme fondamental utilisé et tracé à la question Q8 est assez différent du nuage de points expérimentaux représenté figure 2.
La nouvelle approximation choisie pour obtenir les paramètres caractéristiques du diagramme fondamental en fonction de est une régression d'ordre 3: étant les constantes d'ajustement de la courbe sur le nuage de points. La fonction regression( exp, exp ), qui prend en arguments les vecteurs q_exp et exp obtenus expérimentalement (ayant servi à tracer le nuage de points de la figure 2) et qui renvoie les coefficients , a été réalisée (on ne demande pas d'écrire cette fonction).
Q15. Expliquer en quelques phrases ce qu'il faut modifier dans la fonction resolution définie à la question Q11 pour résoudre l'équation (1) en prenant en compte ce nouveau diagramme fondamental basé sur l'expérimentation.
La simulation que nous avons mise en place permet ainsi de déterminer les caractéristiques d'évolution d'un embouteillage. On peut notamment en déduire la vitesse de propagation de l'embouteillage, ou sa vitesse de résorption. Cependant, on aimerait à présent mettre en place une simulation permettant de modéliser les comportements individuels des conducteurs.

IV Deuxième simulation du trafic routier : simulation de Nagel et Schreckenberg (NaSch)

L'objectif est de simuler la formation d'embouteillages dits «embouteillages fantômes ». Ils sont le résultat d'une perturbation qui apparaît localement sur la voie et s'amplifie peu à peu jusqu'à former un embouteillage.

IV. 1 Initialisation

Afin de modéliser le comportement de chacun des véhicules, l'espace, le temps ainsi que la vitesse des véhicules sont discrétisés. La dynamique de chaque élément est modélisée de façon très simple, l'objectif étant d'obtenir un bon comportement à l'échelle macroscopique. On étudie, comme dans les parties précédentes, une autoroute de longueur (en mètres) pour laquelle on ne considère qu'un seul sens et qu'une seule voie. La vitesse est limitée à et on considère une durée totale d'étude Temps.
Soit la position du véhicule sa vitesse entière et la distance intervéhiculaire (par rapport au véhicule précédent). On choisit de découper la route en cellules de tailles identiques valant pas (en mètres). La durée d'étude est découpée en temps pas de temps valant pas (en secondes) qui peut s'interpréter comme le temps de réaction du conducteur. Une probabilité donnée par le flottant est utilisée dans l'algorithme.
Q16. Justifier le choix de la valeur du pas d'espace. En déduire ce que vaut la vitesse v.max imposée de en cellules par pas de temps. On arrondira au nombre entier supérieur.
Comme précédemment, la portion d'autoroute considérée est sans entrée ni sortie. Les conditions limites seront périodiques, c'est-à-dire qu'un véhicule sortant de l'autoroute se retrouve instantanément à l'entrée de celle-ci (avec la même vitesse).
On considère que les données du problème pas_x, pas_t, Temps, La, v_max, sont, à présent, renseignées dans le programme. On cherche, pour une densité donnée, à déterminer les vitesses à chaque position au cours du temps, ainsi que l'occupation ou non de chacune des cellules. On met en place une structure de stockage constituée :
  • d'un tableau Route de dimension nb_temps nb_cellules qui contient des nombres binaires. Si, au pas de temps 10, la cellule 23 est occupée par un véhicule, alors Route , sinon Route[10,23] ;
  • d'un tableau Vitesses de dimension nb_temps nb_cellules qui contient des entiers. Si, au pas de temps 10, la cellule 23 est occupée par un véhicule et que sa vitesse est de 3 cellules par pas de temps, alors Vitesses . Si la cellule n'est pas occupée, alors Vitesses ;
  • d'un tableau Vitesses_suivantes de dimension b_cellules qui contient des entiers. Il permettra de stocker les vitesses au temps avant de déplacer les véhicules.
On peut désormais définir la situation initiale. On considère une route où les écarts entre tous les véhicules sont identiques. On crée ainsi une route avec une répartition homogène des véhicules. La route a été initialisée en plaçant des 1 dans les cellules possédant un véhicule dans la première ligne de Route pour une concentration fixée en véhicules par kilomètre. Toutes les autres cellules de Route sont initialisées avec la valeur 0 . Les cellules de Vitesses sont également initialisées avec des zéros. Cette étape d'initialisation est considérée comme déjà réalisée dans la suite.

IV. 2 Mise en œuvre de l'algorithme

Le modèle NaSch, dont le pseudo-code est donné en annexe 1, est le pionnier des modèles cellulaires permettant de simuler un trafic routier. L'algorithme est constitué de quatre étapes qui sont toutes réalisées l'une après l'autre à chaque pas de temps.
Les étapes 1, 2 et 3 correspondent au calcul des futures vitesses. L'étape 4 permet d'inscrire chaque vitesse au lieu où se trouve le véhicule au pas suivant. Le comportement correspondant est illustré figure 8. Dans cet algorithme, on effectue la mise à jour des positions de tous les véhicules de façon simultanée.
Au niveau des étapes 2 et 4 , des comparaisons et calculs sont effectués entre et ou entre et . En effet, les vitesses sont exprimées en cellules par pas de temps. Sur un pas de temps, correspond donc à une distance parcourue en nombre de cellules.
On cherche à écrire la fonction maj qui permet d'appliquer les étapes 1,2 et 3 de l'algorithme de NaSch pour toutes les valeurs de Vitesses[i, :]. On utilisera la fonction distance(Route, ) qui prend en arguments le tableau Route, l'indice de temps et l'indice de position du véhicule et qui renvoie la distance entre les véhicules et , à l'instant . Seules les cellules comprenant un véhicule doivent être traitées; les autres auront une vitesse nulle.
Figure 8 - Illustration du schéma sur un exemple
Q17. En utilisant l'annexe 1, écrire une fonction maj(Route, Vitesses, , vmax, ) qui prend en arguments les tableaux Route et Vitesses, le paramètre aléatoire , la vitesse maximale max (en cellules par pas de temps) et l'indice de temps et qui renvoie le tableau Vitesses_suivantes.
Q18. Écrire une fonction deplacement(Vitesses, Route, Vitesses_suivantes, ) qui permet de déterminer les valeurs de Vitesses et de Route . La fonction deplacement renvoie les tableaux Route et Vitesses mis à jour avec la ligne complétée. Les vitesses calculées doivent être placées dans les cellules où se trouvent les voitures correspondantes une fois déplacées. Penser à intégrer la prise en compte des conditions aux limites.

IV. 3 Simulation et analyse des résultats

Après nb temps itérations sur le temps, on obtient l'évolution de l'état de Route au cours du temps représentée figure 9. Les points noirs correspondent aux valeurs 1 du tableau (le reste étant à 0 ).
Figure 9 - Affichage de Route (indice i de temps en ordonnée, indice j des positions en abscisse)
Un zoom est réalisé figure sur les premières valeurs en temps et en espace pour mieux visualiser la formation d'embouteillages.
Figure 10 - Zoom sur l'affichage de Route (indice i des temps en ordonnée, indice j des positions en abscisse)
Q19. Expliquer en quelques phrases en quoi les figures présentées montrent que la formation d'un embouteillage a été simulée. Sur quels paramètres peut-on agir pour que le résultat de la simulation se rapproche des résultats expérimentaux?

Annexes

Annexe 1 - Algorithme de NaSch

Les opérations suivantes sont réalisées à chaque pas de temps.

- Étape 1 - Accélération

Le véhicule accélère d'une unité s'il n'a pas encore atteint la vitesse maximum.

- Étape 2 - Décélération

Le véhicule décélère si la distance par rapport au véhicule précédent ne permet pas de maintenir la vitesse .

- Étape 3 - Facteur aléatoire

Pour caractériser le comportement aléatoire de chacun des conducteurs, le véhicule décélère avec une probabilité , mais la vitesse n'est pas modifiée si (pas de marche arrière). On utilise pour cela la fonction qui renvoit une valeur aléatoire .

- Étape 4 - Déplacement

Une fois les vitesses déterminées, les positions des véhicules au pas de temps suivant sont déterminées de façon simultanée.

Annexe 2 - Rappels des syntaxes en Python

Remarque: sous Python, l'import du module numpy permet de réaliser des opérations pratiques sur les tableaux: from numpy import *. Les indices de ces tableaux commencent à 0 .
Python
tableau à une dimension
(liste)
v=array ([1,2,3]) (vecteur)
accéder à un élément v [ 0] renvoie 1
ajouter un élément L. append (5) uniquement sur les listes
tableau à deux dimensions (matrice) M=array(([1,2,3], [3, 4, 5]))
accéder à un élément M [1,2] ou M [1] [2] donne 5
extraire une portion de tableau (2 premières colonnes) M [ : , 0:2]
tableau de 0 ( 2 lignes, 3 colonnes) zeros ( 2 , 3) )
dimension d'un tableau T de taille ( ) T.shape donne [i,j]
séquence équirépartie quelconque de 0 à 10.1 (exclus) par pas de 0.1 arange ( )
définir une chaîne de caractères mot="Python"
taille d'une chaîne len (mot)
extraire des caractères mot [2:7]
boucle For for i in range(10): print ( i )
condition If
if (i>3):
print (i)
else:
print("hello")
définir une fonction qui possède un argument et renvoie 2 résultats
def fonction(param):
res1=param
res2=param*param
return res1,res2
tracé de points (o) de coordonnées ( ) plot(x, y, "○")

FIN

CCINP Informatique Commune PSI 2017 - Version Web LaTeX | WikiPrépa | WikiPrépa