dernières correction FP

This commit is contained in:
François Pelletier 2018-04-22 00:24:33 -04:00
parent 36bfb2df3f
commit 93f2ea5aa4
5 changed files with 26 additions and 18 deletions

View file

@ -14,7 +14,7 @@ On modélise ce problème à l'aide de la programmation par contraintes. Les dif
\subsection{Paramètres}
\label{sec:approcheparametres}
L'horaire a une durée de $J$ jours de $P$ périodes d $\frac{24}{P}$ heures chacune. La matrice $\mathbf{D} \in \N^{p \times j}$ représente la demande de travail où on définit celle de la période $p$ de la journée $j$ par $d_{p,j}$. L'équation \eqref{eq:dtot} définit la demande totale pour la durée de l'horaire de travail .
L'horaire a une durée de $J$ jours de $P$ périodes de $i=\frac{24}{P}$ heures chacune. La matrice $\mathbf{D} \in \N^{p \times j}$ représente la demande de travail où on définit celle de la période $p$ de la journée $j$ par $d_{p,j}$. L'équation \eqref{eq:dtot} définit la demande totale pour la durée de l'horaire de travail .
\begin{align}
\label{eq:dtot}
@ -57,25 +57,25 @@ On définit l'horaire de l'employé $e$ de type $a$ par la matrice $X_{e,a}$\eqr
Afin de réduire la taille du problème, les listes des horaires quotidiens valides pour les deux types d'employés sont générées. Ces deux sous-problèmes de satisfaction peuvent aussi être résolus avec le solveur Choco \cite{choco}. L'énumération de toutes les solutions obtenues servira à générer l'ensemble des tuples d'une contrainte \textsc{Tableau}.
On définit un vecteur $\vec{H}_{a} \in \N^{J}$. Les variables booliennes $h_{j}$ forment un horaire de $J$ journées pour un employé de type $a$. Il doit respecter le nombre de périodes travaillées désirées \eqref{eq:contrnbpertravaillees}.
On définit un vecteur $\vec{W}_{a} \in \N^{J}$. Les variables booliennes $w_{j}$ forment un horaire de $J$ journées pour un employé de type $a$. Il doit respecter le nombre de périodes travaillées désirées \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}}
h_{min,a} \leq i\sum_{j=1}^{J} w_{j} \leq h_{max,a}
\end{align}
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}
\sum_{j=p1_{min}}^{p1_{max}} h_{j} = \sum_{j=p2_{min}}^{p2_{max}} h_{j}
\sum_{j=p1_{min}}^{p1_{max}} w_{j} = \sum_{j=p2_{min}}^{p2_{max}} w_{j}
\end{align}
Il doit inclure le travail durant une fin de semaine sur deux \eqref{eq:contrfinsemaine}.
\begin{align}
\label{eq:contrfinsemaine}
h_{6} &= h_{7} \wedge h_{13} = h_{14} \wedge h_{6} \neq h_{13}
w_{6} &= w_{7} \wedge w_{13} = w_{14} \wedge w_{6} \neq w_{13}
\end{align}
Il doit respecter le nombre maximum de jours consécutifs travaillés autorisés. On utilise une contrainte \textsc{Regular} \guillemotleft réifiée \guillemotright pour représenter le non-respect de cette contrainte: lorsqu une séquence de jours dont la longueur est supérieure à $j_{max,A}$. L'expression régulière qui modélise ces horaires est présentée à la figure \ref{fig:regexpautomate}. On obtient, pour chaque type de travailleur, une liste de vecteurs à laquelle on ajoute le vecteur nul, pour la situation où l'employé est exclu de l'horaire.
@ -87,10 +87,10 @@ Il doit respecter le nombre maximum de jours consécutifs travaillés autorisés
\label{fig:regexpautomate}
\end{figure}
Enfin, en effectuant le produit tensoriel de la matrice des horaires sur deux semaines $h_{reg,FT}$ \eqref{eq:horairejourvalide} et de la matrice des $n_{hq,a}$ horaires quotidiens \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 sur deux semaines $\mathbf{W}_a$ \eqref{eq:horairejourvalide} et de la matrice $\mathbf{Q}_a$ des horaires quotidiens \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{W}_a &= \left( \vec{W}_{a} \right)\\
\label{eq:horairequotidienvalide}
\mathbf{Q}_a &= \begin{bmatrix}
q_{1,1}& \cdots& q_{P,1}\\
@ -98,7 +98,7 @@ Enfin, en effectuant le produit tensoriel de la matrice des horaires sur deux se
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{W}_a \otimes \mathbf{Q}_a
\end{align}
\subsection{Contraintes}

View file

@ -2,7 +2,7 @@
\section{Description du problème}
\label{sec:description}
Nous présentons un problème de planification d'horaires de travail optimaux et robustes. L'approche de modélisation proposée inclut des éléments d'incertitude au niveau de l'absentéisme des employés et de la possibilité d'un accroissement temporaire de la demande à tout instant. L'horaire optimal sélectionné doit minimiser les couts de recouvrement des absences, en plus de permettre l'augmentation de la demande en employés tout en limitant le recours à des heures supplémentaires. Une fois que les scénarios aléatoires sont générés, il faut effectuer un recouvrement au cout le plus faible, tout en respectant un ensemble de contraintes différent.
Nous présentons un problème de planification d'horaires de travail optimaux et robustes. L'approche de modélisation proposée inclut des éléments d'incertitude au niveau de l'absentéisme des employés et de la possibilité d'un accroissement temporaire de la demande à tout instant. L'horaire optimal sélectionné doit minimiser les coûts de recouvrement des absences, en plus de permettre l'augmentation de la demande en employés tout en limitant le recours à des heures supplémentaires. Une fois que les scénarios aléatoires sont générés, il faut effectuer un recouvrement au coût le plus faible, tout en respectant un ensemble de contraintes différent.
\subsection{Instance considérée}
\label{sec:instanceconsideree}
@ -12,14 +12,14 @@ Nous présentons un problème de planification d'horaires de travail optimaux et
On considère la planification d'un horaire de travail initial sur un cycle de 14 jours. Chaque journée est composée de six périodes de travail, d'une durée de quatre heures chacune. Il y a deux types d'employés: à temps plein ($FT$) qui travaillent 80 heures régulières par cycle et à temps partiel ($PT$) qui travaillent entre 32 et 80 heures par cycle. La demande de travail quotidienne, soit le nombre d'employés requis par période de travail, est définie par le vecteur 2-2-4-4-3-3. Ainsi, le nombre d'employés requis est de deux pour la matinée, quatre pour le milieu de la journée et trois pour la soirée et ce, pour toute la durée du cycle.
Tous les employés, lorsqu'ils effectuent une journée de travail, sont présents durant deux périodes consécutives, pour une durée totale de huit heures. Les employés à temps plein débutent soit à la première, la troisième ou la cinquième période. Une période de repos minimale de 12 heures est requise entre deux séquences de travail. De plus, les employés à temps plein travaillent une fin de semaine sur deux et jamais plus de 5 journées consécutives. Ceux à temps partiel travaillent le même nombre de jours du lundi au vendredi.
Tous les employés, lorsqu'ils effectuent une journée de travail, sont présents durant deux périodes consécutives, pour une durée totale de huit heures. Les employés à temps plein débutent soit à la première, la troisième ou la cinquième période. Une période de repos minimale de 12 heures est requise entre deux séquences de travail. De plus, les employés à temps plein travaillent une fin de semaine sur deux et jamais plus de 5 journées consécutives. Ceux à temps partiel travaillent le même nombre de jours à l'intérieur de chacune des deux périodes allant du lundi au vendredi.
Les employés ont un salaire de base de 10\$/h. On ajoute 1\$/h pour ceux à temps partiel afin de compenser une plus faible productivité. Les employés à temps plein ont un salaire de 15\$/h pour les heures supplémentaires. De plus, le calcul du coût pour un cycle donné inclut des frais fixes de gestion de 50\$ par employé peu importe son type.
Les employés ont un salaire de base de 10\$/h. On ajoute 1\$/h pour ceux à temps partiel afin de compenser une plus faible productivité. Les employés à temps plein ont un salaire de 15\$/h pour les heures supplémentaires. De plus, le calcul du coût pour un cycle donné inclut des frais fixes de gestion de 50\$ par employé, peu importe son type.
\subsubsection{Incertitude}
\label{sec:descriptionincertitude}
On considère deux sources d'incertitude: les absences des employés et l'accroissement de la demande. Cette approche s'inspire des travaux de \cite{parisio_two-stage_2015}. La fréquence d'absence, à chaque période, variant entre $0$ et $0.1$. De plus, si une absence se produit durant la première période de travail d'un quart, la probabilité de retour à la période suivante est de 0.5. 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 une hausse d'un employé. On multiplie cette dernière probabilité par 0,2 pour obtenir la probabilité d'une hausse de deux employés et par 0,04 pour obtenir celle associée à trois employés supplémentaires. 10 scénarios d'augmentation de la demande de travail sont d'abord générés basés sur ces dernières probabilité. Pour chacun de ces scénarios, 100 horaires modifiés avec la génération d'absences sont ensuite obtenus, pour un total de 1000 simulations par horaire initial.
On considère deux sources d'incertitude: les absences des employés et l'accroissement de la demande. Cette approche s'inspire des travaux de \cite{parisio_two-stage_2015}. La fréquence d'absence, à chaque période, variant entre $0$ et $0.1$. De plus, si une absence se produit durant la première période de travail d'un quart, la probabilité de retour à la période suivante est de 0.5. 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 une hausse d'un employé. On multiplie cette dernière probabilité par 0,2 pour obtenir la probabilité d'une hausse de deux employés et par 0,04 pour obtenir celle associée à trois employés supplémentaires.
\subsubsection{Recouvrement}
\label{sec:descriptionrecouvrement}

View file

@ -2,10 +2,17 @@
\section{Protocole d'expérimentation}
\label{sec:demarcheexp}
\subsection{Métriques observées}
\label{sec:metriques}
Pour évaluer les résultats, les tailles d'instances seront comparées à l'aide du nombre de n{\oe}uds des arbres de recherche. La performance de l'algorithme de recherche sera observée par le nombre de retours arrière. Comme il s'agit d'un problème de satisfiabilité, la possibilité de résoudre l'instance pour différents paramètres prime sur la performance. Des vitesses de résolution de l'ordre des secondes sont toutefois envisageables.
Pour évaluer la qualité des horaires produite, le cout de recouvrement moyen, pour l'ensemble des simulations effectuées sur un horaire initial, sera considéré. Un cout minimal impliquera un horaire plus robuste.
\subsection{Production des horaires initiaux}
\label{sec:demarchehorairesinit}
L'instance de base pour la comparaison des différents résultats correspond au problème de satisfiabilité des contraintes de l'horaire initial.
Le problème de référence pour la comparaison des différents résultats correspond à la première solution retournée au problème de satisfiabilité des contraintes $\mathcal{C}_1$ et $\mathcal{C}_2$.
\begin{figure}[!ht]
\centering
@ -14,7 +21,7 @@ L'instance de base pour la comparaison des différents résultats correspond au
\label{fig:ModelesProposes}
\end{figure}
Les deux approches explorées pour la production des horaires initiaux sont présentés à la Figure \ref{fig:ModelesProposes}. La première approche explorée 1) a été de construire un seul modèle de programmation par contraintes pour l'ensemble du problème. Ce modèle rendait possible l'obtention de différents nombres d'employés par la possibilité d'inclure un horaire sans période de travail. Ce modèle incluait aussi les contraintes sur les horaires pour tous les deux types d'employés. Cette approche a permis de confirmer que notre problème était satisfiable avec les paramètres de l'instance choisis. Cependant, il était difficile d'obtenir une grande variété de solutions de façon efficace, ce qui était nécessaire pour choisir des horaires optimaux basés sur leur robustesse face à l'absentéisme et à l'augmentation de la demande.
Les deux approches explorées pour la production des horaires initiaux sont présentées à la Figure \ref{fig:ModelesProposes}. La première approche explorée 1) a été de construire un seul modèle de programmation par contraintes pour l'ensemble du problème. Ce modèle rendait possible l'obtention de différents nombres d'employés par la possibilité d'inclure un horaire sans période de travail. Ce modèle incluait aussi les contraintes sur les horaires pour tous les deux types d'employés. Cette approche a permis de confirmer que notre problème était satisfiable avec les paramètres de l'instance choisis. Cependant, il était difficile d'obtenir une grande variété de solutions de façon efficace, ce qui était nécessaire pour choisir des horaires optimaux basés sur leur robustesse face à l'absentéisme et à l'augmentation de la demande.
On a aussi testé une fonction d'optimisation inspirée des travaux de \cite{chapados_retail_2014}, mais notre formulation du problème faisait en sorte qu'il est toujours plus efficace de maximiser le nombre d'employés à temps plein. La satisfiabilité de l'instance est vérifiée pour différents nombres d'employés dans chaque cas et ensuite, il a pu être borné. Ce choix est devenu notre seconde approche 2).
@ -27,12 +34,12 @@ La contrainte $\mathcal{C}_2$ \eqref{eq:contrsumemployes} est donc relaxée pour
\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é sommairement. La construction d'un vecteur qui contient toutes les variables du problème est une condition nécessaire pour l'appel d'autres heuristiques dans le solveur Choco. Il s'est donc avéré difficile de mettre en {\oe}uvre cette exploration étant donné la taille de l'instance. L'heuristique par défaut est conservée. Cette approche nous a permis d'obtenir des solutions variées, permettant la suite du processus de création d'horaires optimaux et robustes.
L'utilisation de différentes euristiques de recherche a été explorée sommairement. La construction d'un vecteur qui contient toutes les variables du problème est une condition nécessaire pour l'appel d'autres euristiques dans le solveur Choco. Il s'est donc avéré difficile de mettre en {\oe}uvre cette exploration étant donné la taille de l'instance. L'euristique par défaut est conservée, mais l'utilisation de redémarrages aléatoires a ensuite été ajoutée. Cette approche nous a permis d'obtenir des solutions variées, permettant la suite du processus de création d'horaires optimaux 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 chaine 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'utiliser cette approche, mais afin de conserver la capacité de générer des scénarios où le recouvrement est possible, le choix d'une distribution indépendante pour chaque période est plus simple.
L'approche des chaines de Markov 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'utiliser cette approche, mais afin de conserver la capacité de générer des scénarios où le recouvrement est possible, le choix d'une distribution indépendante pour chaque période est plus simple. 10 scénarios d'augmentation de la demande de travail sont générés. Pour chacun de ces scénarios, 100 horaires modifiés avec la génération d'absences sont ensuite obtenus, pour un total de 1000 simulations par horaire initial.
%%% Local Variables:
%%% mode: latex

View file

@ -3,7 +3,8 @@
\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 un temps assez court, mais ne parvient pas à offrir d'autres solutions par la suite.
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 un temps assez court, mais ne parvient pas à offrir d'autres solutions par la suite dans un temps raisonnable. Les statistiques de ces deux exécutions se trouvent à la table \ref{table:ststsreference}.
\begin{table}[!h]
\centering
\caption{Statistiques, référence et première approche}
@ -18,7 +19,7 @@ $1^{re}$ approche & 4,039 & 26129 & 43200 \\
\end{tabular}
\end{table}
La seconde approche permet de constater la structure du problème: la complexité de celui-ci est davantage influencée par la résolution des horaires des employés à temps partiel. Lorsque le nombre d'employés à temps plein augmente, la taille de l'instance diminue considérablement.
La seconde approche permet de constater la structure du problème: la complexité de celui-ci est davantage influencée par la résolution des horaires des employés à temps partiel. Lorsque le nombre d'employés à temps plein augmente, la taille de l'instance diminue considérablement. Les résultats de la table \ref{table:stats-approche2} sont obtenus par simulation.
\begin{table}[!h]
\centering