ajout de plusieurs parties au rapport et corrections dans les équations
This commit is contained in:
parent
59369ed50f
commit
bdd3a65892
9 changed files with 147 additions and 82 deletions
|
@ -1,63 +1,71 @@
|
|||
\section*{Annexe 1 : Horaires initiales générées par le modèle}
|
||||
\label{sec:AnnexeHoraires}
|
||||
\pagebreak
|
||||
\newgeometry{margin=2cm}
|
||||
\begin{landscape}
|
||||
\begin{table}[ht]
|
||||
\centering
|
||||
\includegraphics[width=25cm]{Tables/InitialSchedule1.png}
|
||||
\includegraphics[width=24cm]{Tables/InitialSchedule1.png}
|
||||
\caption{Horaire initiale ayant un ratio employés temps plein / employés temps partiel de 0.11.}
|
||||
\label{fig:InitialSchedule1}
|
||||
\end{table}
|
||||
|
||||
\thispagestyle{empty}
|
||||
\clearpage
|
||||
\begin{table}[ht]
|
||||
\centering
|
||||
\includegraphics[width=25cm]{Tables/InitialSchedule2.png}
|
||||
\includegraphics[width=24cm]{Tables/InitialSchedule2.png}
|
||||
\caption{Horaire initiale ayant un ratio employés temps plein / employés temps partiel de 0.17.}
|
||||
\label{fig:InitialSchedule2}
|
||||
\end{table}
|
||||
|
||||
\thispagestyle{empty}
|
||||
\clearpage
|
||||
\begin{table}[ht]
|
||||
\centering
|
||||
\includegraphics[width=25cm]{Tables/InitialSchedule3.png}
|
||||
\includegraphics[width=24cm]{Tables/InitialSchedule3.png}
|
||||
\caption{Horaire initiale ayant un ratio employés temps plein / employés temps partiel de 0.22.}
|
||||
\label{fig:InitialSchedule3}
|
||||
\end{table}
|
||||
|
||||
\thispagestyle{empty}
|
||||
\clearpage
|
||||
\begin{table}[ht]
|
||||
\centering
|
||||
\includegraphics[width=25cm]{Tables/InitialSchedule4.png}
|
||||
\includegraphics[width=24cm]{Tables/InitialSchedule4.png}
|
||||
\caption{Horaire initiale ayant un ratio employés temps plein / employés temps partiel de 0.28.}
|
||||
\label{fig:InitialSchedule4}
|
||||
\end{table}
|
||||
|
||||
\thispagestyle{empty}
|
||||
\clearpage
|
||||
\begin{table}[ht]
|
||||
\centering
|
||||
\includegraphics[width=25cm]{Tables/InitialSchedule5.png}
|
||||
\includegraphics[width=24cm]{Tables/InitialSchedule5.png}
|
||||
\caption{Horaire initiale ayant un ratio employés temps plein / employés temps partiel de 0.33.}
|
||||
\label{fig:InitialSchedule5}
|
||||
\end{table}
|
||||
|
||||
\thispagestyle{empty}
|
||||
\clearpage
|
||||
\begin{table}[ht]
|
||||
\centering
|
||||
\includegraphics[width=25cm]{Tables/InitialSchedule6.png}
|
||||
\includegraphics[width=24cm]{Tables/InitialSchedule6.png}
|
||||
\caption{Horaire initiale ayant un ratio employés temps plein / employés temps partiel de 0.39.}
|
||||
\label{fig:InitialSchedule6}
|
||||
\end{table}
|
||||
|
||||
\thispagestyle{empty}
|
||||
\clearpage
|
||||
\begin{table}[ht]
|
||||
\centering
|
||||
\includegraphics[width=25cm]{Tables/InitialSchedule7.png}
|
||||
\includegraphics[width=24cm]{Tables/InitialSchedule7.png}
|
||||
\caption{Horaire initiale ayant un ratio employés temps plein / employés temps partiel de 0.44.}
|
||||
\label{fig:InitialSchedule7}
|
||||
\end{table}
|
||||
|
||||
\thispagestyle{empty}
|
||||
\clearpage
|
||||
\begin{table}[ht]
|
||||
\centering
|
||||
\includegraphics[width=25cm]{Tables/InitialSchedule8.png}
|
||||
\includegraphics[width=24cm]{Tables/InitialSchedule8.png}
|
||||
\caption{Horaire initiale ayant un ratio employés temps plein / employés temps partiel de 0.50.}
|
||||
\label{fig:InitialSchedule8}
|
||||
\end{table}
|
||||
|
||||
\thispagestyle{empty}
|
||||
\clearpage
|
||||
\end{landscape}
|
||||
%%% Local Variables:
|
||||
%%% mode: latex
|
||||
|
|
|
@ -14,11 +14,11 @@ Ce problème sera modélisé à l'aide de la programmation par contraintes avec
|
|||
\subsection{Paramètres}
|
||||
\label{sec:approcheparametres}
|
||||
|
||||
La durée de l'horaire est de $J$ jours de $P$ périodes, d'une durée de $\frac{24}{P}$ heures chacunes. La demande de travail pour la période $p$ de la journée $j$ est définie par $d_{p,j}$. La demande totale pour la durée de l'horaire de travail est définie par l'équation \eqref{eq:dtot}.
|
||||
La durée de l'horaire est de $J$ jours de $P$ périodes, d'une durée de $\frac{24}{P}$ heures chacunes. La demande de travail est représentée par une matrice $\mathbf{D} \in \N^{p \times j}$ où la valeur associée à la période $p$ de la journée $j$ est définie par $d_{p,j}$. La demande totale pour la durée de l'horaire de travail est définie par l'équation \eqref{eq:dtot}.
|
||||
|
||||
\begin{align}
|
||||
\label{eq:dtot}
|
||||
D_{tot} = \sum_{p=1}^{P} \sum_{j=1}^{J} d_{p,j}
|
||||
d_{tot} = \sum_{p=1}^{P} \sum_{j=1}^{J} d_{p,j}
|
||||
\end{align}
|
||||
|
||||
On représente l'ensemble des types d'employés disponibles par $a \in \mathcal{A}$. Les employés travaillent entre $h_{min,a}$ et $h_{max,a}$ heures. On définit le nombre d'heures de repos minimal $r_{min,a}$ et le nombre maximal de journées consécutives par $j_{max,a}$.
|
||||
|
@ -27,7 +27,7 @@ Le nombre d'employé est variable. En tentant de résoudre le problème de satis
|
|||
|
||||
\begin{align}
|
||||
\label{eq:eftept}
|
||||
E_{a} &= \frac{D_{tot}}{h_{min,a}}, &\forall a \in \mathcal{A}
|
||||
E_{a} &= \frac{d_{tot}}{h_{min,a}}, &\forall a \in \mathcal{A}
|
||||
\end{align}
|
||||
|
||||
Enfin, chaque type d'employé a un salaire par période de $s_{a}$ et encourent un frais fixe de $f_{a}$.
|
||||
|
@ -35,21 +35,21 @@ Enfin, chaque type d'employé a un salaire par période de $s_{a}$ et encourent
|
|||
\subsection{Variables}
|
||||
\label{sec:variables}
|
||||
|
||||
On représente les horaires de travail par deux tableaux de variables booliennes $\mathbf{X}_{FT}$ et $\mathbf{X}_{PT}$ \eqref{tableauxvariables}.
|
||||
On représente les horaires de travail par deux tableaux $\mathbf{X}_{FT}$ et $\mathbf{X}_{PT}$ de variables booliennes $x$ représentant chacune si l'employé $e$ du type $a$ travaille à la période $p$ de la journée $j$ \eqref{tableauxvariables}.
|
||||
|
||||
\begin{align}
|
||||
\label{tableauxvariables}
|
||||
X_{A} &= \left( x_{e,j,p,A} \right) \in \N^{E_{A} \times J \times P}, &\forall A\\
|
||||
dom(x_{e,j,p,A}) &= \lbrace 0,1 \rbrace, &\forall 1 \leq e \leq E_{A}, 1 \leq j \leq J, 1 \leq p \leq P\nonumber
|
||||
\mathbf{X}_{a} &= \left( x_{e,j,p,a} \right) \in \N^{E_{a} \times J \times P}, &\forall a \in \mathcal{A}\\
|
||||
dom(x_{e,j,p,a}) &= \lbrace 0,1 \rbrace, &\forall 1 \leq e \leq E_{a}, 1 \leq j \leq J, 1 \leq p \leq P, a \in \mathcal{A}\nonumber
|
||||
\end{align}
|
||||
|
||||
On définit l'horaire s'appliquant à l'employé $e$ par $X_e$\eqref{eq:horaireemploye}.
|
||||
On définit l'horaire s'appliquant à l'employé $e$ de type $a$ par $X_{e,a}$\eqref{eq:horaireemploye}.
|
||||
\begin{align}
|
||||
\label{eq:horaireemploye}
|
||||
X_e &= \begin{bmatrix}x_{e,1,1}&\cdots&x_{e,1,J}\\
|
||||
X_{e,a} &= \begin{bmatrix}x_{e,1,1,a}&\cdots&x_{e,1,J,a}\\
|
||||
\vdots&\ddots&\vdots\\
|
||||
x_{e,P,1}&\cdots&x_{e,P,J}
|
||||
\end{bmatrix}
|
||||
x_{e,P,1,a}&\cdots&x_{e,P,J,a}
|
||||
\end{bmatrix} &\forall e \in \left[ 0, E_a \right], a \in \mathcal{A}
|
||||
\end{align}
|
||||
|
||||
\subsection{Énumération des horaires valides}
|
||||
|
@ -57,14 +57,14 @@ On définit l'horaire s'appliquant à l'employé $e$ par $X_e$\eqref{eq:horairee
|
|||
|
||||
Afin de réduire la taille du problème, la liste des horaires quotidiens valides pour un employé est générée, pour chaque type d'employés. Il s'agit de deux sous-problèmes de satisfaction pouvant aussi être résolus avec le solveur Choco \cite{choco}. L'énumération de toutes les solutions obtenues sera ensuite utilisée pour générer l'ensemble des tuples d'une contrainte \textsc{Tableau}.
|
||||
|
||||
On définit $\vec{H}_{A} \in \N^{J}$, un vecteur de variables booléennes $h_{j}$ formant un horaire d'une durée de $J$ journées pour un employé de type $A \in \lbrace FT, PT \rbrace$. L'horaire doit respecter le nombre de périodes travaillées sur la durée totale de l'horaire \eqref{eq:contrnbpertravaillees}.
|
||||
On définit $\vec{H}_{a} \in \N^{J}$, un vecteur de variables booléennes $h_{j}$ formant un horaire d'une durée de $J$ journées pour un employé de type $a$. L'horaire doit respecter le nombre de périodes travaillées sur la durée totale de l'horaire \eqref{eq:contrnbpertravaillees}.
|
||||
|
||||
\begin{align}
|
||||
\label{eq:contrnbpertravaillees}
|
||||
\frac{h_{min,A}}{i_{A}} \leq \sum_{j=1}^{J} h_{j} \leq \frac{h_{max,A}}{i_{A}}
|
||||
\frac{h_{min,a}}{i_{a}} \leq \sum_{j=1}^{J} h_{j} \leq \frac{h_{max,a}}{i_{a}}
|
||||
\end{align}
|
||||
|
||||
L'horaire de l'employé à temps partiel doit contenir un même nombre de jours dans les deux sous-périodes $j \in [p1_{min},p1_{max}]=[1,5]$ et $j \in [p2_{min},p2_{max}]=[8,12]$ du lundi au vendredi \eqref{eq:contrdeuxperiodes}.
|
||||
L'horaire de l'employé à temps partiel doit contenir un même nombre de jours dans les deux sous-périodes du lundi au vendredi $j \in [p^{(1)}_{min},p^{(1)}_{max}]=\left[ 1,5 \right]$ et $j \in [p^{(2)}_{min},p^{(2)}_{max}]=\left[8,12 \right]$ \eqref{eq:contrdeuxperiodes}.
|
||||
|
||||
\begin{align}
|
||||
\label{eq:contrdeuxperiodes}
|
||||
|
@ -87,18 +87,18 @@ L'horaire doit respecter le nombre maximum de jours consécutifs travaillés aut
|
|||
\label{fig:regexpautomate}
|
||||
\end{figure}
|
||||
|
||||
Enfin, en effectuant le produit tensoriel de la matrice des horaires quinzomadaires valides $h_{reg,FT}$ \eqref{eq:horairejourvalide} et de la matrice des $n_{hq,A}$ horaires quotidiens valides \eqref{eq:horairequotidienvalide}, on obtient un tableau d'horaires par périodes travaillées valides $\mathbf{V}_A \in \N^{3}$ \eqref{eq:produithoraire}.
|
||||
Enfin, en effectuant le produit tensoriel de la matrice des horaires quinzomadaires valides $h_{reg,FT}$ \eqref{eq:horairejourvalide} et de la matrice des $n_{hq,a}$ horaires quotidiens valides \eqref{eq:horairequotidienvalide}, on obtient un tableau d'horaires par périodes travaillées valides $\mathbf{V}_a \in \N^{3}$ \eqref{eq:produithoraire}.
|
||||
\begin{align}
|
||||
\label{eq:horairejourvalide}
|
||||
\mathbf{H}_A &= \left( \vec{H}_{A} \right)\\
|
||||
\mathbf{H}_a &= \left( \vec{H}_{a} \right)\\
|
||||
\label{eq:horairequotidienvalide}
|
||||
\mathbf{Q}_A &= \begin{bmatrix}
|
||||
\mathbf{Q}_a &= \begin{bmatrix}
|
||||
q_{1,1}& \cdots& q_{P,1}\\
|
||||
\vdots&\ddots&\vdots\\
|
||||
q_{1,n_{hq,A}}&\cdots&q_{P,n_{hq,A}}
|
||||
q_{1,n_{hq,a}}&\cdots&q_{P,n_{hq,a}}
|
||||
\end{bmatrix}\\
|
||||
\label{eq:produithoraire}
|
||||
\mathbf{V}_A &= \mathbf{H}_A \otimes \mathbf{Q}_A
|
||||
\mathbf{V}_a &= \mathbf{H}_a \otimes \mathbf{Q}_a
|
||||
\end{align}
|
||||
|
||||
\subsection{Contraintes}
|
||||
|
@ -107,28 +107,32 @@ Enfin, en effectuant le produit tensoriel de la matrice des horaires quinzomadai
|
|||
Chaque horaire d'employé $X_e$ doit d'abord correspondre à un horaire valide tel qu'établi à la section \ref{sec:horairesvalides}. Il doit donc satisfaire une contrainte \textsc{Tableau} \eqref{eq:contraintetableau}. La planification doit aussi satisfaire la demande en employés, en utilisant une contrainte \textsc{Sum} \eqref{eq:contrsumemployes}. Afin de réduire la taille de l'arbre de recherche, nous imposons la contrainte de bris de symétrie suivante: les horaires des employés à temps plein, de même que les horaires des employés à temps partiel, doivent être dans un ordre lexicographique. On utilise alors la contrainte \textsc{LexLessEq} \eqref{eq:lex}.
|
||||
\begin{align}
|
||||
\label{eq:contraintetableau}
|
||||
\mathcal{C}_1 &: \textsc{Tableau}\left( \mathbf{V}_A,
|
||||
X_e \right), &\forall e\\
|
||||
\mathcal{C}_1 &: \textsc{Tableau}\left( \mathbf{V}_a,
|
||||
X_e \right), &\forall e \in \left[ 1,E_a \right],a \in \mathcal{A}\\
|
||||
\label{eq:contrsumemployes}
|
||||
\mathcal{C}_2 &: \sum_{A}\sum_{e=1}^{E_A} x_{e,p,j} = d_{p,j}, &\forall 1 \leq p \leq P, 1 \leq j \leq J\\
|
||||
\mathcal{C}_2 &: \sum_{a \in \mathcal{A}}\sum_{e=1}^{E_a} x_{e,p,j} = d_{p,j}, &\forall 1 \leq p \leq P, 1 \leq j \leq J\\
|
||||
\label{eq:lex}
|
||||
\mathcal{C}_3 &: \textsc{LexLessEq}(X_i,X_{i+1}), &\forall i \in [1,E^A-1],A
|
||||
\mathcal{C}_3 &: \textsc{LexLessEq}(X_i,X_{i+1}), &\forall i \in \left[1,E^a-1 \right], a \in \mathcal{A}
|
||||
\end{align}
|
||||
|
||||
\subsection{Génération des scénarios de demande excédentaire}
|
||||
\label{sec:scenariosdemande}
|
||||
|
||||
Chaque période de travail est caractérisée par une demande de travail qui se traduit en un nombre d'employés qui travaille durant cette période. Ainsi, le vecteur de demande de travail VDT est un vecteur de dimension 1xJ qui est défini initialement pour permettre la production d'horaires initiaux valides. Durant l'étape de génération des scénarios de demande excédentaire, ce vecteur est modifié de la façon suivante en fonction d'une probailité d'augmentation de la demande de travail. La librairie JDistLib \cite{jdistlib} est utilisée pour générer des augmentations de la demande de travail de façon aléatoire.
|
||||
Chaque valeur $d_{p,j}$ de la matrice de demande peut être augmentée par une demande excédentaire, représentée par une variable aléatoire $D_{p,j}^{(exc)}$ dont la fonction de masse de probabilité est définie par \eqref{eq:masseprobdemande}. La librairie JDistLib \cite{jdistlib} est utilisée pour générer des valeurs aléatoires de cette variable.
|
||||
|
||||
Soit p la probabilité d'augmentation de la demande de travail. Pour chaque période de travail j, on a :
|
||||
\begin{align}
|
||||
\label{eq:masseprobdemande}
|
||||
P_{D^{(exc)}}(x) &= \begin{cases}
|
||||
1-1.24p & x=0\\
|
||||
p, & x=1\\
|
||||
0.2p, & x=2\\
|
||||
0.04p, & x=3
|
||||
\end{cases}, & p \in \left[ 0,\frac{25}{31} \right]
|
||||
\end{align}
|
||||
|
||||
\begin{itemize}
|
||||
\item Une probabilité p d'avoir une augmentation de la demande de travail de 1 unité ($VDT_{j}$ += 1).
|
||||
\item Une probabilité p/5 d'avoir une augmentation de la demande de travail de 2 unité ($VDT_{j}$ += 2).
|
||||
\item Une probabilité p/25 d'avoir une augmentation de la demande de travail de 3 unité ($VDT_{j}$ += 3).
|
||||
\end{itemize}
|
||||
On obtient alors une matrice de demande modifiée $\mathbf{D}^{\prime}$ où $d_{p,j}^{\prime}=d_{p,j}+D_{p,j}^{(exc)}$.
|
||||
|
||||
On pourra répéter cette procédure plusieurs fois pour générer différents vecteurs de demande de travail modifiés.
|
||||
On pourra répéter cette procédure plusieurs fois pour générer différentes matrices de demande de travail modifiées.
|
||||
|
||||
\subsection{Génération de scénarios d'absences}
|
||||
\label{sec:scenariosabsences}
|
||||
|
|
|
@ -19,7 +19,7 @@ Les employés ont un salaire régulier de 10\$/h. On ajoute 1\$/h par employé
|
|||
\subsubsection{Incertitude}
|
||||
\label{sec:descriptionincertitude}
|
||||
|
||||
|
||||
On considère deux sources d'incertitude: les absences des employés et l'augmentation de la demande. Les employés ont une probabilité d'absence, à chaque période, variant entre $0$ et $0.1$. De plus, leur probabilité de retour à la période suivante, advenant une absence, est comprise dans l'ensemble . La probabilité associée à l'augmentation de la demande en employés est comprise dans l'ensemble $\lbrace 0, 0.25, 0.5, 0.75, 1 \rbrace$ pour un employé. On la multiplie par $0.2$ pour deux employés et $0.2^2$ pour trois employés supplémentaires. 10 scénarios d'augmentation sont générés et 100 scénarios d'absences le sont ensuite pour chacun, pour un total de 1000 simulations.
|
||||
|
||||
\subsubsection{Recouvrement}
|
||||
\label{sec:descriptionrecouvrement}
|
||||
|
|
|
@ -7,20 +7,33 @@
|
|||
|
||||
L'instance de base pour la comparaison des différents résultats correspond au problème de satisfiabilité des contraintes de l'horaire initial.
|
||||
|
||||
\begin{figure}[ht]
|
||||
\begin{figure}[!ht]
|
||||
\centering
|
||||
\includegraphics[width=15cm]{Figures/modelesProposes.png}
|
||||
\caption{Modèles proposés pour la génération des horaires initiaux.}
|
||||
\label{fig:ModelesProposes}
|
||||
\end{figure}
|
||||
|
||||
Une première approche pour la création des horaires initiaux fut de rassembler l'ensemble des contraintes pour la construction des horaires valides dans un seul modèle de programmation par contraintes. Seulement les horaires potentiels pour les employés à temps plein ont été encodés dans un tableau. Rapidement, nous avons conclu qu'il sera difficile d'obtenir plus d'une solution au modèle dans un temps raisonnable. Le tableau des horaires potentiels serait donc énuméré en utilisant deux programmes de contraintes, un pour chaque type d'employé.
|
||||
|
||||
L'utilisation de différentes heuristiques de recherche a été explorée sommairement, mais la construction d'un vecteur contenant toutes les variables du problème étant une condition nécessaire pour l'appel d'heuristiques dans le solveur Choco, il s'est avéré difficile de mettre en oeuvre cette exploration. Il a donc été décidé de conserver l'heuristique de recherche par défaut de Choco.
|
||||
La première approche explorée est de construire un seul modèle de programmation par contraintes pour l'ensemble du problème. Ce modèle incluait les contraintes sur les horaires ainsi que celles pour tous les types d'employés dans un seul modèle. De plus, le nombre d'employé était aussi une variable qui était modélisée en utilisant la possibilité d'inclure un horaire n'ayant aucune période de travail. Cette approche a permis de confirmer que notre problème était satisfiable, mais qu'il était difficile d'obtenir une variété de solutions, ce qui était nécessaire pour la création des scénarios.
|
||||
|
||||
Cependant, afin d'obtenir un nombre de solutions suffisamment différentes pour effectuer des simulation et pouvoir comparer différents scénarios, il n'était pas possible d'utiliser ce programme, qui retournait un grand nombre de solutions très similaires. L'optimisation s'effectuera donc en deux étapes et de façon itérative. Les explorations précédentes nous permettent de fixer le nombre d'employés à temps plein et à temps partiel dans un intervalle restreint. Il est ainsi possible de fixer le nombre d'employés de chaque type et d'exécuter le programme d'optimisation avec ces nouvelles contraintes. Des solutions variées ont ainsi pu être obtenues, permettant la suite du processus de création d'horaires optimales et robustes.
|
||||
Une fonction d'optimisation a aussi été proposée, mais la formulation du problème faisait en sorte qu'il est toujours plus efficace de maximiser le nombre d'employés à temps plein. Il a donc été choisi d'instancier le nombre d'employés de chaque type manuellement, de tester la satisfiabilité de l'instance dans chaque cas et ensuite de borner le nombre d'employés de chaque type. Ce choix est devenu notre seconde approche.
|
||||
|
||||
Comme les horaires des employés à temps plein et à temps partiel sont complémentaires, il est donc approprié de tenter de couvrir le maximum d'heures avec un nombre fixe d'employés à temps plein, puis de combler les périodes en excédent avec des employés à temps partiel. Le problème a donc été divisé en deux problèmes de satisfaction de contraintes résolus consécutivement.
|
||||
|
||||
La contrainte $\mathcal{C}_2$ \eqref{eq:contrsumemployes} est donc relaxée pour la résolution de la premiere étape \eqref{eq:contrsumemployesft}. On enlève ensuite la possibilité d'avoir un horaire vide du tableau de la contrainte $\mathcal{C}_1$ \eqref{eq:contraintetableau}. La seconde étape demeure identique à l'approche précédente, à la seule différence que le tableau $\mathbf{X}_{FT}$ est maintenant instancié.
|
||||
|
||||
\begin{align}
|
||||
\label{eq:contrsumemployesft}
|
||||
\mathcal{C}_2^{\prime} &: \sum_{e=1}^{E_a} x_{e,p,j} \leq d_{p,j}
|
||||
\end{align}
|
||||
|
||||
L'utilisation de différentes heuristiques de recherche a été explorée sommairement, mais la construction d'un vecteur contenant toutes les variables du problème étant une condition nécessaire pour l'appel d'heuristiques dans le solveur Choco, il s'est avéré difficile de mettre en oeuvre cette exploration. Il a donc été décidé de conserver l'heuristique de recherche par défaut de Choco. Cette approche nous a permis d'obtenir des solutions variées, permettant la suite du processus de création d'horaires optimales et robustes.
|
||||
|
||||
\subsection{Scénarios et simulation}
|
||||
\label{sec:scenariossimulations}
|
||||
|
||||
L'approche retenue pour générer les scénarios d'absence consiste à utiliser une chaîne de Markov. Cette approche permet d'inclure une relation de dépendance entre les différentes périodes. Pour la gestion de la demande, il aurait aussi été possible d'utilsier cette approche, mais afin de conserver la possibilité de générer des scénarios où le recouvrement est possible, le choix d'une distribution indépendante pour chaque période a permis de simplifier l'approche.
|
||||
|
||||
%%% Local Variables:
|
||||
%%% mode: latex
|
||||
|
|
Binary file not shown.
|
@ -59,6 +59,8 @@
|
|||
\DeclareMathOperator*{\argmin}{arg\,min}
|
||||
\setlength{\fboxsep}{3pt}
|
||||
\setlength{\fboxrule}{1pt}
|
||||
\widowpenalty=300
|
||||
\clubpenalty=300
|
||||
%----------------------------------------------------------------
|
||||
|
||||
\begin{document}
|
||||
|
@ -74,8 +76,9 @@
|
|||
\input{experimentation}
|
||||
\input{resultatsetdiscussion}
|
||||
\input{conclusion}
|
||||
\clearpage
|
||||
\bibliography{bibliographie}
|
||||
\newpage
|
||||
\clearpage
|
||||
\input{Annexe1}
|
||||
\input{Annexe2}
|
||||
\end{document}
|
||||
|
|
|
@ -1,7 +1,44 @@
|
|||
\section{Résultats et Discussion}
|
||||
\label{sec:RésultatsDiscussion}
|
||||
|
||||
\subsection{Comparaison des modèles proposés}
|
||||
\subsection{Comparaison des approches proposées}
|
||||
|
||||
Le problème de référence peut être résolu avec un seul retour arrière. La première approche proposée permet d'obtenir une première solution dans une temps assez court, mais ne parvient pas à offrir d'autres solution par la suite.
|
||||
\begin{table}[!h]
|
||||
\centering
|
||||
\label{table:ststsreference}
|
||||
\begin{tabular}{|l|lll|}
|
||||
\hline
|
||||
Instance & Temps & Noeuds & Retours arrières \\
|
||||
\hline
|
||||
Référence & 0,627 & 5377 & 1\\
|
||||
$1^{re}$ approche & 4,039 & 26129 & 43200 \\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\caption{Statistiques, référence et première approche}
|
||||
\end{table}
|
||||
|
||||
La seconde approche permet de constater la structure du problème: la complexité de celui-ci tient au niveau des horaires des employés à temps partiel. Lorsque le nombre d'employés à temps plein augmente, la taille de l'instance diminue considérablement.
|
||||
|
||||
\begin{table}[!h]
|
||||
\centering
|
||||
\label{table:stats-approche2}
|
||||
\begin{tabular}{|l|lll|}
|
||||
\hline
|
||||
$E_{FT}$ & Temps & Noeuds & Retours arrières \\
|
||||
\hline
|
||||
2 & 13,377 & 122100 & 240832 \\
|
||||
3 & 0,473 & 4683 & 7125 \\
|
||||
4 & 1,812 & 16543 & 31084 \\
|
||||
5 & 0,456 & 5728 & 9719 \\
|
||||
6 & 0,321 & 4363 & 7203 \\
|
||||
7 & 0,553 & 7255 & 13221 \\
|
||||
8 & 0,059 & 1479 & 1897 \\
|
||||
9 & 0,021 & 825 & 890 \\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\caption{Statistiques, seconde approche}
|
||||
\end{table}
|
||||
|
||||
\subsection{Résultats de l'étude de cas}
|
||||
À l'aide du modèle de génération d'horaires en 2 phases, 8 horaires présentant des ratios employés temps plein / employés temps partiel différents ont été obtenus (voir Annexe 1). Puisque les 2 types d'employés ont des contraintes différentes quant au recouvrement des différentes plages horaires, il a été possible de tester l'effet du taux d'absentéisme et de l'augmentation de la demande. L'effet de ces 2 paramètres sur le coût de recouvrement des 8 horaires sont présentés au Tableau \ref{table:TableauEffetsParametres}. Ces coûts de recouvrement sont présentés comme un ratio par rapport au coût de l'horaire optimale, soit celle ayant un nombre d'employé temps plein maximal.
|
||||
|
|
|
@ -34,33 +34,33 @@
|
|||
<target>1.8</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<configuration>
|
||||
<archive>
|
||||
<manifest>
|
||||
<mainClass>MainClass.MainClass</mainClass>
|
||||
</manifest>
|
||||
</archive>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>single</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
<configuration>
|
||||
<descriptorRefs>
|
||||
<descriptorRef>jar-with-dependencies</descriptorRef>
|
||||
</descriptorRefs>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<configuration>
|
||||
<archive>
|
||||
<manifest>
|
||||
<mainClass>MainClass.MainClass</mainClass>
|
||||
</manifest>
|
||||
</archive>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>single</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
<configuration>
|
||||
<descriptorRefs>
|
||||
<descriptorRef>jar-with-dependencies</descriptorRef>
|
||||
</descriptorRefs>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package ModifiedSchedules;
|
||||
|
||||
public class ParametersVariableDemandSimulator {
|
||||
public static double probIncreasedDemandbyOne = 0;
|
||||
public static double probIncreasedDemandbyOne = 0.2;
|
||||
public static double probIncreasedDemandbyTwo = probIncreasedDemandbyOne / 5;
|
||||
public static double probIncreasedDemandbyThree = probIncreasedDemandbyOne / 25;
|
||||
public static final int numberVariableDemandSimulations = 10;
|
||||
|
|
Loading…
Reference in a new issue