Chapitre 2 - Méthode de Résolution Par Séparation Et Évaluation
Chapitre 2 - Méthode de Résolution Par Séparation Et Évaluation
Chapitre 2 - Méthode de Résolution Par Séparation Et Évaluation
Optimisation Combinatoire
Par
Dr. Slim BECHIKH
Maître de Conférences en Informatique de Gestion
[email protected]
L’idée la plus simple pour résoudre le problème du sac à dos est de générer
(énumérer) toutes les solutions possibles et les évaluer. Par la suite, nous pouvons
trier les solutions selon le profit généré et ainsi détecter la solution optimale.
Ceci est faisable lorsque nous disposons d’un très petit nombre d’objets. A titre
d’exemples, nous disposons de 2 ou 3 objets qui peuvent être mis dans le sac à dos.
Elaguer (couper) les branches qui ne mènent pas vers des solutions meilleures
(intéressantes) 🡺 Réduire la taille de l’arbre 🡺 C’est le principe du B&B.
Etape 1:
a) Exécuter la séparation sur la variable ayant une valeur fractionnaire.
b) Pour chaque nœud obtenu, calculer les bornes UB et LB.
c) Déduire la solution obtenue à partir du calcul de la borne UB qui peut être
fractionnaire ou entière (intégrale).
KP capacity: W = 10
Profit: 60 60 ½ * 40 = 140
UB(F 0) = Weight: 3 5 ½*4 = 10
Item: 1 2 3 4 5 6 7
KP capacity: W = 10
Profit: 60 60 0 10 0 0 3 = 133
LB(F 0) = Weight: 3 5 0 1 0 0 1 = 10
Item: 1 2 3 4 5 6 7
Ici, on s’arrête quand on ne peut plus mettre aucun objet dans le sac.
L’objet ici est indécomposable.
Ici, nous avons rencontré la première solution qui ne contient que des zéros et des uns.
Il s’agit de la première solution faisable rencontrée. Sa borne inférieure LB va être
utilisée comme une borne inférieure globale (Global_LB). Ceci veut dire qu’à chaque
fois qu’on trouve une borne LB inférieure à Global_LB, nous remplaçons cette borne par
la valeur de Global_LB.
©2021 Dr. Slim BECHIKH Optimisation Combinatoire
18
1) Illustration du B&B sur le problème de sac à dos
Borne inférieure LB: C’est une valeur minimum de la fonction objectif. Autrement
dit, c’est une valeur qui est nécessairement inférieure à la valeur de la meilleure
solution possible qui peut être obtenue en suivant la branche considérée.
UB
La valeur de la fonction objectif (profit) de la meilleure
solution possible à partir de la branche considérée est
comprise entre LB et UB.
LB
UB ≤ LB veut dire qu’on peut pas faire mieux, c.à.d., on ne peut trouver aucune
solution qui soit meilleure à la meilleure solution actuelle. Le scénario parfait va
générer une solution qui a une LB qui soit égale à Global_LB.
🡺 L’objectif du B&B est de maximiser la LB pour maximiser le profit.
©2021 Dr. Slim BECHIKH Optimisation Combinatoire
21
1) Illustration du B&B sur le problème de sac à dos
320 - 320 = 0
260 - 60 = 200
60 +70 = 130
Regret maximal
Enoncé
Soit 4 agents à affecter à 4 tâches. Le coût de l’affectation de l’agent i à la tâche j est
donné par la matrice ci-dessous. Le problème consiste à affecter chaque agent à
une seule tâche de telle manière à minimiser le coût total. Bien entendu, une tâche
ne peut être réalisée que par un seul agent.
Corrigé
Tâche 1 Tâche 2 Tâche 3 Tâche 4
Agent A 9 2 7 8
Agent B 6 4 3 7
Agent C 5 8 1 8
Agent D 7 6 9 4
Corrigé
2) Déterminer la solution optimale en utilisant
l’algorithme B&B.
F0
START
LB = 10
LB(F4) = C(A, 4) + Min(Ligne B) +
Min(Ligne C) + Min(Ligne D)
= 8 + 3 + 1 + 6 = 18
F1 F2 F3 F4
A←1 A←2 A←3 A←4
LB = 17 LB = 10 LB = 20 LB = 18
Corrigé
2) Déterminer la solution optimale en utilisant
l’algorithme B&B.
F0
START
LB = 10
F1 F2 F3 F4
A←1 A←2 A←3 A←4
On détaille le nœud ayant la
LB = 17 LB = 10 LB = 20 LB = 18 meilleure LB.
F5 F6 F7
B←1 B←3 B←4
LB = 13 LB = 14 LB = 17
Corrigé
F0
START
LB = 10
F1 F2 F3 F4
A←1 A←2 A←3 A←4
LB = 17 LB = 10 LB = 20 LB = 18
Corrigé
F0
START
LB = 10
F1 F2 F3 F4
A←1 A←2 A←3 A←4 On doit élaguer tous ces
nœuds ayant des LB (ou
LB = 17 LB = 10 LB = 20 LB = 18
coûts) supérieures à 13.
F5 F6 F7
B←1 B←3 B←4
LB = 13 LB = 14 LB = 17
Solution optimale:
F8 F9 A ← 2, B ← 1, C ← 3, D ← 4
C←3 C←4
D←4 D←3
C = 13 C = 25
Enoncé
Supposons que nous avons 4 tâches et 3 machines de sorte que chaque tâche doit
passer par les 3 machines dans l’ordre. Soit ai / bi / ci le temps d’exécution de la
tâche Ti sur la machine M1 / M2 / M3. Nous désirons déterminer la permutation
optimale des tâches sur les machines qui minimise le makespan.
ai bi ci
(sur M1) (sur M2) (sur M3)
Tâche 1 1 8 4
Tâche 2 2 4 5
Tâche 3 6 2 8
Tâche 4 3 9 2
Enoncé
Questions:
1) Tracer le diagramme de GANTT de la solution (1, 2, 3, 4).
2) Tracer le diagramme de GANTT de la solution (4, 3, 1, 2).
3) Proposer une borne inférieure LB sur le makespan CMAX en utilisant les variables:
αik = Date de fin de la tâche Ti sur la machine M1 lorsque Ti est exécutée à la kème position;
βik = Date de fin de la tâche Ti sur la machine M2 lorsque Ti est exécutée à la kème position;
γik = Date de fin de la tâche Ti sur la machine M3 lorsque Ti est exécutée à la kème position;
4) Définir une première borne supérieure calculée en évaluant la solution (1, 2, 3, 4).
5) Développer l’arbre de recherche B&B pour trouver la solution optimale.
Corrigé
1) Tracer le diagramme de GANTT de la solution (1, 2, 3, 4).
Corrigé
2) Tracer le diagramme de GANTT de la solution (4, 3, 1, 2).
Corrigé
3) Proposer une borne inférieure LB sur le makespan CMAX en utilisant les variables:
αik = Date de fin de la tâche Ti sur la machine M1 lorsque Ti est exécutée à la kème position;
βik = Date de fin de la tâche Ti sur la machine M2 lorsque Ti est exécutée à la kème position;
γik = Date de fin de la tâche Ti sur la machine M3 lorsque Ti est exécutée à la kème position;
Pour proposer une borne inférieure LB, nous suivons les étapes suivantes:
Corrigé
Etape 0: Exprimer récursivement la façon de calculer chaque variable:
Corrigé
Etape 0: Exprimer récursivement la façon de calculer chaque variable:
Corrigé
Etape 0: Exprimer récursivement la façon de calculer chaque variable:
bik
Corrigé
Etape 0: Exprimer récursivement la façon de calculer chaque variable:
( )
Corrigé
Etape 1: L’algorithme B&B nécessite de partitionner les tâches en 2 sous-ensembles:
•A: Sous-ensemble des tâches exécutées jusqu’à l’instant (Indices = {1, ..., k});
•U: Sous-ensemble des tâches non encore exécutées (Indices = {k+1, ..., n}).
Pour calculer une borne inférieure, nous allons considérer les 3 situations les plus favorables
qui peuvent se présenter de sorte que nous exprimons le plus court temps d’exécution des
tâches de l’ensemble U (non encore exécutées).
Situation I: L’exécution sur la machine M1 est continuelle, ce qui est un évènement vrai. Soit
Ti(n) la dernière tâche exécutée d’une solution donnée. Le meilleur cas pour Ti(n) est de ne pas
attendre sur les machines M2 et M3 . De cette façon, le makespan sera:
Corrigé
Situation I:
1) M1 est continuelle.
2) Pas d’attente ni sur M2 ni sur M3 pour Ti(n).
🡺 Quelle que soit la solution, le makespan sera:
Pas d’attente
sur M3.
( )
Corrigé
Corrigé
Situation II: Similairement, si nous considérons que l’exécution sur la machine M2 est
continuelle et qu’il n’ y a pas d’attente sur M3, le makespan sera:
Corrigé
Par conséquent, si on choisit le plus court temps d’exécution sur la machine M3, alors que ce
soit la solution, nous aurons:
Situation III: Similairement, si nous considérons que l’exécution sur la machine M3 est
continuelle, le makespan sera borné comme suit:
C’est un cas
trivial.
Corrigé
Etape 2: En conclusion, que ce soit la solution, son makespan ne peut pas être inférieur au
maximum des 3 expressions des 3 situations:
Corrigé
Etape 3: Calcul de la borne inférieure LB:
25
Corrigé
4) Définir une première borne supérieure calculée en évaluant la solution (1, 2, 3, 4).
Corrigé
Corrigé
= max
2
Corrigé
Corrigé
Corrigé
5) Développer l’arbre de recherche B&B pour trouver la solution optimale.
Corrigé
5) Développer l’arbre de recherche B&B pour trouver la solution optimale.