ajouts au rapport, introduction et contrainte de bris de symétrie

This commit is contained in:
François Pelletier 2018-04-15 13:53:01 -04:00
parent ed45dbfc2c
commit d045e517c5
22 changed files with 139 additions and 1484 deletions

39
.gitignore vendored
View file

@ -1,3 +1,38 @@
choco-4.0.6
choco*
/tp/code/TP/Travail_de_session/nbproject/private/
/out
## Core latex/pdflatex auxiliary files:
*.aux
*.lof
*.log
*.lot
*.fls
*.out
*.toc
*.fmt
*.fot
*.cb
*.cb2
.*.lb
/tp/code/TP/Travail_de_session/nbproject/private/
## Bibliography auxiliary files (bibtex/biblatex/biber):
*.bbl
*.bcf
*.blg
*-blx.aux
*-blx.bib
*.run.xml
## Build tool auxiliary files:
*.fdb_latexmk
*.synctex
*.synctex(busy)
*.synctex.gz
*.synctex.gz(busy)
*.pdfsync
## Intellij
.idea/
*.iml
*.iws
*.ipr

View file

@ -3,61 +3,61 @@
\label{sec:AnnexeHoraires}
\pagebreak
\begin{landscape}
\begin{figure}[ht]
\begin{table}[ht]
\centering
\includegraphics[width=25cm]{Figures/InitialSchedule1.png}
\includegraphics[width=25cm]{Tables/InitialSchedule1.png}
\caption{Horaire initiale ayant un ratio employés temps plein / employés temps partiel de 0.11.}
\label{fig:InitialSchedule1}
\end{figure}
\end{table}
\begin{figure}[ht]
\begin{table}[ht]
\centering
\includegraphics[width=25cm]{Figures/InitialSchedule2.png}
\includegraphics[width=25cm]{Tables/InitialSchedule2.png}
\caption{Horaire initiale ayant un ratio employés temps plein / employés temps partiel de 0.17.}
\label{fig:InitialSchedule2}
\end{figure}
\end{table}
\begin{figure}[ht]
\begin{table}[ht]
\centering
\includegraphics[width=25cm]{Figures/InitialSchedule3.png}
\includegraphics[width=25cm]{Tables/InitialSchedule3.png}
\caption{Horaire initiale ayant un ratio employés temps plein / employés temps partiel de 0.22.}
\label{fig:InitialSchedule3}
\end{figure}
\end{table}
\begin{figure}[ht]
\begin{table}[ht]
\centering
\includegraphics[width=25cm]{Figures/InitialSchedule4.png}
\includegraphics[width=25cm]{Tables/InitialSchedule4.png}
\caption{Horaire initiale ayant un ratio employés temps plein / employés temps partiel de 0.28.}
\label{fig:InitialSchedule4}
\end{figure}
\end{table}
\begin{figure}[ht]
\begin{table}[ht]
\centering
\includegraphics[width=25cm]{Figures/InitialSchedule5.png}
\includegraphics[width=25cm]{Tables/InitialSchedule5.png}
\caption{Horaire initiale ayant un ratio employés temps plein / employés temps partiel de 0.33.}
\label{fig:InitialSchedule5}
\end{figure}
\end{table}
\begin{figure}[ht]
\begin{table}[ht]
\centering
\includegraphics[width=25cm]{Figures/InitialSchedule6.png}
\includegraphics[width=25cm]{Tables/InitialSchedule6.png}
\caption{Horaire initiale ayant un ratio employés temps plein / employés temps partiel de 0.39.}
\label{fig:InitialSchedule6}
\end{figure}
\end{table}
\begin{figure}[ht]
\begin{table}[ht]
\centering
\includegraphics[width=25cm]{Figures/InitialSchedule7.png}
\includegraphics[width=25cm]{Tables/InitialSchedule7.png}
\caption{Horaire initiale ayant un ratio employés temps plein / employés temps partiel de 0.44.}
\label{fig:InitialSchedule7}
\end{figure}
\end{table}
\begin{figure}[ht]
\begin{table}[ht]
\centering
\includegraphics[width=25cm]{Figures/InitialSchedule8.png}
\includegraphics[width=25cm]{Tables/InitialSchedule8.png}
\caption{Horaire initiale ayant un ratio employés temps plein / employés temps partiel de 0.50.}
\label{fig:InitialSchedule8}
\end{figure}
\end{table}
\end{landscape}
%%% Local Variables:

View file

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 83 KiB

View file

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 82 KiB

View file

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 83 KiB

View file

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 82 KiB

View file

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 82 KiB

View file

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 82 KiB

View file

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 82 KiB

View file

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 81 KiB

View file

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 34 KiB

View file

@ -0,0 +1,24 @@
digraph etapes {
graph [splines=false];
node[fontsize=10, color=black, shape=box, width=3, height=0.5];
a[label="Générer les tableaux\nd'horaires valides"];
b1[label="Générer les horaires initiales"];
b2[label="Calculer le coût initial"];
c1[label="Générer les scénarios d'absences"];
c2[label="Calculer le coût\ndes absences"];
d1[label="Générer les horaires\nde recouvrement optimales"];
d2[label="Calculer le coût\nde recouvrement moyen"];
{a -> b1};
{rank=same;b1 -> b2};
{b2 -> c1};
{rank=same;c1 -> c2};
{c2 -> d1};
{rank=same;d1 -> d2};
edge[style=invis];
{b1 -> c1 -> d1};
{b2 -> c2 -> d2};
}

Binary file not shown.

View file

@ -3,8 +3,15 @@
La planification d'horaires de travail est un enjeu important pour plusieurs industries et entités gouvernementales. Une mauvaise planification des ressources en fonction de la demande de travail d'une entreprise peut entraîner une diminution des profits en plus d'avoir des répercussions sur les dates de livraison de ses différents contrats. Parmi les raisons qui rendent cette tâche difficile, il y a les restrictions complexes provenant de la loi du travail, une variabilité de la demande de travail selon les période de l'année et une incertitude liée à l'absentéisme des employés. Il devient donc important de produire des horaires de travail permettant une flexibilité d'ajustement en fonction de la demande de travail et de l'absentéisme des employés, tout en minimisant le coût des salaires.
Le présent travail propose une approche pour la génération d'horaires de travail optimale en fonction du taux d'absentéisme et du taux d'augmentation de la demande de travail.
Le présent travail propose une approche pour la génération d'horaires de travail optimales et robustes en fonction du taux d'absentéisme et du taux d'augmentation de la demande de travail. Les différentes étapes suivies sont présentées à la Figure \ref{fig:etapes}.
\begin{figure}[h]
\centering
\label{fig:etapes}
\includegraphics[]{etapes}
\caption{Étapes de la production d'horaires optimales et robustes}
\end{figure}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "rapport_de_recherche"

View file

@ -1,13 +1,16 @@
build: rapport_de_recherche.pdf
maxconsecutif.svg:
maxconsecutif.pdf:
dot -Tpdf maxconsecutif.dot -o maxconsecutif.pdf
etapes.pdf:
dot -Tpdf etapes.dot -o etapes.pdf
rapport_de_recherche.pdf: rapport_de_recherche.bbl
pdflatex rapport_de_recherche.tex
pdflatex rapport_de_recherche.tex
rapport_de_recherche.bbl: rapport_de_recherche.tex maxconsecutif.svg
rapport_de_recherche.bbl: rapport_de_recherche.tex maxconsecutif.pdf etapes.pdf
pdflatex rapport_de_recherche.tex
bibtex rapport_de_recherche.aux
@ -22,3 +25,6 @@ clean:
-rm *.log
-rm *.out
-rm *.toc
-rm *.pdf

View file

@ -24,7 +24,7 @@ Notre modèle considère deux types $A$ d'employés: les employés à temps plei
\begin{align}
\label{typeemployes}
A \in {FT,PT}
A \in \lbrace FT,PT \rbrace
\end{align}
Ils travaillent des périodes consécutives d'une durée $i_{A}$ heures. L'intervalle de travail des employés à temps plein doit cependant débuter à la première, troisième ou cinquième période. On définit aussi un nombre d'heures de repos minimal $r_{min,A}$ entre les périodes travaillées. Les employés à temps plein travaillent $h_{reg}^{FT}$ heures par période de deux semaines et les employés à temps partiel travaillent entre $h_{min}^{PT}$ et $h_{max}^{PT}$ heures durant cette même période. Les employés ne travaillent pas plus que $j_{max,A}$ journées consécutives. Le nombre d'employés $E$ de chaque type est variable et sera déterminé par les ratios \eqref{eq:eftept}:
@ -84,7 +84,7 @@ L'horaire doit inclure le travail durant une fin de semaine sur deux \eqref{eq:c
h_{6} &= h_{7} \wedge h_{13} = h_{14} \wedge h_{6} \neq h_{13}
\end{align}
L'horaire 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, c'est-à-dire lorsque qu'on retrouve une séquence de jours consécutifs dont la longueur est supérieure à $j_{max,A}$. L'automate fini pour cette contrainte lorsque $j_{max,A}=4$ est représenté à la Figure \ref{fig:automatemaxconsecutif}. L'expression régulière représentant cet automate prend la forme \texttt{[01]*1\{5,\}[01]*}.
L'horaire 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, c'est-à-dire lorsque qu'on retrouve une séquence de jours consécutifs dont la longueur est supérieure à $j_{max,A}$. L'automate fini pour cette contrainte lorsque $j_{max,A}=4$ est représenté à la Figure \ref{fig:automatemaxconsecutif}.
\begin{figure}[ht]
\centering
@ -93,7 +93,16 @@ L'horaire doit respecter le nombre maximum de jours consécutifs travaillés aut
\label{fig:automatemaxconsecutif}
\end{figure}
On obtient, pour chaque type de travailleur, une liste de vecteurs à laquelle on ajouter le vecteur nul, représentant la situation où l'employé est exclus de l'horaire.
L'expression régulière représentant cet automate est représenté à la Figure \ref{fig:regexpautomate}. On obtient, pour chaque type de travailleur, une liste de vecteurs à laquelle on ajouter le vecteur nul, représentant la situation où l'employé est exclus de l'horaire.
\begin{figure}[ht]
\centering
\fbox{\texttt{[01]*1\{5,\}[01]*}}
\caption{Expression régulière représentant l'automate fini}
\label{fig:regexpautomate}
\end{figure}
\subsubsection{Ajout des périodes}
\label{sec:horaireajoutperiode}
@ -115,15 +124,16 @@ On considère la matrice des horaires quinzomadaires valides \eqref{eq:horairejo
\subsection{Contraintes}
\label{sec:contraintes}
Chaque horaire d'employé 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}.
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}.
\begin{align}
\label{eq:contraintetableau}
\mathcal{C}_1 &: \textsc{Tableau}\left( \mathbf{V}_A,
\begin{bmatrix}x_{e,1,1}&\cdots&x_{e,1,J}\\
X_e &= \begin{bmatrix}x_{e,1,1}&\cdots&x_{e,1,J}\\
\vdots&\ddots&\vdots\\
x_{e,P,1}&\cdots&x_{e,P,J}
\end{bmatrix}\right) & \forall e
\end{bmatrix}\\
\label{eq:contraintetableau}
\mathcal{C}_1 &: \textsc{Tableau}\left( \mathbf{V}_A,
X_e \right) & \forall e
\end{align}
La planification doit aussi satisfaire la demande en employés, en utilisant une contrainte \textsc{Sum} \eqref{eq:contrsumemployes}.
@ -133,6 +143,12 @@ La planification doit aussi satisfaire la demande en employés, en utilisant une
\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
\end{align}
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 \eqref{eq:lex}.
\begin{align}
\label{eq:lex}
X_i &\leq X_{i+1} &\forall i \in [1,E^A],A
\end{align}
\subsection{Fonction objectif}
\label{sec:fonctionobjectif}

File diff suppressed because it is too large Load diff

View file

@ -1,4 +1,4 @@
\documentclass[12pt]{article} % Précise le type de document, et la taille de la police de caractère
\documentclass[11pt]{article} % Précise le type de document, et la taille de la police de caractère
\usepackage[square,sort,numbers]{natbib}% Pour pouvoir utiliser une bibliographie externe
\usepackage[french]{babel} % Pour préciser la langue du document
\usepackage[utf8]{inputenc} % Précise comment le texte est saisi : cela permet de tapper directement les accents
@ -57,12 +57,17 @@
\usepackage{cprotect} % Pour pouvoir personaliser la légende des figures
\DeclareMathOperator*{\argmax}{arg\,max}
\DeclareMathOperator*{\argmin}{arg\,min}
\setlength{\fboxsep}{3pt}
\setlength{\fboxrule}{1pt}
%----------------------------------------------------------------
\begin{document}
\input{pagetitre} % Inclut le code contenu dans un fichier comme s'il était entré ici
\tableofcontents
%\listoffigures
\newpage
\listoffigures
\newpage
\listoftables
% Le package newclude mis en commentaire permet d'introduire une * pour éviter le saut de page entre les section
\include{introduction}
\include{modelisation}

View file

@ -6,21 +6,21 @@
\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 de ces derniers, 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.
\begin{figure}[ht]
\begin{table}[ht]
\centering
\includegraphics[width=16cm]{Figures/TableaueffetsParametres.png}
\includegraphics[width=16cm]{Tables/TableaueffetsParametres.png}
\caption{Effet des probabilités d'absentéisme et d'augmentation de la demande de travail sur le coût moyen de recouvrement des horaires.}
\label{table:TableauEffetsParametres}
\end{figure}
\end{table}
Comme le montre ce tableau, pour une probabilité d'absentéisme nulle (sans absence), le coût des horaires augmente en fonction du nombre d'employé à temps partiel. Cela est dû au fait que ces employés ont un taux horaire régulier 20\% plus élevé que celui des employés à temps plein. De plus, pour tous les ratios de type employés, l'augmentation de la probabilité d'absentéisme et l'augmentation de la probabilité d'augmentation de la demande de travail sont associées à l'augmentation du coût de recouvrement des horaires. Cette augmentation de coûts est liée au temps supplémentatire des employés à temps plein (+50\%) ainsi que du taux horaire régulier supérieur des employés à temps partiel, lesquels sont privilégiés pour effectuer les recouvrements. Enfin, ces résultats démontrent que le ratio de type d'employés qui conduit à l'horaire avec un coût de recouvrement minimal varie selon les deux paramètres testés. En effet, lorsque le nombre d'absence et/ou la demande de travail supplémentaire augmente de façon importante, un nombre d'employés à temps partiel supérieur par rapport au nombre d'employés à temps plein permet d'obtenir un horaire au coût de recouvrement le plus faible. La prinpale raison est un diminution du temps supplémentaire effectué par les employés à temps plein. La Figure xx montre les ratios de type d'employés à privilégier pour la construction d'horaires en fonction des probabilités d'absence et d'augmentation de la demande de travail.
\begin{figure}[ht]
\begin{table}[ht]
\centering
\includegraphics[width=16cm]{Figures/Mapping.png}
\caption{Proportion d'employés à temps plein optimale en fonction des probabilités d'absentéisme et d'augmentation de la demande de travail.}
\label{table:MappingRatioOptimal}
\end{figure}
\end{table}
%%% Local Variables:
%%% mode: latex

View file

@ -49,7 +49,7 @@ public class MainClass {
InitialSchedules.ParametersInitialSchedules myScheduleParameters = new InitialSchedules.ParametersInitialSchedules();
int minFullTimeEmployee = 3; //La solution avec 1 employes est trop lente
int minFullTimeEmployee = 2; //La solution avec 1 employes est trop lente
int maxFullTimeEmployee = 9; //9 est le max d'employes a temps plein pour la presente requiredWorkforce

Binary file not shown.