{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# File d'attente, un exemple simple\n", "\n", "Cet exemple vient illustrer le paragraphe sur les files d'attente et l'espérance de vie des ampoules." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0749720223112896" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import random\n", "\n", "\n", "def generate_expo(mu):\n", " return random.expovariate(mu)\n", "\n", "\n", "generate_expo(2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Les paramètres de la simulation." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "S = 10000\n", "iteration = 500\n", "mu = 1.0 / 100" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On crée un tableau de ``S`` ampoules qui contient la durée de vie restante de chaque ampoule." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "itération : 0 moyenne durée : 0.0 grillées : 10000\n", "itération : 100 moyenne durée : 99.7184 grillées : 95\n", "itération : 200 moyenne durée : 98.7154 grillées : 93\n", "itération : 300 moyenne durée : 99.2155 grillées : 101\n", "itération : 400 moyenne durée : 98.9101 grillées : 108\n", "nombre moyen d'ampoules grillées : 99.88577154308618\n" ] } ], "source": [ "ampoule = [0 for a in range(S)]\n", "moyenne_grille = 0\n", "stats = []\n", "\n", "\n", "for i in range(iteration):\n", " grille = 0\n", " mean = 0\n", "\n", " for n in range(S):\n", " mean += ampoule[n]\n", " if ampoule[n] == 0:\n", " # remplacement d'une ampoule grillée\n", " grille += 1\n", " # on détermine la durée de vie de cette ampoule\n", " # on arrondit à l'entier le plus proche\n", " ampoule[n] = int(generate_expo(mu))\n", " else:\n", " # on enlève une heure à la durée de vie de l'ampoule\n", " ampoule[n] -= 1\n", "\n", " mean /= S\n", "\n", " stats.append(dict(i=i, mean=mean, grille=grille))\n", "\n", " if i > 0:\n", " moyenne_grille += grille\n", " if i % 100 == 0:\n", " print(\"itération : \", i, \" moyenne durée : \", mean, \" grillées :\", grille)\n", "\n", "moyenne_grille = float(moyenne_grille) / float(iteration - 1)\n", "print(\"nombre moyen d'ampoules grillées :\", moyenne_grille)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " | i | \n", "mean | \n", "grille | \n", "grille_sum | \n", "
---|---|---|---|---|
0 | \n", "0 | \n", "0.0000 | \n", "10000 | \n", "0 | \n", "
1 | \n", "1 | \n", "98.5142 | \n", "99 | \n", "99 | \n", "
2 | \n", "2 | \n", "98.5526 | \n", "91 | \n", "190 | \n", "
3 | \n", "3 | \n", "98.3991 | \n", "108 | \n", "298 | \n", "
4 | \n", "4 | \n", "98.4425 | \n", "94 | \n", "392 | \n", "