ajout de documentation constraintes optimisation

This commit is contained in:
François Pelletier 2018-02-07 19:13:13 -05:00
parent 75893ae424
commit c0cd31fe32
3 changed files with 86 additions and 2 deletions

View file

@ -0,0 +1,54 @@
-*- mode: compilation; default-directory: "~/git/tpIFT7020/tp/code/" -*-
Compilation started at Mon Feb 5 00:07:51
make run
javac -cp .:choco-solver-4.0.6-with-dependencies.jar ProductionHoraire.java
java -cp .:choco-solver-4.0.6-with-dependencies.jar ProductionHoraire instance.txt
### Debut Validation Lecture Instance ###
N=5
MIN_H=10
MAX_H=14
MIN_PERIODE=3
nbEmployesRequis=[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2]
nbEmployesSouhaite=[1, 2, 3, 4, 5, 4, 2, 3, 4, 3, 5, 5, 4, 3, 3, 3]
### Fin Validation Lecture Instance ###
### Création: contrainte du nombre requis d'employés ###
### Création: contrainte du motif d'horaire ###
Expression régulière:0{0,5}1{3,10}01{3,10}0{0,5}
### Création: Optimisation ###
### Création: Solveur ###
### Résolution ###
### Meilleure Solution ###
Employé 0: 0 1 1 1 1 1 0 1 1 1 1 1 0 0 0 0
Employé 1: 0 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1
Employé 2: 0 0 0 0 1 1 1 1 0 1 1 1 1 1 1 1
Employé 3: 0 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1
Employé 4: 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 0
Employés Totaux
1 2 3 4 5 4 2 5 4 5 5 5 4 3 3 3
Employés Souhaités
1 2 3 4 5 4 2 3 4 3 5 5 4 3 3 3
Perte optimale:80$
### Statistiques ###
** Choco 4.0.6 (2017-11) : Constraint Programming Solver, Copyleft (c) 2010-2017
- Model[Production Horaire] features:
Variables : 133
Constraints : 64
Building time : 0,790s
User-defined search strategy : yes
Complementary search strategy : no
- Complete search - 2 solution(s) found.
Model[Production Horaire]
Solutions: 2
MINIMIZE perte = 4,
Building time : 0,790s
Resolution time : 0,567s
Nodes: 3 052 (5 380,5 n/s)
Backtracks: 6 052
Fails: 3 000
Restarts: 2
Compilation finished at Mon Feb 5 00:07:53

10
tp/code/makefile Normal file
View file

@ -0,0 +1,10 @@
all: ProductionHoraire.class
%.class: %.java
javac -cp .:choco-solver-4.0.6-with-dependencies.jar $<
run: ProductionHoraire.class
java -cp .:choco-solver-4.0.6-with-dependencies.jar ProductionHoraire instance.txt
clean:
rm *.class

View file

@ -50,6 +50,13 @@ $e_{j}^{eff}$, le nombre d'employés effectif à la période $j$, et $e_{j}^{dis
e_{j}^{dist} &= \lvert e_{j}^{eff} - e_j^{souh} \rvert & \forall 1 \leq j \leq N_P
\end{align}
Enfin, nous créons une variable $N_{PERTE}$ représentant le total des unités de perte, équivalant
à la somme des différences absolues. Le nombre total d'unités de perte prend une valeur dans l'intervalle $[0,N \times N_P]$.
\begin{align}
N_{PERTE} = \sum_{j=1}^{N_P} e_j^{dist}
\end{align}
\subsubsection{Nombre total de variables}
\label{sec:q2nbtotvar}
@ -125,12 +132,25 @@ Le nombre total de contraintes pour les définitions \eqref{eq:q2c1}, \eqref{eq:
N_P + N + N &= N_P + 2N \in \theta(N)
\end{align}
\subsection{Optimisation}
\label{sec:q2optimisation}
Dans Choco, les contraintes d'optimisation sont crées de la même façon que les contraintes de satisfaction. Cependant, une des variables ne sera pas une constante, mais un intervalle dans lequel la fonction d'optimisation va effectuer sa recherche.
Nous implémenterons le nombre de travailleurs effectifs $e_j^{eff}$ à la période $j$ en utilisant une contrainte \textsc{Sum}:
\begin{align}
&\textsc{Sum}(e_{1j},\ldots,e_{Nj},e_j^{eff}) & \forall 1 \leq j \leq N_P
\end{align}
Nous implémenterons ensuite la différence entre le nombre de travailleurs effectifs et souhaités $e_j^{dist}$ à la période $j$ en utilisant une contrainte \textsc{Distance}:
\begin{align}
&\textsc{Distance}(e_j^{souh},e_j^{eff},e_j^{dist}) & \forall 1 \leq j \leq N_P
\end{align}
Enfin, la variable $N_{PERTE}$ est implémentée par une contrainte \textsc{Sum}:
\begin{align}
\textsc{Sum}(e_1^{dist},\ldots,e_{N_P}^{dist},N_{PERTE})
\end{align}
\subsection{Paramètres}
\label{sec:q2parametres}