Vous êtes sur la page 1sur 6

M1 Informatique - Simulation

Franck.Quessette@uvsq.fr
12 avril 2021

Table des matières


1 TD 1 – Probabilités 1

2 TD 2 – Chaîne de Markov 1

3 TD 3 – Générateurs aléatoire 2

4 TD 4 – Files d’attente 3

1 TD 1 – Probabilités

Exercice 1 Variable aléatoire


Soit f une fonction définie sur l’intervalle [−A, +A] avec A réel strictement positif par :
∀x ∈ [−A, +A], f (x) = αx2
1. Calculer la ou les valeurs de α (en fonction de A) pour que f soit une fonction de densité.
2. Calculer la ou les valeurs de α (en fonction de A) pour que f soit une fonction de répartition.
3. Donner une méthode pour générer une variable aléatoire de densité f .

Exercice 2 Variable aléatoire


Soit f une fonction définie sur l’intervalle [0, A] avec A réel strictement positif par :
∀x ∈ [0, A], f (x) = αx(A − x)
1. Calculer la ou les valeurs de α (en fonction de A) pour que f soit une fonction de densité.
2. Calculer la ou les valeurs de α (en fonction de A) pour que f soit une fonction de répartition.
3. Donner une méthode pour générer une variable aléatoire de densité f .

2 TD 2 – Chaîne de Markov

Exercice 3 Chaîne de Markov à 3 états


Soit P la matrice de transition d’une chaîne de Markov à 3 états :
 
0.1 0.2 0.7
P =  0.0 0.6 0.4 
0.8 0.1 0.1
1. Dessiner le graphe de la chaîne de Markov.
2. Écrire les équations que vérifie la distribution stationnaire π.
3. Calculer la distribution stationnaire π.

1
Exercice 4 Parapluies

Un gentil monsieur a K parapluies. Il habite à 50 mètres de son travail. Tous les matins il va, à pied de son
domicile à son travail et le soir de son travail à son domicile. Si au moment de partir (de son domicile ou de son
travail) il pleut il prend un parapluie, sinon il n’en prend pas. On suppose que s’il ne pleut pas avant de partir,
il ne se mettra pas à pleuvoir en cours de route. À force de déplacements, il y aura donc des parapluies à son
domicile et à son travail.
On pose p la probabilité qu’il pleuve. Le but est de calculer la probabilité qu’il fasse un trajet en se faisant
mouiller en fonction de K et p.
1. Quelles informations doit-on mettre dans un état pour former une chaîne de Markov ?
2. Quel est l’espace d’état (ensemble des états possibles ?
3. Quelles sont les transitions avec leur probabilité ?
4. Dessiner le graphe de la chaîne de Markov.
5. Donner formellement les états, l’ensemble des états et les transitions.
6. Calculer la distribution stationnaire π en fonction de K.
7. Calculer la probabilité qu’il se fasse mouiller en fonction de p et π et donc K.

Exercice 5 Chaîne de Markov avec une infinité d’état

On suppose une file d’attente de capacité infinie en temps discret. À chaque top il y a un départ de client. À
chaque top il y a 0, 1 ou 2 arrivée avec des probabilités p0 , p1 et p2 (p0 + p1 + p2 = 1).
On veut calculer le nombre moyen de clients dans la file.
1. Quelles informations doit-on mettre dans un état pour former une chaîne de Markov ?
2. Quel est l’espace d’état (ensemble des états possibles ?
3. Quelles sont les transitions avec leur probabilité ?
4. Dessiner le graphe de la chaîne de Markov.
5. Donner formellement les états, l’ensemble des états et les transitions.
6. Donner les équations vérifiées par la distribution stationnaire π.
7. Calculer π. À quelle condition π existe.

3 TD 3 – Générateurs aléatoire

Exercice 6 Générateur aléatoire

Écrire un programme en C qui appelle 10 fois la fonction : long int random() .


Utiliser le man pour voir quelle librairie inclure.
1. Que constatez-vous si vous appelez plusieurs fois votre programme.
2. À quoi sert la fonction void srandom(unsigned int seed) ?

3. Utiliser la fonction pid_t getpid() pour initialiser le générateur.


4. Comment générer des valeurs aléatoires uniforme dans l’intervalle [0..99] ?
5. Comment générer la valeur 0 avec une proba de 0.7 et la valeur 1 ?
6. Écrire une fonction int Bernoulli (float p) qui renvoie 1 avec une proba p et qui renvoie 0 avec
une proba 1 − p.
7. Écrire une fonction int nb_arrivees (float p0, float p2) qui renvoie 0 avec une proba p0 , qui
renvoie 1 avec une proba (1 − p0 − p2 ) et qui renvoie 2 avec une proba p2 .

2
Exercice 7 LCG

On considère le LCG suivant : 


x0 = 0
xn+1 = (7 × xn + 3) mod 10
1. Calculer la période du générateur (valeur minimale de n telle que xn = x0 ).
2. Donner les périodes pour toutes les valeurs de la graine x0 de 0 à 9.

Exercice 8 Génération de v.a. de loi exponentielle

Dans cet exercice on utilise la fonction random() de la librairie standard du C


1. Utiliser la méthode de transformation inverse pour générer 100 valeurs de loi exponentielle de paramètre
1.
2. Afficher la fonction de répartition de ces valeurs.
3. Afficher par dessus la fonction de répartition théorique de la loi exponentielle.
4. Recommencer avec 103 puis 106 valeurs au lieu de 100.

4 TD 4 – Files d’attente

Exercice 9 Première file d’attente

On considère une file de capacité infinie un serveur et en temps discret.


À chaque top un client est servi et il y a 0, 1 ou 2 arrivées avec les probabilités respectives p0 , p1 et p2 avec
p0 + p1 + p2 = 1.
Le but est de mesurer le nombre moyen de clients dans la file ainsi que la probabilité que la file soit vide.
1. De quelles variables a-t-on besoin pour simuler cette file ?
2. Quels sont les événements ?
3. Écrire le code pour simuler cette file avec p0 = 0.4 et p2 = 0.35. Arrêter la simulation quand 106 clients
sont sortis de la file.
4. Quel code doit-on rajouter pour calculer la probabilité que la file soit vide ?
5. Quel code doit-on rajouter pour calculer le nombre moyen de clients ?
6. Écrire dans un fichier le nombre moyen de clients à chaque top. Que constatez-vous sur l’évolution du
nombre moyen de clients ?
7. Simuler avec les valeurs p0 = 0.8 et p2 = 0.1, comment évolue le nombre moyen de clients.
8. Simuler avec les valeurs p0 = 0.35 et p2 = 0.6, comment évolue le nombre moyen de clients.

Exercice 10 Arrêt de la simulation par intervalle de confiance

En reprenant le code de l’exercice précédent, proposer une solution pour arrêter la simulation quand le
nombre moyen de clients s’est stabilisé.
Est-il possible que ce nombre ne se stabilise jamais ? Modifier le code pour tenir compte de la réponse à
cette question.
Prposer un plan d’expérience pour calculer la limite de la stabilité de la file.

Exercice 11 Files en tandem

On considère deux files en tandem. Les durées inter-arrivées dans la file 1 suivent une loi exp(λ) les durées de
service dans la file 1 (resp. 2) suivent une loi exp(µ1 ) (resp. exp(µ2 )). Dans la première file, le buffer est infini.
Dans la seconde il est fini de taille B.

3
λ µ1 µ2

B
Quand un client a fini son service dans la file 1, il rentre dans la file 2. Si la file 2 est pleine le client est
perdu.
1. Donner les variables, les événements et le code nécessaire à la simulation.
2. Rajouter du code pour mesurer la proba de perte des clients.
3. Donner une description formelle de la chaîne de Markov modélisant ce système.
On considère maintenant que lorsque la file 2 est pleine le client en sortie de file 1 reste bloqué dans le
serveur de la file 1 et qu’aucun service ne peut commencer tant que le client est bloqué. Dès qu’il y a une place
dans la file 2, le client est débloqué.
1. Donner les variables, les événements et le code nécessaire à la simulation.
2. Rajouter du code pour mesurer la proba de blocage.
3. Donner une description formelle de la chaîne de Markov modélisant ce système.

Exercice 12 Priorités temporelle et spatiale

On considère la file suivante avec deux classes de clients les durées inter-arrivées des clients de classe i (i ∈ {1, 2})
suivent une loi exp(λi ) et les durées de services une loi exp(µi ). Le buffer est fini de taille B.

λ1
µ1
µ2
λ2 B
Les clients de classe 1 sont prioritaires en service, c’est à dire que dès que le serveur a terminé un client il
commence à servir toujours un client de classe 1 s’il y en a un. Il ne sert donc des clients de classe 2 que lorsqu’il
n’y a pas de client de classe 1 dans la file.
Les clients de classe 2 sont prioritaires en espace. Quand un client de classe 2 arrive dans la file et qu’elle est
pleine, on supprime un client de classe 1 qui est alors perdu et le client de classe 2 prend alors une place dans
la file. Si la file est remplie uniquement de clients de classe 2, tout client qui arrive est perdu.
1. Donner les variables, les événements et le code nécessaire à la simulation.
2. Rajouter du code pour mesurer la proba de perte des clients de classe 1 et 2.
3. Donner une description formelle de la chaîne de Markov modélisant ce système.

Exercice 13 M/M/∞

On considère la file M/M/∞ qui est telle que les durées inter-arrivées suivent une loi exp(λ). Il y a une infinité
de serveurs en parallèle dont les durées de services sont de loi exp(µ) pour chacun des serveurs. Dès qu’un client
arrive, il peut donc être servi.

λ µ

1. Donner les variables, les événements et le code nécessaire à la simulation.


2. Rajouter du code pour mesurer le nombre moyen de clients.
3. Donner une description formelle de la chaîne de Markov modélisant ce système.

4
Exercice 14 Constante vs Erlang

On considère la file suivante avec des durées inter-arrivées qui suivent une loi exp(λ) et les durées de services
de loi constante(1).

λ
cst(1)

Les arrivées sont donc en temps continu et les service en temps discret. Afin de modéliser avec une chaîne
de Markov en temps continu,
1. Afin de modéliser avec une chaîne de Markov en temps continu donner les paramètres d’une loi Erlang(λ, k)
qui correspondent le mieux à la loi Constante(1).
2. Donner une description formelle de la chaîne de Markov modélisant ce système avec la loi d’Erlang.

Exercice 15 M/M/1 avec panne

On considère une file M/M/1 et un processus de panne qui alterne entre deux états : Panne et Non-Panne. La
durée de réparation d’une panne suit une loi exp(α) et la durée entre deux pannes suit une loi exp(β).
Quand la file tombe en panne tous les clients dans la file sont perdus, y compris celui en service.
1. Donner les variables, les événements et le code nécessaire à la simulation.
2. Rajouter du code pour mesurer la proba de perte de clients.
3. Donner une description formelle de la chaîne de Markov modélisant ce système.

Exercice 16 Remplissage de conteneur optique

Dans un réseau optique, on remplit les trames optiques avec des paquets. Chaque trame peut contenir K paquets.
Dès qu’une trame est pleine elle part et une nouvelle est alors disponible. De plus s’il s’est écoulé plus d’un délai
∆ depuis la disponibilité de la trame elle part, même si elle n’est pas pleine. Le modèle est en temps discret et
à chaque top il arrive 0 paquets avec un proba p0 , il arrive 5 paquets avec une proba p5 et il arrive 10 paquets
avec une proba p10 . Bien sûr p0 + p5 + p10 = 1.
1. Donner les variables, les événements et le code nécessaire à la simulation.
2. Rajouter du code pour mesurer le taux de remplissage des trames.
3. Rajouter du code pour mesurer le temps moyen de remplissage des trames.

Exercice 17 M/M/1

On considère une file de capacité infinie en temps continue.


Les arrivées suivent une loi de Poisson de paramètre λ et les services suivent une loi exponentielle de
paramètre µ..
1. Quelle différence y a-t-il entre des arrivées poissoniennes et des inter-arrivée exponentielles ?
2. Simuler la M/M/1 pour trouver la limite de stabilité.
3. Donner une courbre du nombre moyen de client en fonction du ration ρ = µλ .

Exercice 18 File d’attente


On considère une file de capacité finie B avec deux serveurs qui se suivent. Les durées inter-arrivées suivent
une distribution exponentielle de paramètre λ. Quand un client arrive et que la file est pleine, il est rejeté. Le
service se fait en deux étapes : un client qui commence son service passe dans le premier serveur, puis dans le
second, puis sort de la file. Le premier client en attente commence son service au moment ou le client précédent
passe du premier au second serveur ou bien s’il est tout seul dans la file. Les durées des services dans les deux
serveurs suivent une loi exponentielle de paramètre µ.

5
1. Donnez les événements, les variables nécessaires à la simulation de cette file.
2. Pour chaque événement donner le code modifiant l’échéancier et les variables.
3. Donner le code nécessaire pour mesurer la probabilité qu’un client soit rejeté.

Exercice 19 File d’attente

On considère une file de capacité infinie. Les durées inter-arrivées suivent une distribution exponentielle de
paramètre λ.
La file comporte deux serveurs. Les clients sont servis en ordre FIFO et chaque client est servi par le premier
serveur puis par le second. Les services (premier et second) sont de durées exponentielles de paramètres µ.
— quand un client a fini son premier service et que le deuxième serveur est libre, il commence aussitôt son
service sur le deuxième serveur.
— quand un client a fini son premier service et que le deuxième serveur est occupé, il reste bloqué dans le
premier serveur (et aucun autre client ne peut utiliser ce serveur) et dès que le second serveur se libère
il commence son service dans le second serveur et libère le premier.
— quand un client termine son service sur le second serveur, il sort du système.
— le premier client en attente commence son service dès que le premier serveur se libère.
— un client qui arrive dans la file avec le premier serveur libre commence aussitôt son service sur le premier
serveur.
1. Donnez les événements, les variables nécessaires à la simulation de cette file.
2. Pour chaque événement donner le code modifiant l’échéancier et les variables.
3. Donner le code nécessaire pour mesurer la probabilité que le premier serveur soit inactif alors qu’il y a
des clients en attente.

Exercice 20 File d’attente

On considère une file de capacité infinie avec un seul serveur. Les durées inter-arrivées suivent des distributions
exponentielles. S’il y a n clients, le processus d’inter-arrivées suit une loi exp((n + 1)λ). Les services suivent une
loi exponentielle dépendant du nombre de clients. S’il y a n clients dans la file, le service est exp(nµ).
1. Donnez les événements, les variables nécessaires à la simulation de cette file.
2. Pour chaque événement donner le code modifiant l’échéancier et les variables.
3. Donner le code nécessaire pour mesurer la probabilité que la file soit vide.