structure du code standardisée pour Maven
This commit is contained in:
parent
b19056f41e
commit
59369ed50f
45 changed files with 97 additions and 24 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,5 +1,6 @@
|
|||
choco*
|
||||
/tp/code/TP/Travail_de_session/nbproject/private/
|
||||
Travail_de_session/schedulingproject/target/
|
||||
/out
|
||||
## Core latex/pdflatex auxiliary files:
|
||||
*.aux
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
|
||||
\section{Annexe 1 : Horaires initiales générées par le modèle}
|
||||
\section*{Annexe 1 : Horaires initiales générées par le modèle}
|
||||
\label{sec:AnnexeHoraires}
|
||||
\pagebreak
|
||||
\begin{landscape}
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
|
||||
\section{Annexe 2 : Pseudo-Code de l'algorithme de recouvrement des horaires}
|
||||
\section*{Annexe 2 : Pseudo-Code de l'algorithme de recouvrement des horaires}
|
||||
\label{sec:AnnexePseudo}
|
||||
\pagebreak
|
||||
\begin{landscape}
|
||||
|
|
|
@ -8,7 +8,7 @@ Ce problème sera modélisé à l'aide de la programmation par contraintes avec
|
|||
\centering
|
||||
\label{fig:etapes}
|
||||
\includegraphics[]{etapes}
|
||||
\caption{Étapes de la production d'horaires optimaux et robustes. **** J'ai modié le .dot, il faudrait le regénérer. Aussi, J'enlèverais la première étape, car elle est incluse dans l'étape 2.*****}
|
||||
\caption{Étapes de la production d'horaires optimaux et robustes}
|
||||
\end{figure}
|
||||
|
||||
\subsection{Paramètres}
|
||||
|
|
|
@ -9,7 +9,7 @@ digraph etapes {
|
|||
c1[label="Générer les horaires\nde recouvrement optimales"];
|
||||
c2[label="Calculer le coût de recouvrement\n des horaires modifiés"];
|
||||
d1[label="Calculer le coût de recouvrement\n moyen pour chaque horaire initial"];
|
||||
d2[label="Déterminer les horaires optimaux \n basé sur le coût de recouvrement moyen"];
|
||||
d2[label="Déterminer les horaires optimaux\n basé sur le coût de recouvrement moyen"];
|
||||
|
||||
|
||||
{a -> b1};
|
||||
|
|
Binary file not shown.
|
@ -3,7 +3,7 @@
|
|||
|
||||
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 stoechastique pour la génération d'horaires de travail robustes en fonction du taux d'absentéisme et du taux d'augmentation de la demande de travail. Une banque d'horaires valides est d'abord générée avec le solveur Choco de manière efficace et en prenant soin d'obtenir des horaires avec des différences importantes quant aux types d'employés (temps plein ou temps partiel) la caractérisant. Par la suite, ces différents horaires sont soumis à des simulations durant lesquelles sont générées des absences et des augmentations ponctuelles de la demande de travail. Un algorithme de recouvrement est ensuite utilisé pour combler les différentes plages horaires en déficit de main-d'oeuvre. Les coûts de recouvrement moyens de ces différents horaires modifiés serviront à évaluer la robustesse des horaires face aux probabilités d'absentéisme et d'augmentation de la demande. Enfin, des résultats montreront que cette méthode permet d'évaluer le ratio employés temps plein / employés temps partiel optimal en fonction des probabilités d'absentéisme et d'augmentation de la charge de travail.
|
||||
Le présent travail propose une approche stoechastique pour la génération d'horaires de travail robustes en fonction du taux d'absentéisme et du taux d'augmentation de la demande de travail. Une banque d'horaires valides est d'abord générée avec le solveur Choco de manière efficace et en prenant soin d'obtenir des horaires avec des différences importantes quant aux types d'employés (temps plein ou temps partiel) la caractérisant. Par la suite, ces différents horaires sont soumis à des simulations durant lesquelles sont générées des absences et des augmentations ponctuelles de la demande de travail. Un algorithme de recouvrement est ensuite utilisé pour combler les différentes plages horaires en déficit de main-d'oeuvre. Les coûts de recouvrement moyens de ces différents horaires modifiés serviront à évaluer la robustesse des horaires face aux probabilités d'absentéisme et d'augmentation de la demande. Enfin, des résultats montreront que cette méthode permet d'évaluer le ratio \texttt{employés temps plein / employés temps partiel} optimal en fonction des probabilités d'absentéisme et d'augmentation de la charge de travail.
|
||||
|
||||
%%% Local Variables:
|
||||
%%% mode: latex
|
||||
|
|
Binary file not shown.
|
@ -63,26 +63,20 @@
|
|||
|
||||
\begin{document}
|
||||
\input{pagetitre} % Inclut le code contenu dans un fichier comme s'il était entré ici
|
||||
\thispagestyle{empty}
|
||||
\tableofcontents
|
||||
\newpage
|
||||
\listoffigures
|
||||
\newpage
|
||||
\listoftables
|
||||
\newpage
|
||||
% Le package newclude mis en commentaire permet d'introduire une * pour éviter le saut de page entre les section
|
||||
|
||||
\clearpage
|
||||
\pagenumbering{arabic}
|
||||
\input{introduction}
|
||||
\input{description}
|
||||
\input{approche}
|
||||
\input{experimentation}
|
||||
\input{resultatsetdiscussion}
|
||||
\input{conclusion}
|
||||
|
||||
\newpage
|
||||
\bibliography{bibliographie}
|
||||
\newpage
|
||||
\input{Annexe1}
|
||||
\newpage
|
||||
\input{Annexe2}
|
||||
\end{document}
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
\centering
|
||||
\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.}
|
||||
\includegraphics[width=16cm]{Tables/TableaueffetsParametres.png}
|
||||
\label{tableau:TableauEffetsParametres}
|
||||
\label{table:TableauEffetsParametres}
|
||||
\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 10\% 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 à l'augmentation des heures travaillées (hausse de la demande), au temps supplémentaire 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 principale raison est une diminution du temps supplémentaire effectué par les employés à temps plein. La Figure \ref{fig:MappingRatioOptimal} montre les ratios de type d'employés à privilégier pour la construction des horaires en fonction des probabilités d'absence et d'augmentation de la demande de travail.
|
||||
|
|
Binary file not shown.
12
Travail_de_session/schedulingproject/README
Normal file
12
Travail_de_session/schedulingproject/README
Normal file
|
@ -0,0 +1,12 @@
|
|||
Auteur: François Bérubé et François Pelletier
|
||||
Titre: Plantification d'horaires robustes
|
||||
Date: 20 avril 2018
|
||||
|
||||
Ce projet est construit avec Apache Maven
|
||||
Exécuter les commandes suivantes pour construire le projet et exécuter le programme
|
||||
|
||||
mvn install
|
||||
mvn package
|
||||
java -cp target/schedulingproject-1.0-SNAPSHOT-jar-with-dependencies.jar MainClass.MainClass
|
||||
|
||||
Le projet peut aussi être exécuté depuis un IDE tel qu'IntelliJ IDEA ou NetBeans
|
66
Travail_de_session/schedulingproject/pom.xml
Normal file
66
Travail_de_session/schedulingproject/pom.xml
Normal file
|
@ -0,0 +1,66 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>ca.ulaval.ift7008</groupId>
|
||||
<artifactId>schedulingproject</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<url>http://maven.apache.org</url>
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||
</properties>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>net.sourceforge.jdistlib</groupId>
|
||||
<artifactId>jdistlib</artifactId>
|
||||
<version>0.4.5</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.choco-solver</groupId>
|
||||
<artifactId>choco-solver</artifactId>
|
||||
<version>4.0.6</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.3</version>
|
||||
<configuration>
|
||||
<source>1.8</source>
|
||||
<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>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
|
@ -1,9 +1,11 @@
|
|||
package MainClass;
|
||||
|
||||
import InitialSchedules.*;
|
||||
import ScheduleUtil.*;
|
||||
import SchedulesRecovery.*;
|
||||
import ModifiedSchedules.*;
|
||||
import jdistlib.rng.MersenneTwister;
|
||||
import jdistlib.rng.RandomEngine;
|
||||
import net.sourceforge.jdistlib.rng.MersenneTwister;
|
||||
import net.sourceforge.jdistlib.rng.RandomEngine;
|
||||
import org.chocosolver.solver.Solution;
|
||||
|
||||
import java.util.ArrayList;
|
|
@ -1,7 +1,7 @@
|
|||
package ModifiedSchedules;
|
||||
|
||||
import jdistlib.Binomial;
|
||||
import jdistlib.rng.RandomEngine;
|
||||
import net.sourceforge.jdistlib.Binomial;
|
||||
import net.sourceforge.jdistlib.rng.RandomEngine;
|
||||
|
||||
public class AbsencesVector {
|
||||
public boolean[] AbsencesVector;
|
|
@ -2,7 +2,7 @@ package ModifiedSchedules;
|
|||
|
||||
import InitialSchedules.*;
|
||||
import ScheduleUtil.*;
|
||||
import jdistlib.rng.RandomEngine;
|
||||
import net.sourceforge.jdistlib.rng.RandomEngine;
|
||||
|
||||
public class ModifiedSchedulesArray extends SchedulesArray{
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package ModifiedSchedules;
|
||||
|
||||
import jdistlib.Binomial;
|
||||
import jdistlib.rng.RandomEngine;
|
||||
import net.sourceforge.jdistlib.Binomial;
|
||||
import net.sourceforge.jdistlib.rng.RandomEngine;
|
||||
|
||||
public class VariableDemandVector {
|
||||
public int[] variableDemandVector;
|
Loading…
Reference in a new issue