Projet Stochastique - Hotline

13
Processus Stochastiques Classe 41-42 2012-2013 ESIEA – 74 Bis, avenue Maurice Thorez – 94200 Ivry-sur-Seine 1 Le groupe du projet est constitué de : EN NAKDI Tarik Projet informatique ESIEA Sujet: Combien de personnes travaillent en moyenne au service hotline d’un opérateur téléphonique

Transcript of Projet Stochastique - Hotline

Page 1: Projet Stochastique - Hotline

Processus Stochastiques Classe 41-42 2012-2013

ESIEA – 74 Bis, avenue Maurice Thorez – 94200 Ivry-sur-Seine 1

Le groupe du projet est constitué de :

EN NAKDI Tarik

Projet informatique ESIEA

Sujet: Combien de personnes travaillent en moyenne au service

hotline d’un opérateur téléphonique

Page 2: Projet Stochastique - Hotline

Processus Stochastiques Classe 41-42 2012-2013

ESIEA – 74 Bis, avenue Maurice Thorez – 94200 Ivry-sur-Seine 2

Sommaire

Problématique: ........................................................................................................................................ 3

1ère Modélisation de la Chaîne de Markov d’une Hotline ..................................................................... 4

Partie 1: CALCUL AVEC MATHEMATICA .................................................................................................. 5

2ème Modélisation de la Chaîne de Markov d’une Hotline .................................................................... 6

Partie 2: CALCUL AVEC MATHEMATICA .................................................................................................. 7

Conclusion: .............................................................................................................................................. 8

Annexes: .................................................................................................................................................. 9

Génération d’une chaîne de Markov en language C++: ...................................................................... 9

Génération d’une chaîne de Markov en language JAVA: .................................................................. 11

Webographie: ........................................................................................................................................ 13

Page 3: Projet Stochastique - Hotline

Processus Stochastiques Classe 41-42 2012-2013

ESIEA – 74 Bis, avenue Maurice Thorez – 94200 Ivry-sur-Seine 3

Problématique:

Expliquer le but du projet

Notre idée : Construire un modèle général en prenant en compte la capacité des agents à traiter le

nombre d’appels par minute et le temps passer en file d’attente.

Markov + Matrice = Modèle poussée et général du projet Réponse au cahier des charges

Donner les moyens qui vont être utilisés pour répondre au cahier des charges

(

Mathematica

Création et génération d’une chaîne de Markov en C++ et en JAVA

)

Avant de commencer absolument dire que les événements d’arrivé des clients suit une loi de Poisson

avec λ le paramètre désignant le nombre d’appels par minute, c’est un taux d’arrivé des clients par

rapport au temps. Dans notre cas, si on se place sur H notre λ sera ϒH (gamma H).

Dire aussi que notre chaîne de Markov est ergodique, voir cours ou simplement dire que l’intensité

du trafic est inférieure à 1. Dans notre cas que p = (ϒA/ ϒH) <1 , ϒH pour le service et ϒA pour la file

d’attente.

Page 4: Projet Stochastique - Hotline

Processus Stochastiques Classe 41-42 2012-2013

ESIEA – 74 Bis, avenue Maurice Thorez – 94200 Ivry-sur-Seine 4

1ère Modélisation de la Chaîne de Markov d’une Hotline

Légende: • M: Maison

• A: Attente

• H: Hotline

M A H

Nb/Nb = 1

(Nb – Na)/Nb

Na/Nb

0,3

0,7

Hypothèse 1: On prendra Na, le nombre d’agents tel qu’un 1 agent a la capacité de traiter 1 client par

minute. On fixera Nb à une valeur aléatoire de sorte que Na soit inférieur à Nb pour se rapprocher le plus possible de la réalité tout en donnant un modèle complet.

Page 5: Projet Stochastique - Hotline

Processus Stochastiques Classe 41-42 2012-2013

ESIEA – 74 Bis, avenue Maurice Thorez – 94200 Ivry-sur-Seine 5

Partie 1: CALCUL AVEC MATHEMATICA

Mettre un bout de code servant à expliciter notre raisonnement.

Les moyennes E

Les variances V

La matrice pour le modèle général

Enfin le calcul du nombre d’agents optimal

Page 6: Projet Stochastique - Hotline

Processus Stochastiques Classe 41-42 2012-2013

ESIEA – 74 Bis, avenue Maurice Thorez – 94200 Ivry-sur-Seine 6

2ème Modélisation de la Chaîne de Markov d’une Hotline

Légende: • M: Maison

• A: Attente

• H: Hotline

M A H

Nb/Nb = 1

Nb−(2Na+Na)/2

Nb

(Na + 2Na)/2Nb

0,3

0,7

Hypothèse 2: Il y aura 2 types d’agents dans la population Na. La moitié de Na sont les agents stagiaires

et ne sont capables de traiter qu’un client par minute, alors que l’autre moitié sont les agents qualifiés qui eux peuvent traiter deux clients par minute. On garde toujours cette hypothèse raisonnable : Na < Nb.

Page 7: Projet Stochastique - Hotline

Processus Stochastiques Classe 41-42 2012-2013

ESIEA – 74 Bis, avenue Maurice Thorez – 94200 Ivry-sur-Seine 7

Partie 2: CALCUL AVEC MATHEMATICA

Mettre un bout de code servant à expliciter notre raisonnement.

Les moyennes E

Les variances V

La matrice pour le modèle général

Enfin le calcul du nombre d’agents optimal

Page 8: Projet Stochastique - Hotline

Processus Stochastiques Classe 41-42 2012-2013

ESIEA – 74 Bis, avenue Maurice Thorez – 94200 Ivry-sur-Seine 8

Conclusion:

Modélisation générale réussie grâce à la formule de Lalitte, car notre modèle est ergodique ainsi qu’à

notre matrice donnée par la chaîne de Markov.

Réponse à la dernière question ainsi qu’en mettant le coût total du service de hotline en prenant Na

= 16 comme étant le nombre d’agent optimal.

Mettre les agents compétents pendant les heures de pointes lorsque la probabilité que Nb clients

appellent est très forte. Et donc placer le reste du personnel sur les autres plages horaires.

Page 9: Projet Stochastique - Hotline

Processus Stochastiques Classe 41-42 2012-2013

ESIEA – 74 Bis, avenue Maurice Thorez – 94200 Ivry-sur-Seine 9

Annexes:

Génération d’une chaîne de Markov en language C++:

#include <time.h>

#include <iostream>

#include <string>

#include <deque>

#include <map>

#include <vector>

using namespace std;

const int NPREF = 2;

const char NONWORD[] = "\n"; // cannot appear as real line: we remove

newlines

const int MAXGEN = 3; // maximum words generated which are our 3 steps M,

A and H

typedef deque<string> Prefix;

map<Prefix, vector<string> > statetab; // prefix -> suffixes

void build(Prefix&, istream&);

void generate(int nwords);

void add(Prefix&, const string&);

// markov main: markov-chain random text generation

int main(void)

{

int nwords = MAXGEN;

Prefix prefix; // current input prefix

srand(time(NULL));

for (int i = 0; i < NPREF; i++)

add(prefix, NONWORD);

build(prefix, cin);

add(prefix, NONWORD);

generate(nwords);

return 0;

}

// build: read input words, build state table

void build(Prefix& prefix, istream& in)

{

string buf;

while (in >> buf)

add(prefix, buf);

}

// add: add word to suffix deque, update prefix

void add(Prefix& prefix, const string& s)

{

if (prefix.size() == NPREF) {

statetab[prefix].push_back(s);

prefix.pop_front();

}

prefix.push_back(s);

Page 10: Projet Stochastique - Hotline

Processus Stochastiques Classe 41-42 2012-2013

ESIEA – 74 Bis, avenue Maurice Thorez – 94200 Ivry-sur-Seine 10

}

// generate: produce output, one word per line

void generate(int nwords)

{

Prefix prefix;

int i;

for (i = 0; i < NPREF; i++)

add(prefix, NONWORD);

for (i = 0; i < nwords; i++) {

vector<string>& suf = statetab[prefix];

const string& w = suf[rand() % suf.size()];

if (w == NONWORD)

break;

cout << w << "\n";

prefix.pop_front(); // advance

prefix.push_back(w);

}

}

Page 11: Projet Stochastique - Hotline

Processus Stochastiques Classe 41-42 2012-2013

ESIEA – 74 Bis, avenue Maurice Thorez – 94200 Ivry-sur-Seine 11

Génération d’une chaîne de Markov en language JAVA:

/*Java classes of Markov chain algorithm

Class Prefix

Class Chain

Class Markov*/

import java.io.*;

import java.util.StringTokenizer;

import java.util.Vector;

import java.util.Hashtable;

import java.util.Random;

//Prefix Class

class Prefix {

public Vector pref;

// NPREF adjacent words from input

static final int MULTIPLIER = 31; // for hashCode() // Prefix

constructor: duplicate existing prefix

Prefix(Prefix p){

pref = (Vector) p.pref.clone();

} // Prefix constructor: n copies of str

Prefix(int n, String str){

pref = new Vector();

for (int i = 0; i < n; i++)

pref.addElement(str);

} // Prefix hashCode: generate hash from all prefix words

public int hashCode(){

int h = 0;

for (int i = 0; i < pref.size(); i++)

h = MULTIPLIER * h + pref.elementAt(i).hashCode();

return h;

} // Prefix equals: compare two prefixes for equal words

public boolean equals(Object o){

Prefix p = (Prefix) o;

for (int i = 0; i < pref.size(); i++)

if (!pref.elementAt(i).equals(p.pref.elementAt(i)))

return false;

return true;

}

}

//Chain Class

class Chain {

static final int NPREF = 2; // size of prefix

static final String NONWORD = "\n"; // "word" that can't appear

Hashtable statetab = new Hashtable(); // key = Prefix, value = suffix

Vector

Prefix prefix = new Prefix(NPREF, NONWORD); // initial prefix

Random rand = new Random(); // Chain build: build State table from

input stream

Page 12: Projet Stochastique - Hotline

Processus Stochastiques Classe 41-42 2012-2013

ESIEA – 74 Bis, avenue Maurice Thorez – 94200 Ivry-sur-Seine 12

void build(InputStream in) throws IOException{

StreamTokenizer st = new StreamTokenizer(in);

st.resetSyntax(); // remove default rules

st.wordChars(0, Character.MAX_VALUE); // turn on all chars

st.whitespaceChars(0, ' '); // except up to blank

while (st.nextToken() != st.TT_EOF)

add(st.sval);

add(NONWORD);

} // Chain add: add word to suffix list, update prefix

void add(String word){

Vector suf = (Vector) statetab.get(prefix);

if (suf == null) {

suf = new Vector();

statetab.put(new Prefix(prefix), suf);

}

suf.addElement(word);

prefix.pref.removeElementAt(0);

prefix.pref.addElement(word);

} // Chain generate: generate output words

void generate(int nwords){

prefix = new Prefix(NPREF, NONWORD);

for (int i = 0; i < nwords; i++) {

Vector s = (Vector) statetab.get(prefix);

if (s == null) {

System.err.println("Markov: internal error: no state");

System.exit(1);

}

int r = Math.abs(rand.nextInt()) % s.size();

String suf = (String) s.elementAt(r);

if (suf.equals(NONWORD))break;

System.out.println(suf);

prefix.pref.removeElementAt(0);

prefix.pref.addElement(suf);

}

}

}

//Markov Class

class Markov {

static final int MAXGEN = 3; // maximum words generated which are our

3 steps M, A and H

public static void main(String[] args) throws IOException{

Chain chain = new Chain();

int nwords = MAXGEN;

chain.build(System.in);

chain.generate(nwords);

}

}

Page 13: Projet Stochastique - Hotline

Processus Stochastiques Classe 41-42 2012-2013

ESIEA – 74 Bis, avenue Maurice Thorez – 94200 Ivry-sur-Seine 13

Webographie:

http://www.lokad.com/fr.accueil.ashx

http://fr.wikipedia.org/wiki/Th%C3%A9orie_des_files_d'attente

http://www.developpez.net

http://www.wolfram.com/mathematica/

http://web.univ-pau.fr/~cpham/ENSEIGNEMENT/UEPERF/FILE.pdf

http://www.loria.fr/~sur/enseignement/RO/Files1_FSur.pdf

http://www.stephan-robert.ch/attachments/File/MSE-Stochastique/transp-files-attente.pdf