ajout de documentation constraintes optimisation
This commit is contained in:
parent
75893ae424
commit
c0cd31fe32
3 changed files with 86 additions and 2 deletions
54
tp/code/execution-20180204.txt
Normal file
54
tp/code/execution-20180204.txt
Normal 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
10
tp/code/makefile
Normal 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
|
|
@ -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}
|
||||
|
|
Loading…
Reference in a new issue