Chapitre 3 Résolution heuristique du problème flow

Transcription

Chapitre 3 Résolution heuristique du problème flow
Chapitre 3
Résolution heuristique du problème
flow-shop avec contrainte no-idle
Il est connu qu’une méthode de séparation et d'évaluation a l’inconvénient d’être
exponentielle lorsque le nombre des données augmente. Pour cela, il est important de trouver
des solutions approchées pour le problème étudié.
Nous nous proposons, dans ce chapitre, d’étudier une première heuristique en O(n*log(n))
pour le cas d’un flow-shop de permutation à trois machines, puis une deuxième heuristique en
O(n3) pour le cas plus général d’un nombre quelconque de machines. Nous situerons les
performances de ces heuristiques par rapport à celles de l’algorithme de type séparation et
évaluation tel que complété au chapitre précédent ainsi que par rapport aux résultats d’un
solveur de programmation entière mixte (Lingo). A la fin du chapitre, nous étudierons une
troisième heuristique pour le cas d’un flow-shop hybride à trois étages.
Nous verrons de façon évidente, d’après ce qui va suivre, que de tout ordonnancement
possible on peut déduire directement un ordonnancement no-idle. Cependant, l’ordre des
travaux dans la solution optimale du problème F // C max n’est généralement pas celui
d’une solution optimale pour le problème F / no − idle / C max et inversement. Ces deux
problèmes sont de fait différents.
1. Heuristique pour la résolution du problème F 3 / no − idle / C max
Rappelons que Baptiste et Hguny ont prouvé que le problème F 3 / no − idle / C max est un
problème NP-difficile [Baptiste et Hguny, 1997]. Pour le cas de deux machines, la résolution
est similaire à la résolution du problème F 2 // C max qui est obtenue en ordonnant les travaux
suivant Johnson (une fois l'ordre de Johnson arrêté, on décale vers la droite les travaux
ordonnancés sur la deuxième machine jusqu'à ce que tous les temps morts soient éliminés ; ce
décalage n’augmente pas le C max ).
75
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
Ainsi, l’ordre des travaux dans la solution optimale du problème F 2 // C max reste valable
pour la solution du problème F 2 / no − idle / C max . Mais il suffit de voir sur l’exemple 3.1
que cela n’est pas vrai à partir de n = 3.
Exemple 3.1. Soient les durées d’exécution d’un problème d’ordonnancement de type flowshop présentées par la table 3.1.
M1
M2
M3
J1
12
6
16
J2
14
19
11
J3
13
18
14
J4
10
12
12
J5
14
6
17
Table 3.1. Durées d’exécution d’un problème flow-shop
La résolution du problème F // C max donne comme solution l’ordre J1, J4, J3, J5, J2 avec un
C max égal à 95. La suppression des temps d’arrêt pour respecter la contrainte no-idle donne
un C max égal à 99. Cependant, la résolution directe du problème F / no − idle / C max
donne comme solution l’ordre J5, J4, J3, J1, J2 avec un C max égal à 98 ; le même ordre sans
respecter la contrainte no-idle donne un C max égal à 96.
Cela dit, du fait que l’ordre de Johnson fournit un ordonnancement optimal dans le cas de
deux machines, nous sommes tentés de construire des solutions approchées pour le cas de
trois machines en partant d’un ordre de Johnson sur deux des trois machines, d’où
l’heuristique suivante.
1.1. Heuristique
Soit C max( M 2, M 3) le makespan obtenu pour un ordonnancement des travaux opérés
uniquement sur M2 et M3. Sur la machine M2, il n’y a aucun temps mort. Sur la machine M3,
les temps morts peuvent être supprimés par tassement à droite des travaux sur cette machine
et ceci sans avoir à modifier le C max( M 2, M 3) .
Le placement des travaux dans cet ordre sur la machine M1 amène à un décalage global des
travaux sur M2 et, par conséquent, un même décalage des travaux sur la machine M3. La
valeur de ce décalage est égale au maximum des intervalles Ci , M 1 − Si , M 2 pour i = 1…n. Le
76
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
C max d’un ordonnancement de ces travaux sur M1, M2 et M3 avec la contrainte no-idle est
égal à la somme de C max( M 2, M 3) , la durée opératoire du premier travail sur la première
machine (M1) et le plus grand décalage des différents décalages des travaux à droite
nécessaires pour vérifier la contrainte no-idle sur M2. Nous avons alors la formule suivante :
C max = C max( M 2 , M 3) + p1, M 1 + max
(0, Ci , M 1 − Si , M 2)
i = 2.. n
où p1, M 1 est la durée opératoire du travail J1 sur la machine M1,
Ci,Mj la date d’achèvement du travail Ji sur la machine Mj
et Si,Mj la date d’achèvement du travail Ji sur la machine Mj
Exemple 3.2. Considérons le cas de trois machines et cinq travaux de la table 3.2.
M1
M2
M3
J1
2
2
2
J2
3
3
4
J3
6
4
4
J4
3
9
11
J5
7
3
4
Table 3.2. Durées d’exécution d’un problème flow-shop
La figure 3.1 illustre un ordonnancement possible no-idle sur les machines M2 et M3.
M2
M3
J1
J2
5
J3
J4
15
10
J5
20
25
30
35
Figure 3.1. Ordonnancement no-idle sur M2 et M3
L’introduction de l’ordonnancement sur M1 conduit à un premier décalage sur M2 et M3 d’une
valeur égale à p1, M 1 (voir figure 3.2)
M1
M2
M3
J1
5
10
J2
J3
15
J4
20
J5
25
30
35
Figure 3.2. Introduction de l’ordonnancement sur M1
77
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
L’ordonnancement no-idle final est obtenu en opérant un deuxième décalage global sur M2 et
M3 d’une valeur égale à max
(0, Ci , M 1 − Si , M 2) (voir figure 3.3).
i = 2.. n
M1
M2
M3
J1
5
10
J2
15
J3
J4
20
25
J5
30
35
Figure 3.3. Travaux ordonnés sans temps mort sur les trois machines
Un ordonnancement no-idle optimal est un ordonnancement qui minimise la formule du
makespan présentée ci-dessus. Nous remarquons, ici, que l’ordre qui minimise le premier
terme C max( M 2,
M 3)
détermine la valeur du deuxième terme
max
(0, Ci , M 1 − Si , M 2) .
i = 2.. n
Réciproquement, l’ordre qui minimise le deuxième terme détermine la valeur du premier
terme. Alors que l’ordre optimal n’est peut être ni l’un ni l’autre.
Cependant, si la minimisation du premier terme peut être obtenue facilement en adoptant
l’ordre de Johnson, la minimisation du second terme est beaucoup moins évidente, d’où
l’heuristique (H) que nous avons choisi de développer qui consiste à procéder à la
minimisation sur le premier terme.
Dans le même esprit de l’heuristique proposée, nous pouvons commencer par procéder à un
ordonnancement de Johnson sur les machines M1 et M2 et répercuter le même ordre pour
l’ordonnancement sur la machine M3. Nous adoptons, en définitive, d’élaborer les deux
solutions et de retenir celle qui donne le plus petit C max global. La complexité de cette
heuristique est égale à la complexité de la solution de Johnson c’est-à-dire O(n*log(n)).
L'implantation de la règle de Johnson est facile car elle se base sur des règles classiques (SPT
et LPT). Une procédure classique déterminant l'ordre de Johnson, consiste à diviser l'ensemble
des travaux en deux sous-ensembles selon les durées opératoires. Le premier ensemble (noté
S1) contient les travaux ayant une durée opératoire sur la première machine (noté A[i]) plus
petite que celle sur la seconde machine (noté B[i]). Le second sous-ensemble (noté S2)
contient les travaux ayant une durée opératoire sur la première machine plus grande ou égale
que celle sur la seconde machine. Les travaux de S1 doivent être ordonnés dans l'ordre
croissant de leurs durées opératoires sur la première machine (règle SPT). Les travaux de S2
doivent être ordonnés dans l'ordre décroissant de leurs durées opératoires sur la deuxième
machine (règle LPT). Ensuite, l'ordre de Johnson est obtenu en concaténant les travaux
78
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
ordonnés de S2 après ceux ordonnés de S1. Un tel calcul peut même se faire avec Microsoft
Excel sans aucune difficulté. Le résultat de cette procédure peut être intégré dans un progiciel
d'ordonnancement tel que INCOPLAN [INCOTEC, 1999] en modélisant les durées
opératoires des travaux de S1 et les différences des travaux de S2 par des dates de livraison et
en utilisant la règle EDD (Earliest Due Date c’est-à-dire dans l'ordre croissant des dates de
livraison) pour lancer les travaux sur la première machine. L'ordre de lancement sur la
deuxième machine est le même.
Nous avons aussi considéré le problème miroir, c’est-à-dire le problème où les travaux sont
exécutés d'abord sur la troisième machine, ensuite sur la deuxième machine et en dernier lieu
sur la première. Dans [Pinedo, 1995], l’auteur prouve que le makespan du problème miroir est
égal au makespan du problème initial donc la valeur de la solution du problème no-idle ne
change pas si nous considérons les mêmes machines (M2 et M3).
1.2. Expérimentations
Nous proposons de comparer les résultats de cette heuristique par rapport à :
-
une borne inférieure
-
aux résultats fournis par un solveur de programmation mixte, en l’occurrence Lingo
[LINDO, 1999].
1.2.1. Comparaison par rapport à une borne inférieure
1.2.1.1. Borne inférieure
Nous retenons la borne inférieure obtenue par application directe du résultat de la propriété
2.1 définie par Baptiste et Hguny (paragraphe §1.1, chapitre 2) pour le cas n = 3.
Rappel. Un minorant de tout ordre no-idle sur m machines peut être obtenu par la formule :
LB =
m −1
∑
C j , j +1 ( JO{ j , j +1}) −
j =1
m −1 n
∑∑ p
i, j
j = 2 i =1
Pour le cas n = 3, la formule devient :
LB =
2
∑
C j , j +1 ( JO{ j , j +1}) −
j =1
2
n
∑∑ p
j = 2 i =1
79
i, j
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
1.2.1.2. Résultats des expérimentations
Pour m fixé à 3, nous avons effectué des expérimentations pour 20 configurations en faisant
évoluer n par pas de 5 (n = 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90,
95, 100). Pour chaque configuration, nous utilisons le logiciel Locho pour générer les durées
opératoires sur chacune des machines (M1, M2 et M3) selon une loi log normal. Les durées
opératoires sont entières et générées avec une moyenne égale à 12 et un écart type égal à 4.
Nous itérons ensuite cette évaluation pour 32 tests, ce qui donne un nombre total de 640 tests.
Nous calculons ensuite, toujours pour une même configuration :
-
PMin : égal à min
(( Hi − LBi ) / LBi ) , où Hi et LBi sont, respectivement, les valeurs
i =1..32
obtenues par l’heuristique H et la formule LB pour le ième test ; soit PMin égal au
minimum des écarts entre la solution donnée par l’heuristique H et la borne inférieure,
divisés par la borne inférieure correspondante.
-
PMax : égal à max
(( Hi − LBi ) / LBi ) , soit PMax égal au maximum des écarts entre la
i =1..32
solution donnée par l’heuristique H et la borne inférieure, divisés par la borne
inférieure correspondante.
-
PMoy : égal à moy (( Hi − LBi ) / LBi ) , soit PMoy égal à la moyenne des écarts entre la
i =1..32
solution donnée par l’heuristique H et la borne inférieure, divisés par la borne
inférieure correspondante.
Les résultats sont illustrés dans la table 3.3.
n
PMin.
PMax.
PMoy.
5
0,0000
0,2396
0,0907
10
0,0142
0,2372
0,1062
15
0,0180
0,1958
0,1085
20
0,0000
0,1780
0,0920
25
0,0198
0,1459
0,0920
30
0,0274
0,1514
0,0951
35
0,0155
0,2027
0,0943
40
0,0056
0,1719
0,0886
45
0,0099
0,1564
0,0947
50
0,0194
0,1528
0,0875
55
0,0272
0,1597
0,1034
80
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
60
0,0123
0,1459
0,0950
65
0,0233
0,1481
0,0907
70
0,0373
0,1632
0,0993
75
0,0214
0,1398
0,0936
80
0,0501
0,1265
0,0923
85
0,0509
0,1657
0,1033
90
0,0215
0,1439
0,0993
95
0,0582
0,1473
0,1003
99(*)
0,0236
0,1480
0,0959
Moyenne
0,0228
0,1660
0,0961
Table 3.3. Comparaison par rapport à la borne inférieure
(*) La valeur maximale admise par le logiciel Locho est 99.
Nous notons que :
-
le pourcentage des écarts minimums est inférieur à 6% (5,82% pour n égal à 95 et
moins de 3% pour 16 configurations sur 20). Il est en moyenne de 2,28%.
-
le pourcentage des écarts maximums est inférieur à 24% (23,96% pour n égal à 5 et
entre 14% et 18% pour 14 configurations sur 20). Il est en moyenne de 16,6%.
-
le pourcentage des écarts moyens est au voisinage de 9,61%.
Par ailleurs, pour chaque n nous avons calculé le pourcentage du nombre de tests sur 32 dont
la valeur de (Hi-LBi)/LBi est inférieure à 0,1. La figure 3.4 montre que l'évolution de ce
95
85
75
65
55
45
35
25
5
80,00%
70,00%
60,00%
50,00%
40,00%
30,00%
20,00%
10,00%
0,00%
15
Pourcentage des cas où le rapport
est inférieur à 0,1
pourcentage suivant le nombre de travaux est non linéaire et varie entre 43,75% et 68,75%.
Nombre de travaux
Figure 3.4. Variation du nombre de cas bons en fonction du nombre de travaux
81
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
1.2.2. Comparaison avec les résultats trouvés par Lingo
1.2.2.1. Modèle mathématique
Paramètres du problème
n : nombre de travaux à exécuter,
m: nombre de machines,
P = { pi , r } : durée opératoire du travail Ji sur la machine Mr (matrice n × m).
Variables de décision
Z = { Zi , j } : matrice binaire, Zi , j = 1 si le travail Ji est à la position j dans la séquence de
travaux, 0 sinon. Pour toute solution, il y a uniquement n variables dont la valeur est
égale à un.
C = { Cj , r } : date d'achèvement du travail à la jème position dans la séquence de travaux sur la
machine Mr.
Contraintes
n
∑ Z =1
i, j
(i = 1, ..., n)
(5)
∑ Z =1
(j = 1, ..., n)
(6)
j =1
n
i, j
i =1
n
Cj , r + ∑ ( pi , r * Zi , j + 1) = Cj + 1, r
(r = 1, ..., m; j = 1, ..., n - 1)
(7)
i =1
n
C j , r + ∑ ( pi , r + 1 * Z i , j ) ≤ C j , r + 1
(r = 1, ..., m - 1; j = 1, ..., n)
(8)
i =1
n
∑(p *Z ) = C
i ,1
i ,1
(9)
1,1
i =1
Fonction objective
C max = Cn , m
(10)
min(C max)
(11)
Commentaires
La fonction objectif (11) et l'équation (10) expriment l'objectif à atteindre qui est la
minimisation de la plus grande date d'achèvement. Les contraintes (5) assurent que chaque
travail doit être affecté à une seule position dans la séquence. Les contraintes (6) spécifient
82
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
qu'à chaque position est affecté un et un seul travail. Les contraintes (7) assurent que la date
d'achèvement du travail à la position j+1 sur la machine Mr est égale à la somme de la date
d'achèvement du travail à la position j sur la machine Mr et de la durée opératoire du travail à
la position j+1 sur la machine Mr. Aucun temps mort n’est autorisé sur une machine durant
son travail. Les contraintes (8) montrent que la date d'achèvement du travail à la position j sur
la machine Mr+1 est au moins égale à la somme de la date d'achèvement du travail à la
position j sur la machine Mr et de la durée opératoire du travail à la position j sur la machine
Mr+1. La contrainte (9) spécifie que la date d'achèvement du premier travail sur la première
machine est égale à sa durée opératoire sur cette dernière.
Ce modèle représente le problème flow-shop de permutation F / no − idle / C max avec m
machines. Cependant, nous traitons dans ce paragraphe le cas de trois machines qui sera
obtenu en fixant m à trois.
1.2.2.2. Evaluation et comparaison
Le modèle mathématique ainsi défini a été implanté avec Lingo. Pour m fixé à 3, nous avons
étudié 12 configurations de n en faisant évoluer n par pas de 2 (n = 4, 6, 8, 10, 12, 14, 16, 18,
20, 22, 24, 26). Nous avons là aussi utilisé le logiciel Locho pour générer les durées
opératoires des travaux sur chacune des machines, (M1, M2, M3) selon une loi log normale de
moyenne 12 et d’écart type 4. Pour chaque configuration de n, 32 tests sont générés. Au total,
384 tests sont exécutés sur des machines avec microprocesseur Pentium III 733 Mhz, avec 64
Méga octets de RAM et 10 Giga octets de disque dur.
Les résultats de Lingo sont donnés dans la table 3.4. Pour chaque configuration, nous
définissons :
-
PMin :
min
(( Hi − LGi ) / LGi ) où Hi et LGi sont, respectivement, les valeurs des
i =1..32
C max obtenus par l’heuristique H et la résolution Lingo pour le ième test ; ainsi PMin
est le minimum des écarts entre la solution donnée par l’heuristique H et la résolution
Lingo, divisés par la résolution Lingo correspondante.
-
PMax :
max
(( Hi − LGi ) / LGi ) , PMax est le maximum des écarts entre la solution
i =1..32
donnée par l’heuristique H et la résolution Lingo, divisés par la résolution Lingo
correspondante.
83
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
-
PMoy :
moy (( Hi − LGi ) / LGi ) , PMoy est la moyenne des écarts entre la solution
i =1..32
donnée par l’heuristique H et la résolution Lingo, divisés par la résolution Lingo
correspondante.
Nous avons également rapporté dans cette table, pour chaque valeur de n, le pourcentage des
cas où le résultat obtenu par l’heuristique H et celui obtenu par Lingo sont identiques, ainsi
que le pourcentage des cas où le rapport (Hi-LGi)/LGi est inférieur à 0,1.
n
PMin.
PMax.
PMoy.
Pourcentage des cas
Pourcentage des cas où
où Hi=LGi
0 < (Hi-LGi)/LGi ≤ 0,1
4
0
0,1093
0,0402
9,38%
87,50%
6
0
0,1458
0,0597
15,63%
59,38%
8
0
0,1584
0,0749
12,50%
62,50%
10
0
0,1437
0,0716
6,25%
68,75%
12
0,0246
0,1548
0,0904
0,00%
59,38%
14
0,0129
0,1637
0,0918
0,00%
53,13%
16
0,0041
0,1469
0,0737
0,00%
87,50%
18
0,0201
0,1607
0,0815
0,00%
71,88%
20
0,0148
0,1619
0,0832
0,00%
62,50%
22
0,0030
0,1584
0,0732
0,00%
75,00%
24
0,0223
0,1845
0,0895
0,00%
62,50%
26
0,0081
0,1826
0,0837
0,00%
65,63%
Moyenne
0,0091
0,1558
0,0761
3,64%
69,97%
Table 3.4. Comparaison par rapport aux résultats trouvés par Lingo
De la table 3.4, nous pouvons noter que :
-
l'évolution des minimums des rapports ne dépasse pas 2,5%,
-
les maximums varient entre 10,93% et 18,45%,
-
le pourcentage des rapports moyens est inférieur à 6% pour n = 4 et n = 6 et au
voisinage de 7,61% pour un nombre de travaux plus grand,
-
le nombre de cas où H trouve l’optimum n’est pas grand mais le pourcentage de cas où
le taux d’erreur est inférieur à 0,1 est en moyenne égal à 69,97%.
84
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
Pour résoudre le système des équations (paragraphe 1.2.2.1), Lingo utilise sa procédure de
séparation et d'évaluation tenant compte du fait que notre modèle comprend des variables
entières (voir annexe). Nous nous sommes limités à un maximum de n égal à 26 car, pour un
nombre de travaux plus grand, Lingo est incapable d’aboutir à une solution quelle qu’elle soit,
du fait que le nombre de variables entières devient très grand (Lingo traite au maximum 4000
contraintes et 800 variables et, pour n égal à 28, cette configuration est de 196 contraintes et
868 variables).
Il importe, aussi, de souligner que la résolution par Lingo nécessite souvent un temps
d’exécution relativement long (plusieurs heures, voire des jours) et, ce faisant, Lingo évolue
en optimisant la valeur de la solution jusqu’à s’arrêter sur la valeur optimum. Pour un certain
nombre de tests, nous avons dû arrêter l’exécution avant terme (après 14 heures si le solveur
n'avait pas atteint la solution optimale avant).
Nous n’avons pas évalué avec précision le temps d’exécution de notre heuristique, mais il est
généralement de l’ordre de la seconde et est, donc, sans aucune comparaison avec celui de
Lingo. A titre indicatif, la table 3.5 présente, pour chaque configuration de n, l’espace
mémoire que Lingo nécessite, le nombre de solutions optimales (sur 32 tests) trouvées avant
d’atteindre une durée d’exécution de 14 heures, le nombre de contraintes et le nombre de
variables générées.
n
Espace
Nombre de solutions
Nombre de
Nombre de
mémoire
optimales trouvées
contraintes
variables
4
14K
32
27
28
6
20K
32
41
54
8
27K
32
55
88
10
36K
32
69
130
12
46K
31
83
180
14
59K
30
97
238
16
73K
27
111
304
18
86K
25
125
378
20
102K
26
139
460
22
120K
26
153
550
24
139K
23
167
648
26
159K
24
181
754
Table 3.5. Récapitulatif sur l’état du travail avec Lingo
85
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
1.2.2.3. Efficacité de la borne inférieure
Pour évaluer l'efficacité de la borne inférieure déjà définie, nous avons généré pour chaque
valeur de n (nombre de travaux) variant de 4 à 26, 20 tests pour les quels Lingo est capable de
donner la solution optimale. Par la suite, nous avons comparé la solution optimale à la borne
inférieure.
La figure 3.5 présente l'évolution du maximum, du minimum et de la moyenne du rapport
(|LBi-LGi|)*100/LGi pour toutes les configurations (LBi et LGi sont, respectivement, les
valeurs obtenues par la borne inférieure LB et la résolution Lingo pour le ième test). Pour de
nombreux cas, Lingo fournit des valeurs identiques sinon très proches de la borne inférieure ;
d’où le rapport nul. Quant à la moyenne de ce rapport, elle varie entre 2,7% et 0,56%. Cette
moyenne décroît quand n augmente ; ceci signifie que la borne inférieure devient de plus en
plus proche de l’optimal lorsque n devient grand.
10,00%
9,00%
8,00%
(|LB-LG|)*100/LG
7,00%
6,00%
min
5,00%
max
4,00%
moy
3,00%
2,00%
1,00%
0,00%
4
6
8
10
12
14
16
18
20
22
24
26
Nombre de travaux
Figure 3.5. Comparaison entre la borne inférieure et les résultats de Lingo
Nous avons également programmé l’algorithme de type séparation et évaluation de Baptiste et
Hguny et constaté que les valeurs obtenues se conforment avec celles fournies par Lingo.
Pour un nombre n de travaux plus grand que 26, nous avons comparé les valeurs de la borne
inférieure (LB) aux résultats trouvés par l’algorithme de type séparation et évaluation (BB).
Dans le cas de trois machines, nous nous sommes limités à 60 travaux (voir figure 3.6). Nous
avons fait alors varier le nombre de travaux de 30 à 60 avec un pas égal à 5 et, pour chaque
configuration, nous avons générés 32 tests selon la même loi.
La variation de la courbe de la moyenne (moy) confirme les résultats trouvés avec Lingo où le
taux d’erreur est inférieur à 2%. Pour la courbe min, nous avons toujours des cas où la borne
inférieure est égale à la solution exacte.
86
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
4,00%
(LB-BB)*100/BB
3,50%
3,00%
2,50%
min
2,00%
max
1,50%
moy
1,00%
0,50%
0,00%
30
35
40
45
50
60
Nombre de travaux
Figure 3.6. Comparaison entre la borne inférieure
et les résultats de l’algorithme de type séparation et évaluation
Dans cette section, nous nous sommes investis dans le problème F 3 / no − idle / C max . Nous
avons alors, proposé une heuristique basée sur la règle de Johnson et de complexité en
O(n*log(n)). Une borne inférieure a été définie pour évaluer l'efficacité de cette solution.
Nous avons résolu un modèle mathématique proposé à l’aide d’un solveur de programmation
mixte. Ce dernier est limité à la résolution du problème dont le nombre de travaux est égal à
26 [Saadani et al., 2003c].
2. Résolution du problème dans le cadre général
Nous proposons maintenant une heuristique plus générale s’appliquant au problème flowshop de permutation pour tout nombre de travaux n et tout nombre de machines m avec
contrainte no-idle et critère C max . Cette heuristique se base sur une modélisation du
problème flow-shop en un problème du voyageur de commerce. Nous situerons les résultats
de cette heuristique par rapport aux optimums calculés soit par une procédure d’énumération,
soit par le logiciel Lingo, soit par l’algorithme de type séparation et évaluation de Baptiste et
Hguny. Nous ferons aussi une étude comparative avec l’heuristique H présentée pour le cas de
trois machines.
2.1. Problème du voyageur de commerce
2.1.1. Présentation du problème
Considérons un graphe orienté G = ( X , U ) , où X désigne l'ensemble des sommets du graphe
et U l'ensemble des arcs valués reliant les sommets du graphe. Un circuit hamiltonien dans le
graphe G est un circuit passant une fois et une fois seulement par chaque sommet du graphe
87
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
G. En prenant en compte le poids associé à chaque arc, la valeur d'un circuit hamiltonien est
égale à la somme des poids des arcs qui le composent.
Le problème bien connu du voyageur de commerce stipule que celui-ci doit rendre visite à n
clients répartis sur n villes x1, x2,…, xn, en partant d'une autre ville x0 et en revenant à celle-ci
selon un circuit qui passe une et une seule fois par chacune des n villes. Etant donnés, d’une
part, un graphe G = ( X , U ) où X est l'ensemble des clients (i.e. villes) et U est l’ensemble des
arcs représentant les chemins entre villes et, d’autre part, une matrice des distances (Di,j)
représentant les longueurs des chemins, le problème du voyageur de commerce (TSP) revient
à rechercher un circuit hamiltonien de longueur totale minimale dans le graphe G. Lorsque la
matrice des distances est symétrique, le problème est dit problème du voyageur de commerce
symétrique, sinon il est dit asymétrique (ATSP). Le problème du voyageur de commerce est
dit généralisé (GTSP) si le voyageur doit passer par un nombre prédéfini de sous-ensembles
de villes. Il doit visiter au moins une ville de chaque sous-ensemble et minimiser la somme
des coûts du voyage.
Ce problème combinatoire est un problème que l'on rencontre fréquemment dans l'industrie
dans la mesure où il représente des problèmes d'ordonnancement, de planification et
d'organisation de la production ainsi que des problèmes de transport. Dans ce qui suit, nous
examinerons les principaux outils élaborés pour résoudre ce problème.
Le problème du voyageur de commerce a été introduit simultanément par Srivastava et al.
[Srivastava et al., 1969] qui se sont intéressés à la version symétrique et ont proposé une
approche de programmation dynamique et par Henry-Labordere [Henry-Labordere, 1969] qui
s’est intéressé au cas asymétrique. Plus tard, Laporte et Nobert [Laporte et Nobert, 1983]
[Laporte et al., 1987] ont formulé les deux problèmes (symétrique et asymétrique) en un
programme entier et un algorithme de type séparation et évaluation pour les résoudre.
2.1.2. Algorithmes exacts de résolution
Ces algorithmes garantissent de trouver une solution optimale en un nombre d’étapes borné.
Les algorithmes les plus efficaces sont de type "plan de coupe" et "recherche de facettes"
[Padberg et Rinaldi, 1991] [Applegate et al., 1991]. Ils sont complexes (plus les 10000 lignes
de code) et nécessitent que la machine soit très performante. Par exemple, on demande entre 3
et 4 ans de temps CPU dans un grand réseau de machines pour déterminer une solution exacte
88
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
d’un problème à 7397 villes. Les algorithmes les plus répandus sont les algorithmes
d’exploration de type séparation et évaluation.
Dans [Fischetti et al., 1994], Fischetti et al. proposent un algorithme de type séparation et
évaluation pour résoudre ce problème optimalement lorsqu’il est symétrique.
Dans [Lysgaard, 1999], un autre algorithme de ce type est proposé pour un problème du
voyageur de commerce asymétrique basé sur les clusters. Un cluster est un ensemble de
nœuds avec la caractéristique qu’il existe une solution optimale pour laquelle les nœuds de cet
ensemble sont visités consécutivement. Il s’agit donc d’identifier les clusters puis de
déterminer un chemin optimal entre les clusters.
Une caractéristique des algorithmes de type séparation et évaluation présentés dans la
littérature pour le problème ATSP est qu’un problème d’affectation linéaire est utilisé pour
établir les bornes inférieures de la solution optimale du ATSP (par exemple [Carpaneto et
Toth, 1980]). Un bon nombre d’approches ont déterminé une borne par rapport au problème
d’affectation linéaire relaxé ([Fischetti et Toth, 1989]). D’importantes contributions dans ce
cadre sont faites, telles que la routine de contraction-compression d’un sous-circuit par
Christofides [Christofides, 1972], l’approche Lagrangienne restreinte de Balas [Balas et
Christofides, 1981] et la procédure de borne additive de Fischetti [Fischetti et Toth, 1992].
Cependant, deux schémas d’élimination de sous-circuits ont dominé la littérature, celui de
Bellmore [Bellmore et Malone, 1971] et celui de Garfinkel [Garfinkel, 1973]. Ces schémas
sont basés sur la configuration d’un sous-circuit dans la solution d’un problème d’affectation
linéaire.
Pour résoudre le problème du voyageur de commerce, on trouve aussi les algorithmes de
coupes utilisés lorsque le nombre de contraintes s'avère raisonnable. A ce niveau, on raisonne
bien souvent sur un programme relaxé, c'est-à-dire ne comprenant qu'une partie de l'ensemble
des contraintes et on intègre le reste des contraintes à la solution optimale, lorsque celle-ci ne
donne pas le circuit hamiltonien recherché [Gomory, 1958], [Faure, 1978], [Gondran et
Minoux, 1979] et Little [Little et al., 1963].
2.1.3. Algorithmes approximatifs
La classe des algorithmes approximatifs peut être divisée en trois sous-classes :
89
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
-
les algorithmes de construction des circuits : on construit progressivement le circuit en
ajoutant à chaque étape une ville. Parmi les algorithmes de construction de circuit on
trouve les méthodes d’insertion [Golden et al., 1980] et [Christofides, 1976], ou les
méthodes du plus proche voisin. Ces algorithmes sont rapides ; toutefois les solutions
ne sont pas généralement de bonne qualité.
-
les algorithmes d’amélioration de circuit : à partir d’un circuit donné (arbitraire), on
essaye d’apporter des modifications sur les arcs (suppression et ajout) dans le but de
rechercher une meilleure solution dans le voisinage ; par exemple, 2-opt alg (en
partant d’un circuit, remplacer deux liens dans le circuit par deux autres de telle
manière que la longueur du nouveau circuit soit plus courte, continuer jusqu’à ce qu’il
n’y ait plus d’amélioration). Une généralisation de cette idée pour les problèmes TSP
symétriques est l’algorithme de Lin-Kernighan [Lin et Kernighan, 1973], qui fait
partie de la classe des algorithmes d’optimisation locale [Johnson, 1990] [Johnson et
McGeoch, 1997]. Ce travail a été modifié par Mak et Morton [Mak et Morton, 1993]
et implanté par Helsgaun [Helsgaun, 2000]. L’inconvénient de tels algorithmes est le
risque de tomber sur un optimum local,
-
les algorithmes composites : un algorithme est dit composite s’il combine les deux
types précédents. Ces algorithmes donnent de bons résultats si on a une bonne solution
de départ.
Il existe une multitude d'heuristiques permettant de résoudre, avec plus au moins de succès, le
problème du voyageur de commerce. Le plus souvent ces heuristiques adaptent l’une des
techniques suivantes :
Technique du plus proche voisin
X étant l’ensemble des nœuds, on choisit aléatoirement un sommet de départ x ∈ X.
On construit progressivement une chaîne en joignant, à chaque pas, un nouveau sommet x' ∈X
(le plus proche), à l’une des deux extrémités de la chaîne. On poursuit la procédure
d'adjonction jusqu'à ce que la chaîne comporte tous les sommets.
Enfin, on joint les deux sommets opposés de la chaîne et on obtient un circuit hamiltonien.
Technique de la plus proche insertion
On choisit un circuit hamiltonien d'un sous-graphe de G .
90
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
On insère dans ce circuit le sommet x ∈ X le plus proche du périmètre délimité par les
sommets du circuit, n'appartenant pas au circuit. On répète la procédure d'insertion jusqu'à ce
que le circuit comporte tous les sommets.
Technique n-optimale de Lin
La technique de Lin [Lin et Kernighan, 1973] part d’un circuit hamiltonien de valeur
quelconque construit en utilisant, par exemple, une des deux techniques ci-dessus.
On supprime n arcs de ce circuit et on ajoute n nouveaux arcs à ce circuit afin d'obtenir un
nouveau circuit hamiltonien de valeur inférieure.
On répète la procédure de modification jusqu'à atteindre un critère d’arrêt indiquant qu’il
devient difficile de trouver un circuit hamiltonien de valeur inférieure.
Nous pouvons aussi citer d’autres heuristiques particulières comme celles de Christofides
basée sur la recherche d'un couplage dans un graphe [Christofides et al., 1979], l'heuristique
de Khoan Vo-Khac pour tout problème du voyageur de commerce symétrique basée sur la
recherche d'une hiérarchie entre les arêtes [Khoan,1971], l'heuristique de Hurrion basée sur
une interaction homme machine [Hurrion, 1980], l’heuristique d’affectation avec réemploi de
ressources de Guinet [Guinet, 1984] et l’heuristique du voisinage de Carlier et Villon [Carlier
et Villon, 1990].
Comme heuristique amélioratrice pour un GTSP, nous citons l’heuristique 4-opt ([Boctor et
al., 1993] et [Renauld et al., 1996]). Dans [Renauld et Boctor, 1998], les auteurs proposent
une heuristique composite pour ce problème qui construit une solution initiale partielle, insère
un nœud de chaque sous-ensemble de nœuds non visité et améliore ensuite la solution.
Les premiers à avoir utilisé la programmation dynamique sont Bellman et Held. La démarche
consiste à définir une trajectoire à partir d’une approche ascendante proposée [Bellmann,
1962] [Held et Karp, 1962]. Cependant, il se trouve que des difficultés sont rencontrées lors
du calcul d’un extrêmum avec l’équation de Bellmann et que le processus de détermination de
la fonction de Bellmann est accompagné par des erreurs inévitables. Dans [Chentsov et
Korotayeva, 1997], les auteurs proposent une heuristique pour le problème du voyageur de
commerce généralisé basée sur la programmation dynamique et utilisant la fonction de
Bellmann. Ces mêmes auteurs essayent, dans [Chentsov et Chentsov, 2001], de donner une
91
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
estimation de l’effet des erreurs de la fonction de Bellmann sur la qualité des trajectoires
trouvées par une procédure de programmation dynamique.
Nous trouvons aussi l’heuristique constructive de Glover [Glover et al., 2001] pour les ATSP,
les travaux de [Chisman, 1975], [Jongens et Volgenant, 1985] et [Gendreau et al., 1994] pour
le TSP généralisé dont la solution est basée sur les clusters, l’heuristique de Glover basée sur
la recherche tabou [Glover, 1989]. Une variété du voyageur de commerce est étudiée avec
ramassage et livraison dans [Gendrau et al., 1999]. Les algorithmes génétiques sont aussi
utilisés [Schmitt et Amini, 1995], [Whitley et al., 1989], [Homaifar et al., 1993], [Giuseppe et
al., 2001], [Goldberg, 1989].
Une autre variété du voyageur de commerce asymétrique, connue sous le sigle RATSP, est
une généralisation du problème du voyageur de commerce asymétrique. Ce problème a été
introduit pour la première fois par Barnhart [Barnhart et al., 1998], dans le contexte de la
planification d’une ligne aérienne : soit un problème TSP asymétrique représenté par un
multigraphe orienté G = (V, Z) avec V un ensemble de nœuds, Z un ensemble d’arcs de deux
types : arcs ordinaires et arcs de remplissage. De plus, des poids entiers positifs wi sont
affectés aux nœuds. Les auteurs définissent un chemin non réalisable comme étant un chemin
ne contenant pas d’arcs de remplissage et dont la somme des poids des nœuds ne dépasse pas
un poids limite donné ; sinon il est dit réalisable. Ils étudient ensuite la résolution du problème
RATSP, par la recherche d’un circuit hamiltonien de coût minimal, constitué de sous-chemins
non réalisables.
Mak et Boland, dans [Mak et Boland, 2000], ont proposé une solution, par un algorithme de
recuit simulé, basée sur une méthode de voisinage 3-optimale qui a, toutefois, l’inconvénient
de la violation possible du poids limite (une méthode est α-optimale si elle aboutit à un
ordonnancement dont l’objectif a une erreur relative inférieure ou égale à α% par rapport à
l’optimum). Ils ont aussi développé une deuxième heuristique basée sur la relaxation de
Lagrange, avec toujours la possibilité du non respect des contraintes du poids limite. Il se
révèle que cette nouvelle heuristique est exponentielle et les méthodes d’optimisation du sousgradient standard ne sont pas directement applicables [Boland et Boland., 2000].
Signalons, pour terminer cette brève synthèse, que d’autres variantes du problème du
voyageur de commerce ont été étudiées comme celle du voyageur de commerce maximum qui
consiste à déterminer un circuit hamiltonien avec un total de poids maximal. Pour cette
92
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
variante, il est proposé dans [Hassin et Rubinstein, 1998] un algorithme approximatif
polynomial. Pour ce qui nous intéresse, nous allons étudier une solution pour la résolution du
problème F / no − idle / C max dans le cas général, en assimilant ce problème à celui du
voyageur de commerce et en adoptant la technique de la plus proche insertion.
2.2. Résolution du problème F / no − idle / C max
Considérons le cas de n travaux J1, J2, …, Jn à ordonnancer sur m machines. On définit
l’attente maximale Di,j entre le travail Ji et le travail Jj de la façon suivante : si l’on exécute
uniquement les travaux Ji et Jj et dans cet ordre, sur l’ensemble des m machines en satisfaisant
la contrainte no-idle, Di,j correspond à l’attente de la dernière machine (m) avant d’entamer
l’exécution du travail Ji (voir figure 3.7).
|--i---|---j----|
|--i----|----j---|
|--i--|-----j----|
.
.
|---i---|-----j-----|
|---i----|-----j-----|
Di,j
Figure 3.7. Evaluation de la distance (l’attente maximale)
L’idée de l’heuristique consiste à chercher un ordonnancement qui minimise la somme des
Di,j. Le problème peut alors être vu comme celui du voyageur de commerce dans lequel les
nœuds (villes) représentent les travaux et les arcs représentent les attentes maximales en guise
des distances entre travaux. Nous préconisons de chercher le circuit hamiltonien le plus court
en appliquant la technique de la plus proche insertion.
Considérons un graphe orienté G = (X, U) où X représente l’ensemble des nœuds et U
représente l’ensemble des arcs. Nous rappelons qu’un circuit hamiltonien sur le graphe G est
un circuit qui passe par chacun des nœuds du graphe G une et une seule fois. Une valeur (Di,j)
est affectée à chacun des arcs et la valeur du circuit hamiltonien est définie par la somme des
93
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
valeurs de tous les arcs composant ce circuit. Le problème consistant à trouver le plus court
circuit hamiltonien est appelé le problème du voyageur de commerce.
La technique de la plus proche insertion commence par chercher la plus petite distance Di,j.
Un circuit de i à j est alors défini ; la longueur du circuit est égale à Di,j + Dj,i. Ensuite, les
nœuds qui n'appartiennent pas au circuit sont ajoutés. A chaque étape, le nœud minimisant la
nouvelle valeur de la longueur du circuit augmenté du nœud est ajouté au circuit et il est
inséré à la position qui minimise cette valeur. Ce processus est répété jusqu'à avoir tous les
nœuds inclus dans ce circuit. La complexité de cette règle est O(n3).
Nous adaptons cette technique à la résolution de notre problème selon le schéma suivant
[Saadani et al., 2001b], [Saadani et al., 2003b] :
1. Calculer la distance si Ji est exécuté avant Jj, pour toute paire de travaux ordonnés Ji et Jj.
La distance est égale à la différence entre la date de début du travail Ji sur la première
machine et la date de début du travail Ji sur la dernière machine en respectant la contrainte
no-idle.
2. Choisir le couple des travaux (Ji, Jj) ayant la plus petite attente Di,j ; il constituera
l’élément de départ du chemin (de l’ordre) à construire. Les travaux Ji et Jj sont alors
ordonnés.
3. Pour tout travail Jk non encore ordonné, insérer Jk dans les différentes positions du chemin
en cours de construction et choisir le travail et la position qui minimisent la longueur
totale du nouveau chemin. A partir de l'ordre obtenu en ajoutant le travail au chemin, on
somme les différentes distances Di,j des travaux adjacents pour calculer la longueur totale
du chemin. Choisir le travail Jk et la position qui minimisent la nouvelle valeur du chemin.
Le travail Jk est alors ordonné.
4. Répéter 3 jusqu’à ce que tous les travaux soient ordonnés.
Nous désignons par NIR l’heuristique proposée.
2.3. Expérimentations
2.3.1. Comparaison avec la solution optimale
La qualité de cette heuristique est examinée en résolvant 3584 problèmes. Pour générer les
données, nous avons utilisé une distribution log normale et nous avons étudié 112 différentes
94
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
tailles de problèmes. Pour chaque taille et chaque configuration, 32 tests ont été générés. En
premier lieu, notre comparaison est faite par rapport à la solution optimale. Dans le but de
calculer cette dernière, toutes les séquences de travaux ont été énumérées. La séquence avec
le plus petit C max a été retenue. L'algorithme énumératif est désigné par OPT.
Données
Le nombre de travaux varie dans cet ensemble [3, 4, 5, 6, 7, 8, 9, 10]. Les différents nombres
de machines sont [4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30]. Les durées opératoires
sont des entiers et elles sont générées avec une moyenne égale à 12 et un écart type égal à 4.
Résultats
Les résultats des expérimentations, pour les différentes configurations, sont présentés par les
tables 3.6 à 3.13. Pour chaque configuration, nous trouvons :
-
m : le nombre de machines,
-
PMin : min
(( NIRi − OPTi ) / OPTi ) où NIRi et OPTi sont, respectivement, les valeurs
i =1..32
des C max obtenus par l’heuristique NIR et la solution optimale OPT pour le ième test ;
PMin est ainsi le minimum des écarts entre la valeur de la solution trouvée par
l'heuristique NIR et celle trouvée par la solution optimale OPT, divisés par la solution
optimale,
-
PMax : max
(( NIRi − OPTi ) / OPTi ) , le maximum des écarts entre la valeur de la
i =1..32
solution trouvée par l'heuristique NIR et celle trouvée par la solution optimale OPT,
divisés par la solution optimale,
-
PMoy : moy (( NIRi − OPTi ) / OPTi) , la moyenne des écarts entre la valeur de la
i =1..32
solution trouvée par l'heuristique NIR et celle trouvée par la solution optimale OPT,
divisés par la solution optimale.
Pour le cas de deux travaux, l’heuristique se ramène à un algorithme de résolution exacte
puisque la règle de l'insertion la plus proche donne toujours la solution optimale pour le cas de
deux villes. Pour les configurations avec n = 3, n = 4 et n = 5 et m variant de 4 à 30,
l’heuristique NIR donne assez souvent l’ordre qui minimise le C max . Pour n supérieur à 5,
le minimum des rapports ne dépasse pas 4,8% et la moyenne des rapports ne dépasse pas
10,10%. Dans le pire des cas, le maximum ne dépasse pas 20,8%. L’écart entre les valeurs
moyennes et les valeurs maximums est significatif de la rareté relative des pires cas.
95
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
m
PMin. PMoy. PMax.
m
PMin.
PMoy.
PMax.
4
0
0,0404 0,1587
4
0
0,0458
0,1591
6
0
0,0216 0,0870
6
0
0,0339
0,1275
8
0
0,0197 0,1111
8
0
0,0438
0,1333
10
0
0,0189 0,0983
10
0
0,0372
0,1506
12
0
0,0118 0,0537
12
0
0,0365
0,0927
14
0
0,0186 0,0691
14
0
0,0386
0,0989
16
0
0,0211 0,1061
16
0
0,0208
0,0458
18
0
0,0157 0,0664
18
0
0,0270
0,0655
20
0
0,0112 0,0429
20
0
0,0260
0,0829
22
0
0,0116 0,0640
22
0
0,0238
0,0877
24
0
0,0090 0,0470
24
0
0,0280
0,0888
26
0
0,0117 0,0450
26
0
0,0185
0,0769
28
0
0,0173 0,0502
28
0
0,0228
0,0546
30
0
0,0165 0,0512
30
0
0,0235
0,0725
Moyenne
0
0,0175 0,0750
Moyenne
0
0,0305
0,0955
Table 3.6. Cas de trois travaux
m
PMin. PMoy. PMax.
Table 3.7. Cas de quatre travaux
m
PMin.
PMoy.
PMax.
4
0
0,0601 0,1684
4
0
0,0611
0,1481
6
0
0,0400 0,1168
6
0
0,0563
0,1846
8
0
0,0497 0,1579
8
0
0,0585
0,1244
10
0
0,0425 0,1250
10
0,0097
0,0608
0,1395
12
0
0,0441 0,1296
12
0,0045
0,0581
0,1152
14
0
0,0415 0,0870
14
0,0035
0,0451
0,1190
16
0
0,0395 0,1226
16
0,0108
0,0532
0,1220
18
0
0,0339 0,0779
18
0,0055
0,0528
0,1163
20
0
0,0425 0,0939
20
0,0145
0,0540 0,1308
22
0
0,0383 0,0921
22
0
0,0463 0,1062
0,0092 0,0340 0,0786
24
0,0042
0,0475 0,1390
24
26
0
0,0301 0,0941
26
0
0,0418 0,0755
28
0
0,0285 0,0754
28
0
0,0385 0,0863
30
0
0,0302 0,0909
30
0
0,0363 0,0865
Moyenne
0,0037
0,0507 0,1209
Moyenne 0,0006 0,0396 0,1078
Table 3.8. Cas de cinq travaux
Table 3.9. Cas de six travaux
96
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
m
PMin. PMoy. PMax.
m
PMin.
PMoy.
PMax.
4
0,0204 0,0861 0,2031
4
0,0079
0,0907
0,0626
0,0738 0,1503
6
0,0054
0,0736
0,1346
8
0,0100 0,0721 0,1399
8
0,0141
0,0831
0,1532
10
0,0085 0,0594 0,1586
10
0,0310
0,0848
0,1739
12
0,0104 0,0660 0,1621
12
0,0223
0,0742
0,1365
14
0,0060 0,0689 0,1319
14
0,0336
0,0753
0,1338
16
0,0220 0,0586 0,1529
16
0,0208
0,0793
0,1746
18
0,0026 0,0586 0,0972
18
0,0075
0,0674
0,1525
20
0,0198 0,0583 0,1005
20
0,0163
0,0606
0,1303
22
0,0085 0,0545 0,1196
22
0,0204
0,0667
0,1336
24
0,0062 0,0588 0,1313
24
0,0295
0,0658
0,1508
26
0,0037 0,0555 0,0916
26
0,0219
0,0615
0,1128
28
0,0055 0,0489 0,0937
28
0,0265
0,0626
0,0986
30
0,0094
0,0603
0,1079
Moyenne
0,0190
0,0718
0,1397
6
30
0
0
0,0481 0,0979
Moyenne 0,0088 0,0620 0,1308
Table 3.10. Cas de sept travaux
Table 3.11. Cas de huit travaux
m
PMin. PMoy. PMax.
m
PMin.
PMoy.
PMax.
4
0,0144 0,0852 0,1959
4
0,0320
0,0900
0,1860
6
0,0284 0,0875 0,1979
6
0,0140
0,1030
0,1730
8
0,0375 0,1008 0,1532
8
0,0320
0,1010
0,2080
10
0,0387 0,0953 0,1885
10
0,0340
0,0950
0,1680
12
0,0141 0,0870 0,1649
12
0,0280
0,1000
0,1760
14
0,0391 0,0856 0,1648
14
0,0340
0,0890
0,1440
16
0,0323 0,0858 0,1897
16
0,0480
0,0950
0,2080
18
0,0132 0,0779 0,1560
18
0,0400
0,0940
0,1900
20
0,0186 0,0721 0,1450
20
0,0390
0,0770
0,1270
22
0,0313 0,0673 0,1022
22
0,0370
0,0787
0,1434
24
0,0208 0,0634 0,1245
24
0,0379
0,0771
0,1318
26
0,0294 0,0733 0,1070
26
0,0203
0,0727
0,1233
28
0,0209 0,0668 0,1128
28
0,0399
0,0750
0,1500
30
0,0169 0,0709 0,1205
30
0,0311
0,0720
0,1102
Moyenne
0,0333
0,0871
0,1599
Moyenne 0,0254 0,0799 0,1516
Table 3.12. Cas de neuf travaux
Table 3.13. Cas de dix travaux
97
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
0,18
0,16
0,14
0,12
0,10
0,08
0,06
0,04
0,02
0,00
PMin
PMoy
PMax
2
3
4
5
6
7
8
9
10
Nombre de travaux
Figure 3.8. Les résultats de l'heuristique pour n<=10 et m<=30
La figure 3.8 donne l’allure de l’évolution de PMin, de PMoy et de PMax en fonction du
nombre de travaux. Nous retiendrons que pour n allant jusqu’à 10 et m allant jusqu’à 3, la
valeur de PMoy reste inférieure à 10% et celle de PMax reste inférieure à 20%. La série des
moyennes est plus proche de la série des minimums que de celle des maximums.
m
n=2
n=3
n=4
n=5
n=6
n=7
n=8
n=9
n = 10
4
32
10
5
5
1
0
0
0
0
6
32
14
9
8
1
1
0
0
0
8
32
15
3
4
1
0
0
0
0
10
32
16
6
4
0
0
0
0
0
12
32
15
4
3
0
0
0
0
0
14
32
13
2
1
0
0
0
0
0
16
32
11
7
1
0
0
0
0
0
18
32
15
5
2
0
0
0
0
0
20
32
14
7
1
0
0
0
0
0
22
32
12
5
3
1
0
0
0
0
24
32
19
1
0
0
0
0
0
0
26
32
12
9
4
1
0
0
0
0
28
32
7
7
4
1
0
0
0
0
30
32
8
3
3
1
1
0
0
0
Table 3.14. Nombre de solutions optimales trouvées par NIR
La table 3.14 présente, pour chaque configuration, le nombre de cas où l’heuristique NIR
trouve la solution optimale (c.-à-d. lorsque la solution de l'heuristique est la même que la
98
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
solution trouvée par énumération). Comme nous l'avons déjà mentionné, 32 tests sont résolus
pour chaque configuration et, pour le cas de deux travaux, les résultats sont nécessairement
identiques. Lorsque n augmente, le nombre de solutions optimales trouvées décroît. Pour un n
donné, le nombre de cas où cette heuristique donne la solution optimale est non linéaire.
2.3.2. Comparaison avec la solution trouvée par un solveur
Dans la pratique, le recours à la résolution par énumération n’est pas concevable (signalons
que, d’une part, les expérimentations rapportées ci-dessus ont nécessité des temps de calcul
atteignant quelques heures à plusieurs jours et, d’autre part, nous ne pouvons pas énumérer
pour plus de dix travaux). Aussi, nous avons envisagé d’étudier la résolution par le solveur de
programmation mixte Lingo sur la base du modèle présenté dans la section 1.2.2.1 de ce
chapitre [Saadani et al., 2003b].
La qualité de notre heuristique a été examinée en résolvant 270 problèmes. Pour générer les
données du problème, la même distribution log normale a été employée. Nous avons fait notre
étude pour un nombre de machines variant de 5 à 25 avec un pas égal à 5. Le nombre
maximum de travaux dépend de la capacité du solveur. Pour chaque configuration de
problème, 10 tests sont générés.
Nous rappelons que la version utilisée de Lingo fonctionne avec un nombre maximum de
4000 contraintes et de 800 variables. Dans la table 3.15, nous donnons un aperçu sur la taille
des problèmes étudiés en nombre de travaux, nombre de contraintes et nombre de variables.
Nombre de
Nombre maximum
Nombre de
Espace mémoire
Nombre de
machines
de travaux
variables
(K∅)
contraintes
5
25
750
197
272
10
23
759
281
475
15
21
756
337
638
20
20
800
391
802
25
18
774
405
895
30
17
799
437
1009
Table 3.15. Caractéristiques des problèmes générés
99
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
Les tables de 3.16 à 3.21 rapportent les résultats des expérimentations pour chaque valeur de
n. Pour chaque taille de problème, 10 tests sont considérés. Nous trouvons pour chaque
configuration de problème :
-
n : le nombre de travaux,
-
PMin : min
(( NIRi − LGi ) / LGi ) où NIRi et LGi sont, respectivement, les valeurs des
i =1..10
C max obtenus par l’heuristique NIR et la résolution du solveur Lingo pour le ième test ;
PMin est le minimum des écarts entre la valeur de la solution trouvée par notre heuristique
(NIR) et la solution obtenue avec Lingo (LG), divisés par la solution obtenue avec Lingo,
-
PMax : max
(( NIRi − LGi ) / LGi ) , le maximum des écarts entre la valeur de la solution
i =1..10
trouvée par notre heuristique (NIR) et la solution obtenue avec Lingo (LG), divisés par la
solution obtenue avec Lingo,
-
PMoy : moy (( NIRi − LGi ) / LGi ) , la moyenne des écarts entre la valeur de la solution
i =1..10
trouvée par notre heuristique (NIR) et la solution obtenue avec Lingo (LG), divisés par la
solution obtenue avec Lingo,
m=5
PMin.
PMax.
PMoy.
m = 10
PMin.
PMax.
PMoy.
n=5
0,0093
0,0811
0,0408
n=5
0,0000
0,1116
0,0405
n = 10
0,0476
0,0989
0,0764
n = 10
0,0342
0,1593
0,1037
n = 15
0,0391
0,1557
0,0937
n = 15
-0,0206
0,1591
0,0575
n = 20
0,0231
0,1306
0,0752
n = 20
-0,0156
0,0758
0,0336
n = 25
0,0257
0,1433
0,0666
n= 23
-0,0059
0,1245
0,0483
Moyenne
0,0752
0,1219
0,0705
Moyenne
-0,0016
0,1261
0,0567
Table 3.16. Cas de cinq machines
Table 3.17. Cas de dix machines
m = 15
PMin.
PMax.
PMoy.
m = 20
PMin.
PMax.
PMoy.
n=5
0,0168
0,1254
0,0564
n=5
0,0139
0,0896
0,0432
n= 10
0,0173
0,1416
0,0732
n = 10
0,0393
0,1445
0,0864
n = 15
-0,0081
0,1208
0,0416
n = 15
-0,0319
0,0663
0,0168
n = 20
-0,0230
0,0768
0,0348
n = 20
-0,0187
0,0779
0,0168
n = 21
-0,0240
0,0873
0,0277
Moyenne
0,0006
0,0946
0,0408
Moyenne
-0,0042
0,1104
0,0467
Table 3.18. Cas de quinze machines
Table 3.19. Cas de vingt machines
100
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
m = 25
PMin.
PMax.
PMoy.
m = 30
PMin.
PMax.
PMoy.
n=5
0,0000
0,0000
0,0000
n=5
0,0000
0,0000
0,0000
n = 10
0,0346
0,1395
0,0808
n = 10
-0,0302
0,1308
0,0631
n = 15
-0,0704
0,0291
-0,0219
n = 15
-0,0401
0,1711
-0,0108
n = 18
-0,0129
0,0391
0,0082
n= 17
-0,0683
0,0765
0,0035
Moyenne
-0,0122
0,0519
0,0168
Moyenne
-0,0346
0,0946
0,0140
Table 3.20. Cas de vingt cinq machines
Table 3.21. Cas de trente machines
Signalons que lorsque le nombre de travaux augmente, Lingo passe de plus en plus de temps
(variant de quelques heures à des jours) pour trouver la solution optimale. Pour cinq travaux,
il trouve la solution optimale au pire des cas en deux ou trois heures. A partir de dix travaux,
il s'avère difficile d'obtenir l'optimal pour un nombre de machines supérieur à dix. Pour des
grandes tailles, un test d’optimalité peut nécessiter des jours avant qu'il soit achevé.
Cependant, au fur et à mesure des itérations, Lingo affiche la solution obtenue
provisoirement. Nous avons adopté, pour les pires des cas, d’arrêter Lingo au bout de 14
heures et de considérer la solution provisoire comme étant optimale.
A partir des tables 3.16 à 3.21, nous pouvons voir que notre heuristique donne souvent une
solution très proche de celle obtenue avec Lingo. La figure 3.9 illustre l’allure de l’évolution
de min, de moy et de max en fonction du nombre de machines :
-
Courbe moy donne la moyenne des rapports moyens (( C max (NIR)- LG)/ LG) sur le
nombre de problèmes générés pour chaque nombre de machines.
-
Courbe min donne la moyenne des rapports minimums (( C max (NIR)- LG)/ LG) sur le
nombre de problèmes générés pour chaque nombre de machines.
-
Courbe max donne la moyenne des rapports maximums (( C max (NIR)- LG)/ LG) sur le
nombre de problèmes générés pour chaque nombre de machines.
Nous notons que l’écart de la solution obtenue par l’heuristique varie entre 1,4% et 7,05%.
Cependant, l'heuristique proposée fournit une solution en quelques secondes. La figure 3.10
illustre l’allure de l’évolution de min, de moy et de max en fonction du nombre de travaux.
Les écarts pour les trois courbes suivent une allure décroissante à partir de n = 10 ; ceci est
justifié puisque les résultats de Lingo deviennent approchés à partir de dix travaux pour la
plupart des configurations.
101
(Cmax(NIR)-LG)/LG
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
0,14
0,12
0,10
0,08
0,06
0,04
0,02
0,00
-0,02
-0,04
-0,06
min
max
moy
5
10
15
20
25
30
Nombre de machines
Figure 3.9. Comparaison du comportement de l’heuristique avec
(Cmax(NIR)-LG)/LG
celui de la résolution par Lingo en fonction de m
0,16
0,14
0,12
0,10
0,08
0,06
0,04
0,02
0,00
-0,02
-0,04
min
max
moy
5
10
15
20
Nombre de travaux
Figure 3.10. Comparaison du comportement de l’heuristique avec
celui de la résolution par Lingo en fonction de n
Pour un nombre de travaux donné, nous présentons dans la figure 3.11, le nombre de tests
donnant un rapport inférieur à 5%. Comme nous le montrons, le nombre d’occurrences sur 10
testées avec un rapport inférieur à 5%, augmente avec le nombre de travaux. Le nombre
d’occurrences est très important lorsque le nombre de travaux est différent de 10 ; ceci est
justifié par le fait que pour n = 10, Lingo donne la solution optimale et au-delà de 10, les
résultats ne sont plus optimaux et le rapprochement entre les valeurs obtenues de Lingo et
celles obtenues par NIR devient plus important. Dans la figure 3.12, nous avons étudié le
nombre de cas ayant un rapport inférieur à 5% pour chaque nombre de machines. Le nombre
de cas augmente avec le nombre de machines lorsque la valeur de n est grande.
102
Nombre de cas où le rapport est
inférieur à 5%
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
12
10
m=5
8
m=10
m=15
6
m=20
4
m=25
2
m=30
0
5
10
15
20
25
Nombre de travaux
Figure 3.11. Evolution du nombre de cas ayant un
Nombre de cas où le rapport est
inférieur à 5%
rapport inférieur à 5% en fonction du nombre de travaux
12
10
n=5
8
n=10
6
n=15
4
n=20
n=25
2
0
5
10
15
20
25
30
Nombre de machines
Figure 3.12. Evolution du nombre de cas ayant un rapport
inférieur à 5% en fonction du nombre de machines
2.3.3. Comparaison avec les solutions trouvées par l’algorithme de type séparation et
évaluation
Nous avons déjà effectué, dans les deux paragraphes précédents, une comparaison avec les
résultats exacts obtenus par énumération et les résultats fournis par Lingo. Cela nous a permis
de situer les performances de notre heuristique et de mettre en évidence le gain extrêmement
important en temps d’exécution que nous pouvons obtenir avec cette heuristique, si l’on
accepte un écart moyen de précision inférieur à 10%. Toutefois, aussi bien avec le calcul par
énumération qu’avec la résolution Lingo, nous n’avons pas pu aller au-delà des configurations
n = 10 et m = 30 pour la méthode par énumération et n = 17 et m = 30 pour la résolution avec
Lingo. Nous avons été plusieurs fois contraints de nous contentez des solutions intermédiaires
atteintes par Lingo au bout de 14 heures de calcul.
La troisième et la dernière comparaison que nous tentons dans ce paragraphe vise à aller
davantage dans l’augmentation de la taille des problèmes traités (de quoi avoir une idée de
103
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
l’allure du comportement de notre heuristique quand n augmente), en profitant de la précision
apportée par l’algorithme de type séparation et évaluation (que nous désignons par BB) par
rapport à celle offerte par Lingo.
Les résultats des tests sont présentés dans les tables 3.22, 3.23 et 3.24. Pour chaque taille de
problème, 10 tests sont considérés et nous avons gardé les mêmes tests pour les configurations
déjà étudiées dans le paragraphe 2.3.2. Pour chaque configuration de problème, nous avons :
-
PMin : min
(( NIRi − BBi) / BBi) où NIRi et BBi sont, respectivement, les valeurs des
i =1..10
C max obtenus par l’heuristique NIR et la résolution avec l’algorithme de type séparation
et évaluation BB ; ainsi PMin est le minimum des écarts entre la valeur de la solution
trouvée par notre heuristique (NIR) et la résolution avec l’algorithme de type séparation et
évaluation BB, divisés par BBi.
-
PMax : max
(( NIRi − BBi ) / BBi ) , le maximum des écarts entre la valeur de la solution
i =1..10
trouvée par notre heuristique (NIR) et la résolution avec l’algorithme de type séparation et
évaluation BB, divisés par BBi.
-
PMoy : moy (( NIRi − BBi) / BBi) , la moyenne des écarts entre la valeur de la solution
i =1..10
trouvée par notre heuristique (NIR) et la résolution avec l’algorithme de type séparation et
évaluation BB, divisés par BBi.
m=5
PMin.
PMax.
PMoy.
m = 10
PMin.
PMax.
PMoy.
n=5
0,0093
0,0811
0,0408
n=5
0,0000
0,1116
0,0405
n = 10
0,0476
0,0989
0,0764
n = 10
0,0342
0,1593
0,1037
n = 15
0,0391
0,1557
0,0937
n = 15
0,0409
0,2060
0,1004
n = 20
0,0231
0,1306
0,0752
n = 20
0,0354
0,1376
0,0993
n = 25
0,0257
0,1433
0,0666
n= 23
0,0409
0,1756
0,1024
n = 30
0,0107
0,1569
0,1007
Moyenne
0,0259
0,1277
0,0755
Moyenne
0,0302
0,1580
0,0892
Table 3.22. Cas de cinq machines
Table 3.23. Cas de dix machines
En reprenant les mêmes valeurs des tests pour le cas de 5 machines, nous avons obtenu
exactement les mêmes résultats que ceux de la comparaison avec Lingo (voir table 3.22). Les
exécutions sont cependant plus rapides et elles atteignent au maximum 7 heures (pour n = 20).
L’algorithme de type séparation et évaluation est meilleur si nous considérons les durées
d’exécution.
104
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
Pour 10 machines (voir table 3.23), nous avons obtenu aussi des résultats identiques
uniquement pour n = 5 et n = 10, puisque Lingo ne donne plus l’optimal à partir de n = 15. Le
maximum dans les durées d’exécution est de 17 heures (pour n = 20 et n = 23), le nombre de
tests demandant du temps d’exécution est plus grand.
Pour 15 machines (voir table 3.24), nous avons les mêmes résultats que la résolution avec
Lingo pour n = 5 et n = 10. A partir de 15 travaux, les durées commencent à augmenter et,
pour certains tests, elles atteignent des jours (au maximum 7 jours) ; les C max sont cette
fois-ci précis s’appuyant sur une résolution véritablement exacte.
m = 15
PMin.
PMax.
PMoy.
n=5
0,0168
0,1254
0,0564
n= 10
0,0173
0,1416
0,0732
n = 15
0,0576
0,1540
0,1102
n = 21
0,059
0,1675
0,0955
Moyenne
0,0376
0,1471
0,0838
Table 3.24. Cas de quinze machines
A partir de 20 machines, les durées d’exécution avec l’algorithme de type séparation et
évaluation deviennent très grandes. Concernant l’allure du comportement de l’heuristique,
nous avons constaté que les écarts moyens en fonction de n et de m restent à peu près dans la
même fourchette autour de 7% à 8%.
2.3.4. Comparaison dans le cas de trois machines
Nous comparons ici, les résultats de l’heuristique NIR avec ceux de l'heuristique proposée
dans la première section pour le cas de trois machines. Pour générer les données du problème,
nous avons gardé la même loi. Nous avons fait varier n de 5 à 99 par pas de 5. Pour chaque
configuration de problème (20 au total), nous avons généré 32 tests.
La complexité de l'heuristique NIR est en O(n3). L'heuristique H utilise la règle de Johnson
qui a une complexité en O(n*log(n)). H donne un résultat meilleur que NIR dans plusieurs
cas ; les résultats sont rapportés dans la table 3.25.
105
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
n
PMin.
PMax.
PMoy.
Pourcentage de cas où Pourcentage de cas où le rapport
le rapport est
est compris entre 0,0 et 0,05
strictement négatif
5
-0,1753
0,0818
-0,0226
53,13%
37,5%
10
-0,1020
0,1467
-0,0079
50,00%
25,00%
15
-0,1350
0,0872
-0,0073
53,13%
31,25%
20
-0,0325
0,1465
0,0379
12,50%
53,13%
25
-0,0126
0,1344
0,0577
3,13%
34,38%
30
-0,0118
0,1406
0,0432
6,50%
53,13%
35
-0,0287
0,1200
0,0572
3,13%
28,13%
40
0,0020
0,1025
0,0524
0,00%
43,75%
45
0,0112
0,1443
0,0638
0,00%
34,38%
50
-0,0014
0,1333
0,0574
3,13%
43,75%
55
0,0072
0,1209
0,0729
0,00%
18,75%
60
0,0129
0,1960
0,0657
0,00%
28,13%
65
0,0120
0,1032
0,0627
0,00%
34,38%
70
0,0068
0,1671
0,0696
0,00%
31,25%
75
0,0295
0,1196
0,0765
0,00%
25,00%
80
0,0359
0,1251
0,0769
0,00%
12,50%
85
0,0039
0,1201
0,0744
0,00%
18,75%
90
0,0182
0,1190
0,0787
0,00%
12,50%
95
0,0363
0,1166
0,0743
0,00%
16,63%
99
0,0041
0,1312
0,0787
0,00%
16,63%
Moyenne -0,0160
0,1245
0,0531
2,95%
29,85%
Table 3.25.Comparaison entre les résultats de NIR et ceux de H
Il est indiqué, dans cette table, pour chaque configuration de problème :
-
n : le nombre de travaux,
-
PMin : min
(( Hi − NIRi ) / NIRi ) où Hi et NIRi sont, respectivement, les valeurs des
i =1..32
C max obtenus par l’heuristique H et l’heuristique NIR pour le ième test,
-
PMax : max
(( Hi − NIRi) / NIRi) ,
i =1..32
-
PMoy : moy (( Hi − NIRi) / NIRi) ,
-
le pourcentage de cas où le rapport (Hi- NIRi)/ NIRi est négatif sur 32 tests,
i =1..32
106
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
-
le pourcentage de cas où le rapport (Hi- NIRi)/ NIRi est entre 0% et 5% sur 32 tests.
Cette table montre que le minimum des rapports ne dépasse pas –17,3%, le maximum est
entre 8,18% et 19,6% et la moyenne varie de –2,26% à 7,87%. Le nombre de cas où la
solution donnée par H est meilleure que la solution donnée par NIR est plus important quand
le nombre de travaux est inférieur à 20. Pour un nombre de travaux plus grand, l'heuristique
NIR est meilleure.
n
PMin.
PMax.
PMoy.
5
0,0101
0,3026
0,1193
10
0,0321
0,2138
0,1162
15
0,0226
0,2154
0,1180
20
0,0195
0,0909
0,0544
25
0,0000
0,0915
0,0454
30
0,0025
0,0808
0,0462
35
0,0088
0,0713
0,0404
40
0,0071
0,0647
0,0311
45
0,018
0,0727
0,0330
50
0,0045
0,0611
0,0283
55
0,0059
0,0645
0,0334
60
0,0041
0,0572
0,0569
65
0,0064
0,484
0,0240
70
0,0058
0,0558
0,0232
75
0,0056
0,0486
0,0221
80
0,0063
0,0620
0,0220
85
0,0086
0,0501
0,0239
90
0,0045
0,0457
0,0194
95
0,0070
0,0377
0,0200
99
0,0024
0,0325
0,0160
Moyenne
0,0088
0,0884
0,0432
Table 3.26. Comportement de NIR vis-à-vis de la borne inférieure
D'après les résultats trouvés dans le cas de trois machines, cette étude confirme que NIR est
meilleure quand le nombre de travaux est supérieur à 20. L’heuristique NIR a donc l’avantage,
non seulement de pouvoir s’appliquer pour m plus grand que trois, mais aussi de donner de
107
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
meilleurs résultats lorsque n augmente et ceci même pour le cas de m = 3. Nous avons aussi
comparé les résultats de NIR avec la borne inférieure proposée dans le cas de trois machines.
La table 3.26 donne le comportement de l'heuristique NIR vis-à-vis de la borne inférieure pour
le cas de trois machines. Pour chaque problème, nous définissons le minimum, le maximum et
la moyenne des écarts entre la valeur de la solution NIR et la valeur de la borne inférieure LB
divisés par la valeur de la borne.
3. Etude d’un cas particulier d’application
Dans la pratique du terrain, le fonctionnement continu peut n’être exigé que de certains
composants seulement du système. Dans cette section, nous étudions un cas particulier de
flow-shop à trois étages où la contrainte no-idle est appliquée uniquement au second étage. Il
s’agit d’une application inspirée du cas réel d’un atelier de fonderie. Aussi, contrairement à
l’hypothèse adoptée dans ce qui précède, le fonctionnement de cet atelier est celui d’un flowshop libre et non d’un flow-shop de permutation. Des heuristiques sont proposées et testées
pour un nombre de travaux allant jusqu’à 30. Nous étendons, ensuite, l’application en
remplaçant le troisième étage par des machines parallèles [Saadani et al., 2002b].
Nous nous intéressons tout d’abord à un problème flow-shop à trois étages composé d’une
seule machine par étage où la contrainte no-idle doit être respectée sur le second étage.
Comme nous l’avons déjà fait remarqué auparavant, cette contrainte est implicite sur la
première et dernière machine, les travaux peuvent toujours être décalés vers la droite pour
respecter la contrainte et sans que le makespan ( C max ) ne soit modifié. Le problème étudié
dans cette section peut se rencontrer dans une fonderie de fontes qui comprend généralement
trois étages (W1, W2, W3). A l’étage W1, des noyaux en sable sont fabriqués sur plusieurs
machines travaillant en parallèle. Le regroupement des noyaux entrant dans un moule
(collection) s’effectue dans le cadre de la gestion d’un stock intermédiaire. Au deuxième
étage (W2), des machines reliées par un convoyeur automatique fabriquent le brut de fonderie.
Le dernier étage (W3) est composé d’un ensemble de machines parallèles permettant
l’ébarbage des bruts de fonderie. Nous supposons la présence d’un tampon de taille illimitée
entre les étages. L’étage W2 peut être considéré comme une seule machine (opérations
synchrones cadencées par le convoyeur) avec la contrainte no-idle puisque nous avons besoin
de remplir les moules avec la fonte qui ne doit pas trop baisser en température. Pour simplifier
notre travail, nous considérons que le premier et le dernier étage contiennent chacun une seule
machine, en divisant la somme des durées opératoires par le nombre de machines de chaque
108
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
étage. Chaque travail doit passer par W1, ensuite W2 et enfin W3, mais l’ordre de passage des
travaux sur chacune des machines peut être quelconque.
Nous commençons par rechercher l’ordre qui minimise le C max de ce problème où chaque
étage est réduit à une seule machine, ensuite nous étendons nos travaux pour le cas de
plusieurs machines sur le dernier étage. Dans la sous-section suivante, nous présentons un
modèle d’un problème flow-shop à trois machines respectant la contrainte no-idle sur la
deuxième machine, F 3 / 2 − no − idle / C max et nous rappelons que le problème n’est plus un
flow-shop de permutation. Ensuite, nous proposons deux heuristiques pour résoudre ce
problème, ainsi qu’une étude expérimentale est présentée. Dans la sous-section 3.4, nous
étendons ce travail pour plusieurs machines parallèles au dernier étage.
3.1. Analyse du problème
Nous rappelons que le problème étudié F 3 / 2 − no − idle / C max est un flow-shop sans
permutation à trois machines respectant la contrainte no-idle sur la seconde machine. Il s’agit
d’ordonner n travaux (J1, J2,.., Jn) sur trois machines (M1, M2, M3). Un travail Ji (pour i = 1 ..
n) a au plus trois opérations (Oi,1, Oi,2, Oi,3). Une opération Oi,r doit être exécutée sur la
machine Mr sans interruption durant pi,r unités de temps. Ces durées sont fixes et positives,
elles peuvent être nulles si certains travaux ne sont pas exécutés sur une machine. Deux
opérations d’un même travail ne peuvent pas être exécutées simultanément, chaque machine
exécute au plus un travail à un instant donné et chaque travail est exécuté au plus une fois sur
chaque machine selon la même séquence M1, M2, M3. La séquence de travaux n’est pas
forcément la même pour chaque étage. Sur la deuxième machine, si un travail commence à
être exécuté, cette dernière ne doit jamais attendre le travail suivant s’il existe, mais un travail
peut attendre une machine.
Considérons les paramètres suivants :
n : le nombre de travaux à exécuter,
P = { pi , r }: la durée opératoire du travail Ji sur la machine Mr (matrice n × 3).
Z = { Zi , j , r }: une matrice binaire, Zi , j , r = 1 si le travail Ji est à la position j dans la séquence de
travaux sur la machine Mr, 0 sinon. Pour toute solution, il y a uniquement n variables dont la
valeur est égale à 1.
C = { Cj , r }: la date d’achèvement du travail à la jème position dans la séquence des travaux sur
la machine Mr.
109
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
F = { Fi , r }: la date de fin du travail Ji sur la machine Mr.
Les contraintes sont les suivantes :
n
∑Z
i, j, r
=1
(i = 1, ..., n; r = 1, .., 3)
(12)
i, j, r
=1
(j = 1, ..., n; r = 1, .., 3)
(13)
(r = 2; j = 1, ..., n - 1)
(14)
(r = 1 ou r = 3; j = 1, ..., n - 1)
(15)
j =1
n
∑Z
i =1
n
C j , r + ∑ pi , r * Z i , j + 1 , r = C j + 1 , r
i =1
n
C j , r + ∑ pi , r * Z i , j + 1 , r ≤ C j + 1 , r
i =1
n
Fi , r + ∑ pi , r + 1 * Zi , j , r + 1 ≤ Fi , r + 1
(r = 1, ...,3; j = 1, ..., n)
(16)
j =1
n
∑ p *Z = C
i ,1
i ,1,1
(17)
1, 1
i =1
Fi , r ≥ C j , r − ( Zi , j , r − 1) * HV
Cj , r ≥ Fi , r − ( Zi , j , r − 1) * HV
∀ i, j, r
(j = 1, ..., n; r = 1, .., 3 ; i = 1, ..., n)
et HV une grande valeur
(18)
Et la fonction objectif :
C max = Cn , m
(19)
Min( Cmax )
(20)
La fonction objectif (19) et l’équation (20) précisent que l’objectif est de minimiser le
maximum des dates d’achèvement. Les contraintes (12) expriment le fait que chaque travail
doit être affecté à une seule position dans la séquence et les contraintes (13) spécifient le fait
que chaque position est affectée à un seul travail sur chaque machine. Avec les contraintes
(14), la date d’achèvement du travail à la position j+1 sur la seconde machine est égale à la
somme de la date d’achèvement du travail à la position j sur cette machine et la durée
opératoire d’un travail à la position j+1 sur la même machine. Aucun temps mort n’est
permis. Les contraintes (15) montrent que la date d’achèvement du travail à la position j+1 sur
la machine Mr (la première ou la dernière) est au moins égale à la somme de la date
110
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
d’achèvement du travail à la position j sur la machine Mr et de la durée opératoire du travail à
la position j+1 sur la machine Mr. Sur ces machines les temps morts sont permis. Les
contraintes (16) expriment le fait que la date de fin du travail Ji sur la machine Mr+1 est au
moins égale à la somme de la date de fin du travail Ji sur la machine Mr et de la durée
opératoire du travail Ji sur la machine Mr+1. Les contraintes (17) spécifient que la date
d’achèvement du premier travail sur la première machine est égale à sa durée opératoire sur
cette machine. Les contraintes (18) égalisent la date d’achèvement et la date de fin d’un
travail Ji à la position j sur la machine Mr.
3.2. Heuristique
La NP-complétude du problème F 3 / no − idle / C max a été montrée au premier chapitre.
Pour deux machines, la résolution est similaire à celle du problème F 3 // C max qui est
trouvée en appliquant la règle de Johnson.
Cette
dernière
caractéristique
F 3 / 2 − no − idle / C max .
peut
être
utilisée
pour
résoudre
le
problème
Deux heuristiques utilisant le même principe peuvent être
proposées : le problème à trois machines est réduit à un problème flow-shop de permutation à
deux machines. Le meilleur ordre est obtenu par la règle de Johnson, que nous appliquons
ensuite sur chaque machine. H1 présente l’heuristique utilisant l’ordre de Johnson du
problème réduit (flow-shop de permutation à deux machines) où la durée opératoire du travail
Ji sur la première machine est la somme de celles sur M1 et M2, et la durée opératoire sur la
deuxième machine est la même que celle sur M3. H2 présente l’heuristique utilisant l’ordre de
Johnson du problème réduit où la durée opératoire sur la première machine est la même que
sur M1 et la durée opératoire sur la deuxième machine est la somme de celles sur M2 et M3.
3.3. Expérimentations
Dans ce paragraphe, nous comparons les résultats des heuristiques proposées avec une borne
inférieure.
3.3.1. Données
La qualité de notre heuristique a été examinée en résolvant 448 problèmes. Les données d’un
problème sont générées selon la même loi. Nous avons fait notre étude pour un nombre de
travaux variant dans [4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30]. Pour chaque
configuration de problème, 32 tests sont générés.
111
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
3.3.2. Borne inférieure
L’organisation étudiée est un flow-shop hybride à trois étages avec une seule machine au
deuxième étage et plusieurs pour les autres. Pour évaluer les performances de ces
heuristiques, plusieurs bornes inférieures ont été définies. Un ensemble de bornes inférieures
LB(h) sont dérivées en réduisant un problème à m étages en série avec des machines parallèles
à chaque étage à m problèmes de machines parallèles :
[ ]
h −1
n
l =1
i =1
[
m
LB (h) = Minimum
∑ p i ,l + ∑ p i , h / x(h) + Minimum
∑ p i ,l
∀i =1.. n
∀i =1.. n
l = h +1
]
∀h = 1,..., m
LB = Maximum
[LB(h)] LB(0) = 0
∀h = 0 ,..., m
où x(h) définit le nombre de machines à l’étage h.
Le premier terme de la borne inférieure LB(h) est égal au minimum du temps d’attente du
premier travail à l’étage h. Le second terme est égal à la date d’achèvement nécessaire pour
exécuter tous les travaux à l’étage h dans le cas préemptif [Gupta, 1988], [Gupta et Tunc,
1991] et [Srikandarjah et Sethi, 1989]. Le troisième terme est égal au minimum de la durée
opératoire pour terminer le dernier travail à l’étage h.
Puisque nous traitons une organisation présentant un flow-shop simple avec trois machines,
x(h) sera considéré égal à 1 pour chaque étage.
3.3.3. Résultats
Pour chaque problème, les heuristiques H1 et H2 sont appliquées et le C max est évalué.
Le détail des résultats est présenté par les trois tables suivantes :
-
La table 3.27 donne la moyenne des rapports ((Cmax(H1)-LB)/LB) et ((Cmax(H2)LB)/LB) sur les 32 problèmes générés pour chaque nombre de travaux,
-
la table 3.28 donne le maximum des rapports ((Cmax(H1)-LB)/LB) et ((Cmax(H2)LB)/LB) sur les 32 problèmes générés pour chaque nombre de travaux,
-
la table 3.29 donne le minimum des rapports ((Cmax(H1)-LB)/LB) et ((Cmax(H2)LB)/LB) sur les 32 problèmes générés pour chaque nombre de travaux.
112
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
En examinant le comportement des heuristiques (table 3.27), la tendance des moyennes
s’inverse lorsque le nombre de travaux augmente. Ces moyennes atteindront au maximum
0,1014 pour H1 et 0,1073 pour H2.
n
H1
H2
n
H1
H2
n
H1
H2
4
0,1014
0,1073
4
0,2676
0,2958
4
0,0125
0,0000
6
0,1002
0,0974
6
0,3152
0,3696
6
0,0000
0,0000
8
0,0898
0,0953
8
0,2049
0,2376
8
0,0000
0,0083
10
0,0907
0,0844
10
0,2517
0,2657
10
0,0000
0,0000
12
0,0825
0,0866
12
0,1818
0,1569
12
0,0000
0,0000
14
0,0845
0,0703
14
0,2065
0,2258
14
0,0154
0,0103
16
0,0764
0,0702
16
0,2082
0,1959
16
0,0000
0,0046
18
0,0715
0,0741
18
0,1794
0,1839
18
0,0040
0,0000
20
0,0627
0,0691
20
0,1744
0,1203
20
0,0040
0,0038
22
0,0569
0,0535
22
0,1894
0,2143
22
0,0000
0,0035
24
0,0568
0,0595
24
0,1263
0,1480
24
0,0034
0,0091
26
0,0627
0,0661
26
0,1610
0,1672
26
0,0029
0,0121
28
0,0553
0,0525
28
0,1226
0,1239
28
0,0027
0,0028
30
0,0569
0,0600
30
0,1893
0,1825
30
0,0028
0,0080
Moy.: 0,0749
0,0749
Moy.: 0,1985
0,2062
Moy.: 0,0034
0,0045
Table 3.27. Variation des
moyennes
Table 3.28. Variation des
Table 3.29. Variation des
maximums
minimums
Les maximums de ces rapports ne dépassent pas 0,3152 pour H1 et 0,3696 pour H2.
Considérons la table 3.28, nous pouvons constater que quelques cas donnent une valeur
élevée. Concernant la table 3.29, le minimum du rapport est très proche de zéro pour les deux
heuristiques.
La figure 3.13 présente les courbes ch1 et ch2 de la moyenne des rapports de ((Cmax(H1)LB)/LB) et ((Cmax(H2)-LB)/LB) sur 32 problèmes pour chaque nombre de travaux. Les deux
solutions proposées donnent le même résultat.
113
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
12,00%
10,00%
8,00%
ch1
6,00%
ch2
4,00%
2,00%
0,00%
4
6
8 10 12 14 16 18 20 22 24 26 28 30
Nombre de travaux
Figure 3.13. Evolution de la moyenne du rapport.
3.4. Extension au flow-shop hybride
Pour revenir au problème considéré (la fonderie), nous étudions maintenant le problème d’un
flow-shop hybride à trois étages où les deux premiers étages contiennent une seule machine
chacun et le dernier dix machines parallèles. La contrainte no-idle est toujours uniformément
appliquée au second étage. Pour résoudre ce problème (heuristique H3), nous avons appliqué
l’heuristique H1 à un ensemble de deux étages et n travaux. L’ordre obtenu est ensuite utilisé
pour ordonner les travaux sur M1 et M2, et pour l’étage M3 le premier travail disponible est
affecté à la première machine libre de cet étage.
Les nouvelles bornes inférieures sont les suivantes :
[ ]
+ Minimum[∑ p ]
[
h −1
n
LB1(h) = Minimum
∑ p i ,l + Maximum ∑ p i , h / x(h), Maximum( p i , h )
∀i =1.. n
l =1
m
∀i =1.. n
l = h +1
i ,l
i =1
]
∀h = 1,..., m
LB1 = Maximum
[LB(h)] LB1(0) = 0
∀h = 0 ,..., m
où x(h) désigne le nombre de machines dans l’étage h, donc x(1) = x(2) = 1, x(3) = 10 et m
représente le nombre d’étages.
La qualité de l’heuristique a été examinée en résolvant 448 problèmes générés avec la même
loi et le nombre de travaux varie dans [4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30]. Nous
avons toujours 32 tests pour chaque taille de problème et configuration.
Nous considérons les courbes de la figure 3.14 :
-
Courbe min donne le minimum du rapport ((Cmax(H3)-LB1)/LB1) sur 32 problèmes
générés pour chaque nombre de travaux.
114
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
-
Courbe moy donne la moyenne du rapport ((Cmax(H3)-LB1)/LB1) sur 32 problèmes
générés pour chaque nombre de travaux.
-
Courbe max donne le maximum du rapport ((Cmax(H3)-LB1)/LB1) sur 32 problèmes
générés pour chaque nombre de travaux.
30,00%
25,00%
20,00%
15,00%
10,00%
5,00%
0,00%
min
max
moy
4
6
8 10 12 14 16 18 20 22 24 26 28 30
Nombre de travaux
Figure 3.14. Comparaison entre le Cmax obtenu par
H3 et la borne inférieure
n
Min.
Max.
Moy.
n
Nombre de machines en moyenne
32
0,0000
0,0267
0,0109
32
2,9
36
0,0000
0,0331
0,0128
36
3
40
0,0000
0,0241
0,0087
40
3,2
44
0,0019
0,0245
0,0093
44
2,9
48
0,0000
0,0305
0,0103
48
3,1
52
0,0000
0,0163
0,0076
52
3
56
0,0000
0,0116
0,0050
56
2,8
60
0,0028
0,0264
0,0108
60
3
64
0,0013
0,0192
0,0094
64
2,9
68
0,0000
0,0262
0,0072
68
3
72
0,0000
0,0205
0,0094
72
3,3
76
0,0011
0,0147
0,0078
76
3,4
80
0,0000
0,0262
0,0066
80
3,2
84
0,0000
0,0127
0,0049
84
3,3
88
0,0039
0,0113
0,0066
88
3,2
92
0,0018
0,0117
0,0063
92
3,4
96
0,0000
0,0101
0,0062
96
3,5
Moyenne : 0,0008
0,0203
0,0082
Table 3.30. Comparaison de H3 par
Table 3.31. Variation du nombre
rapport à la borne inférieure pour un
de machines nécessaires en
nombre de travaux supérieur à 30.
fonction de n.
115
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
La figure 3.14 montre que la moyenne de l’écart entre le C max trouvé par H3 et la borne
inférieure divisé par la borne inférieure ne dépasse pas 5%. La courbe moy est décroissante
lorsque le nombre de travaux augmente. La courbe min est toujours nulle et la courbe max est
décroissante lorsque n augmente. Ces résultats sont toujours bons même lorsque n atteint 96.
La table 3.30 présente les différents rapports obtenus sur les 32 tests générés pour chaque
nombre de travaux.
Cependant, dix machines sont disponibles au dernier étage. Il serait plus intéressant de
déterminer la moyenne du nombre de machines réellement nécessaires. La table 3.31 donne la
moyenne du nombre de machines utilisées sur les 32 tests et ceci pur chaque nombre de
travaux. Nous pouvons noter que quatre machines au dernier étage sont suffisantes pour avoir
une bonne solution concernant le makespan.
Dans cette section, un cas particulier du flow-shop hybride à trois étages a été étudié. Ce
problème est connu pour être NP-difficile. Une contrainte additive est appliquée au second
étage, no-idle, afin de respecter des caractéristiques industrielles. Notre travail montre que des
heuristiques en O(n*log(n)) peuvent être proposées et offrant une date d’achèvement
maximale avec une erreur ne dépassant pas 3,31% par rapport à une borne inférieure [Saadani
et al., 2002b].
4. Conclusion
Nous avons présenté dans ce chapitre une heuristique de résolution du flow-shop avec
contrainte no-idle dans le cas de trois machines et nous avons prouvé son efficacité en la
comparant par rapport à une borne inférieure. En suite, une heuristique pour traiter le
problème pour un nombre quelconque de machines et basée sur la modélisation du problème
initial en un problème du voyageur de commerce est proposée. Les résultats de cette
heuristique ont été comparés à ceux obtenus par un solveur de programmation linéaire entière
mixte. La dernière partie s’est intéressée à l’étude d’un cas pratique, celui d’une fonderie ainsi
que la proposition d’une méthode en O(n*log(n)). Dans ce chapitre, nous nous sommes
intéressés qu’aux heuristiques contrairement au chapitre précédent. Dans le chapitre suivant,
nous traitons un autre aspect qui est la relaxation de la contrainte no-idle en insérant un ou
plusieurs temps morts.
116

Documents pareils