%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\documentclass[11pt,a4paper, twoside]{article}

    % % \usepackage[widemargins]{a4}
    % % Format de mise en page globale :
    \setlength{\hoffset}{-1in}
    \setlength{\voffset}{-1in}
    \setlength{\oddsidemargin}{2.5cm}
    \setlength{\evensidemargin}{2.5cm}
    \setlength{\topmargin}{1.8cm}
    % \setlength{\headheight}{0cm}
    % \setlength{\headsep}{0cm}
    \setlength{\textwidth}{16.5cm}
    \setlength{\textheight}{24.0cm}

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    \usepackage[T1]{fontenc}
    \usepackage[latin1]{inputenc}

    \usepackage{amssymb}
    \usepackage{amsmath}
    % Pour l'environnement "begin{eqnarray*}[\{]" (avec accolade devant
    % optionnelle)
    \usepackage{xtdeqnra}

    \usepackage[dvips]{graphicx}
    \graphicspath{{./figures/}}

    \usepackage{fancyhdr}


    % Utilisation de "fancyvrb.sty" :
    %
    % fournit l'environnement "Verbatim" (idem envir verbatim avec
    % nombreuses options et la commande "\VerbatimInput"
    %
    % Exemple :
    %
    %   \VerbatimInput{../SOURCES/iloveleda.cc}
    %
    % On peut aussi passer des options à la pstricks (au hasard :-)
    % ou par la commande "\fvset{key1,value1,key2,value2,...}"
    %
    %   \VerbatimInput[%
    %      baselinestretch=0.9,% pour tasser les lignes (si long listing)
    %      fontsize=\small,%     pour un fonte plus petite
    %      numbers=left,%        pour numeroter les lignes a gauche
    %      frame=single,%        pour encadrer
    %      gobble=0%             nbr de caratere de debut a ignorer
    %   ]{../SOURCES/iloveleda.cc}
    %
    %   \begin{Verbatim}[fontsize=\small]
    %       xxx
    %   \end{Verbatim}
    \usepackage{fancyvrb}

    \usepackage{lastpage}


    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % DEBUT de Macro standard diam
    %

    % Conventions g\'{e}n\'{e}rales pour les formats de pr\'{e}sentation
    \newcommand{\strong}[1]{\textbf{\emph{#1}}} % plus fort que \emph
    \newcommand{\tech}[1]{\textsf{#1}}          % terme technique
    
    % FIN de macro standard diam
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    % DEBUT de Macro spécifiques à ce document
    %
    \newcommand{\cat}{\textsc{cat}}   %

    % FIN de macro spécifique à ce document
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    % french ou babel suivant les environnement disponible
    \usepackage{french}
    % \usepackage[francais]{babel} % idem avec frenchb mais PAS avec french !
    % % La suite evite que Babel impose un espace devant ":" si on n'en
    % % a pas mis dans le source (génant dans myClass::myClass :-).
    % % Mais cette focnctionnalité n'est
    % % % pas disponible sur les vielles versions de Babel (comme à l'ENSTA).
    % % Un espace sera alors rajouté SSI il existe dans le source.
    % \NoAutoSpaceBeforeFDP
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\begin{document}

\begin{center}
    \Large
    AO319 : Projet \cat{} \\[1ex]
    Centre d'Appels Télephonique%
    \footnote{%
        Ce projet est extrait (et tres simplifié) d'un projet réel
        étudié par Bouygues Télécom dont le problème est exposé dans le
        bulletin n$^o$ 2 de la société française de Recherche
        Opérationnelle \textsc{roadef} (voir url~\ref{url:roadefbul}). 
    } %
    \\[2ex]
    % \small\textit{Maurice Diamantini}
\end{center}
%
% \title{AO319 : Projet \imp{} \\Gestion d'un parc de ressources}
% \author{Maurice Diamantini}
% \maketitle
%
\tableofcontents
% \clearpage

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Introduction}

%  VERSION TRES RESUMEE (à conserver) :
% Les centres d'appel télephonique utilisent comme opérateur des
% conseiller clientèle plus ou moins compétents dans différents types 
% d'activités.


\bigskip
Les centres d'appel téléphoniques physiquement présents sur le site des
entreprises tendent à disparaître au profit de grands centres
délocalisés. Ils visent à factoriser l'activité du suivi de clientèle
et du support téléphonique  pour en améliorer la qualité (en temps de
réponse comme en spectre horaire), et ceci au moindre coût pour le
prestataire ou le distributeur. 
% 
Le nombre d'opérateurs partageant plusieurs numéros d'appel peut ainsi
varier d'une dizaine jusqu'à plusieurs miliers de personnes pour les
gros consommateurs  qui font reposer leur contact clientèle
exclusivement sur des télé-guichets. 

En fonction du numéro composé, un appel télephonique sera redirigé vers
un standardiste, un conseiller clientèle de telle ou telle spécialité
(notée \tech{activité} par la suite), ou même un médecin, un
informaticien, ou un courtier. Plus exactement, l'appel est rediriger
vers un \tech{opérateur} capable d'assurer cette \tech{activité}. 

\bigskip
En effet, chaque \tech{opérateur} ou conseiller est caractérisé par :


\begin{itemize}

\item  sa plus ou moins grande \strong{compétance} dans un certain nombre de
    spécialités (et donc son salaire),

\item les \strong{contraintes horaires} fortes liées au contrat :
    ensemble de \tech{journées types} ou \tech{semaines types}, nombre
    de jours hebdomadaire chômés glissant (ne pas imposer plus de deux
    jours chômés par semaine) ou fixe (absence tous les mercredi
    apres-midi pour garder les enfants,...), nombre maximal ou
    fréquence d'apparition de "nocturnes" ou de week-ends \oe{}uvrés
    par mois 

\item les \strong{exceptions au contrat} : indisponibilités ponctuelles
    (rendez-vous de dentiste programmé dans deux semaines à 13h00) ou
    chroniques comme un stage de formation tous les lundis. Il en va de
    même pour la pose de jours de congé,

\item les \strong{préférences} : horaires d'arrivée ou de départ favoris,
    \tech{journées types} préférées, place relative du repas dans la
    journée.  Sous prétexte de considérations sociales (!), tenir
    compte des desiderata des gens permet de limiter le "turnover" ou
    tout simplement l'absentéisme pour cause de "maladie".

\end{itemize}

\bigskip
En plus de ces contraintes propre à chaque \tech{opérateurs} peuvent se
rajouter des containtes de couplage telle que le fait d'imposer que
tous les membres d'une même équipe aient un minimum de journées
de travail en commun, ... 

Comme on le voit, la complexité et la variabilité de la spécification
elle-même du problème nécessitent d'\strong{être capable d'intégrer
facilement de nouvelles contraintes} de façon à s'adapter au mieux au
besoin évolutif (ou mal définis !) du client d'une telle application. 
% 
Mais pour simplifier, les horaires de travail sont prises parmi un
ensemble de plages prédéfinies. 


La donnée d'un problème de planification d'horaires de conseillers
clientèle peut typiquement se résumer de la manière suivante :

\begin{itemize}

\item un ensemble d'activités (moins d'une vingtaine), 

\item les \tech{opérateurs}, avec leurs plus ou moins grandes compétances 
    dans chaque activité, et leurs contraintes ou préférence pour
    les horaires, 

\item un \tech{durée} totale de travail à couvrir (24 heures)
    , divisée en grains indivisibles d'une
    demi-heure (les \tech{instants}), 

\item un ensemble d'\tech{horaires} journaliers réglementaires prédéfini, 

\item des courbes de charges prévisionnelles (considérée ici 
    comme déterministes) pour chaque famille d'\tech{activité} établies 
    sur une la période considérée,

\end{itemize}

\bigskip

L'objectif de ce problème consiste à définir les plages de travail de
ces opérateurs sur toute la période considérée. Le critère à
maximiser est alors la satisfaction générale du client, elle-même
traduite par une combinaison prenant en compte la compétance globale des
opérateurs par rapport aux demandes télephoniques en respectant
les contraintes d'horaires et de préférences de ces opérateurs. 


Pour les instances en sous-capacité de personnel (ce qui est un cas
fréquent au moins pour certains types d'activités), le critère
d'optimisation à minimiser est le nombre d'appels mis en attente. Mais
de manière plus générale, on associe à chaque type d'appels un profit
(ou une pénalité en cas de mise en attente) de même qu'on attribue un
taux horaire par activité aux conseillers selon leur ancienneté, leurs
préférences et compétences.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Une formalisation du problème \cat{}}


\subsection{Les données}

\subsection*{Les données primaires}

\begin{itemize}

\item  soit $\mathcal{O}$ l'ensemble des opérateurs $o$,

\item  soit $\mathcal{S}$ l'ensemble des plages horaires $s$ possibles
       (par exemple 8h00 -- 12h00 ; 14h00 -- 18h00),

\item  soit $\mathcal{T}$ l'ensemble des grains horaires $t$ élementaires
       (d'une demi-heure) couvrant la péiode de travail à assurer,

\item  soit $\mathcal{K}$ l'ensemble des activités $k$,

\item  soit $\pi_{ok}$ un poids caractérisant la compétance de
       l'opérateur $o$ pour l'activité $k$ (négatif si incompétant),

\item  soit $\alpha_{ot}$ la préférence de
       l'opérateur $o$ pour l'instant $t$ (négatif si dentiste à 16h30),

\end{itemize}

Si nécessaire, on peut associer pour chaque opérateur $o$ un
sous-ensemble (redondant) $\mathcal{K_o}$ d'activités de $\mathcal{K}$
pour lesquelles $\pi_{ok}$ est non négatif.

\subsection*{Les données secondaires}

\begin{itemize}

\item  $z_{os} \in [0,1]$ valant 1 si l'opérateur $o$ est affecté à
       l'horaire type $s$

\item  $\Gamma_{kt} \in \mathbb{N}$ enveloppe supérieure de la
       courbe de charge de l'activité $k$ pour l'instant $t$
       (on est en sureffectif si la contrainte en question est violée),

\item  $m_{kt} \in \mathbb{N}$ enveloppe inférieur de la même
       courbe de charge
       (sous-effectif si la contrainte est violée),

\item  $x_{oskt} \in [0,1]$ vaut 1 si l'opérateur $o$ travaille dans
       l'horaire $s$ à l'instant $t$ dans l'activité $k$,

\end{itemize}



\subsection*{La fonction de coût}

\begin{displaymath}
    %
    \mbox{max} \sum_{\cal{O},\cal{S},\cal{K},\cal{T}} x_{oskt} 
    (\pi_k + \alpha_{ot})
                = 
                \mathit{sched}(x)
    %
\end{displaymath}

\subsection*{Les contraintes}

%
\begin{alignat}{2}
      %
          \forall o,s,t  \quad
          &
          \sum_{\mathcal{K}} x_{oskt}
          & % equation suivante
          & 
          =
          z_{os}
          \tag{\textbf{C1}}
      \\
          \forall k,t  \quad
          &
          \sum_{\mathcal{O,S}} x_{oskt}
          & % equation suivante
          & 
          \leq  r_{kt}
          \tag{\textbf{C2}}
      \\
          \forall k,t  \quad
          &
          \sum_{\mathcal{O,S}} x_{oskt}
          & % equation suivante
          & 
          \geq  m_{kt}
          \tag{\textbf{C3}}
      \\
          \forall o  \quad
          &
          \sum_{\mathcal{S}} z_{os}
          & % equation suivante
          & 
          =
          1
          \tag{\textbf{C2}}
      \\
          x,z
          \in
          \{0,1\}
          & 
          & % equation suivante
          & 
          \tag{\textbf{C3}}
      %
\end{alignat}

\begin{itemize}

\item 

\item 

\item 

\item \textbf{C4} : tout opérateur doit avoir un horaire atribué
    (quitte à le payer à rien faire si on est en sur-effectif !)

\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Formats d'entrées-sorties}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section*{NETographie}

\begin{itemize}

\item \label{url:roadef}%
   \texttt{http://www-poleia.lip6.fr/SYSDEF/roadef} :
   \emph{ \textsc{roadef} : la société française de R.O }

\item \label{url:roadefbul}%
   \texttt{http://www.univ-valenciennes.fr/ROAD/ROADEF/IndexBulletins.html} :
   \emph{Les bulletins de la société française de Recherche
   Opérationnelle \textsc{roadef}.
   }
   % , en particulier la présentation du
   %    problème de Centre d'Appel de Bouygues Télécom par Benoît
   %    \textsc{Rottembourg} sur le bulletin n$^o$2

\end{itemize}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section*{Bibliographie non triée}


\end{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%







