Académique Documents
Professionnel Documents
Culture Documents
Language C++
M2 RO2MIR 2022-2023
N. BABOU
Partie 1: Résoudre le problème
Fm|prmu|Cmax
Problème Fm|prmu|Cmax
Résolution approchée
Solution complete (Heuristique NEH)
Solution partielle (adaptation de NEH avec 𝜎1 )
Borne inférieure
Borne pour une instance complète
Borne pour une instance partielle
Branchement
Parcours de l’arborescence
Structure de 𝜎1
Structure de 𝜎2
L’algorithme B&B(L,𝜎1 ):
Début
Soit 𝜎2𝑘 la keme opération (tâche) de 𝜎2 ;
Soit 𝐿𝐵𝜎1 la borne inferieure associée a 𝜎1 ou 𝜎1 une solution partielle ;
Si 𝐿𝐵𝜎1 > 𝐿 alors
Stériliser le nœud commençant par 𝜎1 ;
Soit 𝑈𝐵𝜎1 la solution donnée par l’heuristique avec 𝜎1 comme solution partielle ;
Si 𝑈𝐵𝜎1 = 𝐿 alors
Stopper le processus une solution avec un makespan égal à L est trouvée ;
Si 𝑈𝐵𝜎1 < 𝑈𝐵 alors
𝑈𝐵 = 𝑈𝐵𝜎1 ;
k=1 ;
Tant que 𝑘 ≤ |𝜎2 | alors
considérer 𝜎2𝑘 ;
𝜎1 = 𝜎1 ∪ 𝜎2𝑘 ;
𝜎2 = 𝜎2 \ 𝜎2𝑘 ;
Appeler B&B(L,𝜎1 ) ;
Heuristique NEH:
- Début
- Soit 𝑇1, 𝑇2, . . . , 𝑇𝑛 la liste de tâches rangées dans l’ordre décroissant de leurs durées globales.
- Placer la tâche T1 dans la séquence S;
- Pour i = 2 à n faire
- 𝐶′max = ∞;
- Pour k = 1 a i faire
- Construire une solution partielle en mettant la tâche Ti à la position k dans la séquence ;
- Calculer le makespan Cmax de cette solution partielle;
- Si Cmax < C′max alors
𝑏𝑒𝑠𝑡 = 𝑘 ;
𝐶′max = 𝐶𝑚𝑎𝑥 ;
- Placer la tache Ti à la position best dans la séquence S ;
- Appliquer cette séquence au problème ;
Heuristique NEH:
𝑐𝑖𝑛𝑑[𝑖]1 = 𝑝𝑖𝑛𝑑[𝑘]1 ; 𝑖 = 1, … , 𝑛
𝑗
𝑘=1
𝑐1𝑗 = 𝑝1𝑘 ; 𝑗 = 1, … , 𝑚 𝑐𝑖𝑛𝑑[𝑖]𝑗 = max 𝑐𝑖𝑛𝑑[𝑖−1]𝑗 , 𝑐𝑖𝑛𝑑[𝑖] 𝑗−1 + 𝑝𝑖𝑛𝑑[𝑖]𝑗 ;
𝑘=1
𝑖
𝑖 = 2, … , 𝑛; 𝑗 = 2, … , 𝑚
𝑐𝑖1 = 𝑝𝑘1 ; 𝑖 = 1, … , 𝑛
𝑘=1
𝑐𝑖𝑗 = max 𝑐 𝑖−1 𝑗 , 𝑐𝑖 𝑗−1 + 𝑝𝑖𝑗 ;
𝑖 = 2, … , 𝑛; 𝑗 = 2, … , 𝑚
Borne inférieure
Concernant la borne inférieure du flow-shop de permutation, nous considérons
celle de B. J. Lageweg, J. K. Lenstra et A. H. G. Rinnooy Kan (Lageweg et al., 1978).
Pour calculer cette borne nous allons d’abord résoudre des sous-problèmes à 2
machines avec des temps de latence.
Pour cela on choisit deux machines 𝑀𝑘 et 𝑀𝑙 (avec 𝑘 < 𝑙), ensuite on pose :
𝑝′1𝑖 = 𝑝𝑘𝑖 , ∀𝑖 = 1, … , 𝑛 𝑟𝑖 = σ𝑘−1
ℎ=1 𝑝ℎ𝑖
ℎ=𝑘+1 𝑝ℎ𝑖 , ∀𝑖 = 1, … , 𝑛 ainsi que ൞𝑞𝑖 = σℎ=𝑙+1 𝑝ℎ𝑖
𝐹2 𝑝𝑟𝑚𝑡, 𝑙𝑖 𝐶𝑚𝑎𝑥 : ൞𝑙𝑗 = σ𝑙−1 𝑚
𝑝′2𝑖 = 𝑝𝑙𝑖 , ∀𝑖 = 1, … , 𝑛 ∀𝑖 = 1, … , 𝑛
Borne inférieure
On obtient le sous-problème qui peut résolu à l’optimalité en temps
polynomial par l’algorithme de Mitten-Jackson. On note la solution
optimale obtenue : 𝑃∗ 𝑀𝑘 , 𝑀𝑙 . La borne inférieure est donc égale à :
𝐿𝐵 = min {𝑃∗ 𝑀𝑘 , 𝑀𝑙 + ′min { 𝑟𝑖 + 𝑞𝑖 ′ }}
1≤𝑘<𝑙≤𝑛 𝑖,𝑖 =1,…,𝑛
𝑖≠𝑖′
La solution du 𝐹2 𝑝𝑟𝑚𝑡, 𝑙𝑖 𝐶𝑚𝑎𝑥 est obtenue à partir de l’ordre définit
par la relation ≼ entre de tâches 𝑇𝑖 et 𝑇𝑖′ ainsi,
𝑇𝑖 ≼ 𝑇𝑖′ ⟺ min(𝑝′1𝑖 + 𝑙𝑖 , 𝑝′2𝑖 ′ + 𝑙𝑖′ ) ≤ min(𝑝′2𝑖 + 𝑙𝑖 , 𝑝′1𝑖′ + 𝑙𝑖′ )