.. _filedattenteexrst: ================================= File d’attente, un exemple simple ================================= .. only:: html **Links:** :download:`notebook `, :downloadlink:`html `, :download:`PDF `, :download:`python `, :downloadlink:`slides `, :githublink:`GitHub|_doc/notebooks/dsgarden/file_dattente_ex.ipynb|*` Cet exemple vient illustrer le paragraphe sur les files d’attente et l’espérance de vie des ampoules. .. code:: ipython3 %matplotlib inline .. code:: ipython3 import math import random def generate_expo(mu): return random.expovariate(mu) generate_expo(2) .. parsed-literal:: 0.0749720223112896 Les paramètres de la simulation. .. code:: ipython3 S = 10000 iteration = 500 mu = 1.0 / 100 On crée un tableau de ``S`` ampoules qui contient la durée de vie restante de chaque ampoule. .. code:: ipython3 ampoule = [0 for a in range(0,S)] moyenne_grille = 0 stats = [] for i in range(0,iteration): grille = 0 mean = 0 for n in range(0,S): mean += ampoule[n] if ampoule[n] == 0: # remplacement d'une ampoule grillée grille += 1 # on détermine la durée de vie de cette ampoule # on arrondit à l'entier le plus proche ampoule[n] = int (generate_expo(mu)) else : # on enlève une heure à la durée de vie de l'ampoule ampoule[n] -= 1 mean /= S stats.append(dict(i=i, mean=mean, grille=grille)) if i > 0: moyenne_grille += grille if i % 100 == 0: print("itération : ", i, " moyenne durée : ", mean, " grillées :", grille) moyenne_grille = float (moyenne_grille) / float (iteration - 1) print("nombre moyen d'ampoules grillées :", moyenne_grille) .. parsed-literal:: itération : 0 moyenne durée : 0.0 grillées : 10000 itération : 100 moyenne durée : 99.7184 grillées : 95 itération : 200 moyenne durée : 98.7154 grillées : 93 itération : 300 moyenne durée : 99.2155 grillées : 101 itération : 400 moyenne durée : 98.9101 grillées : 108 nombre moyen d'ampoules grillées : 99.88577154308618 .. code:: ipython3 import pandas df = pandas.DataFrame(stats) df = df[["i", "mean", "grille"]] df["grille_sum"] = df["grille"].cumsum() - 10000 df.head() .. raw:: html
i mean grille grille_sum
0 0 0.0000 10000 0
1 1 98.5142 99 99
2 2 98.5526 91 190
3 3 98.3991 108 298
4 4 98.4425 94 392
.. code:: ipython3 import matplotlib.pyplot as plt fig, ax = plt.subplots(3, 1, figsize=(14,8)) df[1:].plot(x="i", y="mean", label="durée de vie moyenne restante", ax=ax[0]) df[1:].plot(x="i", y="grille", label="ampoules grillées ce jour", ax=ax[1]) df[2:].plot(x="i", y="grille_sum", label="total des ampoules grillées", ax=ax[2]) ax[0].set_xlabel("durée") .. parsed-literal:: .. image:: file_dattente_ex_8_1.png