- Accueil
- EXAMEN PANDACODEUR
- Examen Recherche Opérationnelle
- IAR421 (IN4) 2025-2026
Examen Recherche Opérationnelle et CSP : IAR421 (IN4) 2025-2026
Classe : IN4 · Cours : IAR421 : Recherche Opérationnelle et Problèmes de Satisfaction des Contraintes · Durée : 3 h · Année : 2025-2026 · Examinateur : Pr SOH Mathurin
Tous les exercices sont obligatoires. Calculatrices, téléphones et documents de cours interdits.
- Notions :
- Programmation linéaire
- Simplexe
- Variables d'écart
- CSP
- Générer et tester
- Retour arrière
- Forward checking
- Métaheuristiques
- Recherche tabou
- Voyageur de commerce
- Corrigé disponible
SUJET
Exercice 1 : Programmation Linéaire 7 points
Une entreprise de mécanique fabrique trois types de pièces : A, B, C dans trois ateliers : usinage, montage, finitions. Les données techniques et commerciales relatives à cette fabrication sont résumées dans le tableau suivant :
| Nombres d'heures machines nécessaires à la fabrication d'un lot de 10 pièces | Bénéfice réalisé sur la vente d'un lot | |||
|---|---|---|---|---|
| Usinage | Montage | Finitions | ||
| Pièces A | 1 | 1,5 | 1,5 | 100 F |
| Pièces B | 2 | 1,5 | 2,5 | 150 F |
| Pièces C | 4 | 4,5 | 1,5 | 250 F |
| Capacité de l'atelier (h/mois) | 2000 | 2400 | 2400 | |
- Écrire le programme de fabrication réalisable chaque mois permettant d'obtenir le bénéfice maximal sur la vente de toute cette fabrication.
- Résoudre ce programme par l'algorithme du simplexe (méthode des tableaux).
- Quel est le bénéfice mensuel maximal pouvant ainsi être réalisé ? Ce programme de fabrication utilise-t-il à plein les capacités de chaque atelier ?
Exercice 2 : Problèmes de Satisfaction des Contraintes 7,5 points
Partie A : Répondre uniquement à trois questions (3 pts)
- Qu'est-ce qu'un problème de satisfaction de contraintes (CSP) ?
- Quelle est la différence entre une contrainte en extension et une contrainte en intension ?
- Quelle est la différence entre une affectation partielle et une affectation totale dans un CSP ?
- Comment distingue-t-on un CSP sur-contraint d'un CSP sous-contraint ? Expliquez avec des exemples ou situations simples.
Partie B
Soit le CSP suivant : CSP = (X, D, C), tels que :
- X = {X1, X2, X3}
- D(X1) = D(X2) = D(X3) = {3, 6, 9}
- C = {C1, C2} avec C1 : X1 < X2 et C2 : X2 < X3
- Ce CSP est-il consistant ? Justifier votre réponse.
- On se donne l'ordre statique suivant d'instanciation de variables : (X1, X2, X3), ainsi que l'ordre statique suivant de choix des valeurs du domaine des variables : (3, 6, 9). Que représente cette information, quel est son type et son utilité ? Est-ce qu'elle est toujours fiable ?
- En adoptant l'ordre de la question précédente d'instanciation
de variables et de choix des valeurs, appliquer les algorithmes suivants sur ce
CSP, en donnant l'arbre de recherche qui correspond à chacun d'eux :
- l'algorithme Générer et Tester ;
- l'algorithme Simple Retour Arrière ;
- l'algorithme d'anticipation.
- D'après les résultats obtenus en 3, expliquer la différence entre ces algorithmes.
Exercice 3 : Résolution de Problèmes par des Heuristiques / Métaheuristiques 6 points
- Définir Métaheuristique. (1 point)
- Donner 4 métaheuristiques et donner leur principe de fonctionnement. (2 points)
- Voici les données d'un problème de voyageur de commerce suivant : (3 points)
| ville | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|
| 1 | 14 | 15 | – | – | – | – | 17 |
| 2 | 13 | 14 | 20 | – | – | 21 | |
| 3 | 11 | 21 | 17 | 9 | 9 | ||
| 4 | 11 | 10 | 8 | 20 | |||
| 5 | 15 | 18 | – | ||||
| 6 | 9 | – | |||||
| 7 | 13 |
Appliquer la méta-heuristique dite Recherche avec tabous en utilisant (1-2-3-4-5-6-7-8-1) comme solution initiale.
CORRECTION
Tout ce qui suit est le corrigé détaillé de l'épreuve ci-dessus. Corrigé proposé par Yankam Ngueguim Joël Stéphane : Groupe Genius Répétition.
Exercice 1 : Programmation linéaire
1. Formulation du programme de fabrication
Variables de décision (on fabrique par lots de 10 pièces) :
- x1 = nombre de lots de pièces A fabriqués par mois ;
- x2 = nombre de lots de pièces B fabriqués par mois ;
- x3 = nombre de lots de pièces C fabriqués par mois.
Fonction objectif (bénéfice mensuel à maximiser, en F) :
Max Z = 100 x1 + 150 x2 + 250 x3
Contraintes (capacités horaires des trois ateliers) :
| Atelier | Contrainte | Capacité (h/mois) |
|---|---|---|
| Usinage | 1 x1 + 2 x2 + 4 x3 ≤ 2000 | 2000 |
| Montage | 1,5 x1 + 1,5 x2 + 4,5 x3 ≤ 2400 | 2400 |
| Finitions | 1,5 x1 + 2,5 x2 + 1,5 x3 ≤ 2400 | 2400 |
Contraintes de signe : x1 ≥ 0, x2 ≥ 0, x3 ≥ 0.
2. Résolution par l'algorithme du simplexe
Forme standard. On ajoute une variable d'écart par contrainte (x4, x5, x6 = heures inutilisées dans chaque atelier) :
Max Z = 100 x1 + 150 x2 + 250 x3 + 0 x4 + 0 x5 + 0 x6
x1 + 2 x2 + 4 x3 + x4 = 2000
1,5 x1 + 1,5 x2 + 4,5 x3 + x5 = 2400
1,5 x1 + 2,5 x2 + 1,5 x3 + x6 = 2400
xi >= 0 pour i = 1,...,6
Base de départ : (x4, x5, x6) avec x1 = x2 = x3 = 0, donc Z = 0.
Itération 1
| Base | x1 | x2 | x3 | x4 | x5 | x6 | Solution | Rapport |
|---|---|---|---|---|---|---|---|---|
| Z | 100 | 150 | 250 | 0 | 0 | 0 | 0 | |
| x4 | 1 | 2 | 4 | 1 | 0 | 0 | 2000 | 500 |
| x5 | 3/2 | 3/2 | 9/2 | 0 | 1 | 0 | 2400 | 1600/3 |
| x6 | 3/2 | 5/2 | 3/2 | 0 | 0 | 1 | 2400 | 1600 |
Colonne pivot : x3 (plus grand coefficient positif de la ligne Z : 250). Ligne pivot : x4 (plus petit rapport : 500). Élément pivot : 4. x3 entre en base, x4 en sort.
Itération 2
| Base | x1 | x2 | x3 | x4 | x5 | x6 | Solution | Rapport |
|---|---|---|---|---|---|---|---|---|
| Z | 75/2 | 25 | 0 | −125/2 | 0 | 0 | −125000 | |
| x3 | 1/4 | 1/2 | 1 | 1/4 | 0 | 0 | 500 | 2000 |
| x5 | 3/8 | −3/4 | 0 | −9/8 | 1 | 0 | 150 | 400 |
| x6 | 9/8 | 7/4 | 0 | −3/8 | 0 | 1 | 1650 | 4400/3 |
Colonne pivot : x1 (coefficient 75/2). Ligne pivot : x5 (rapport 400). Pivot : 3/8. x1 entre en base, x5 en sort.
Itération 3
| Base | x1 | x2 | x3 | x4 | x5 | x6 | Solution | Rapport |
|---|---|---|---|---|---|---|---|---|
| Z | 0 | 100 | 0 | 50 | −100 | 0 | −140000 | |
| x3 | 0 | 1 | 1 | 1 | −2/3 | 0 | 400 | 400 |
| x1 | 1 | −2 | 0 | −3 | 8/3 | 0 | 400 | – |
| x6 | 0 | 4 | 0 | 3 | −3 | 1 | 1200 | 300 |
Colonne pivot : x2 (coefficient 100). Ligne pivot : x6 (rapport 300). Pivot : 4. x2 entre en base, x6 en sort.
Itération 4 : tableau final, optimalité
| Base | x1 | x2 | x3 | x4 | x5 | x6 | Solution |
|---|---|---|---|---|---|---|---|
| Z | 0 | 0 | 0 | −25 | −25 | −25 | −170000 |
| x3 | 0 | 0 | 1 | 1/4 | 1/12 | −1/4 | 100 |
| x1 | 1 | 0 | 0 | −3/2 | 7/6 | 1/2 | 1000 |
| x2 | 0 | 1 | 0 | 3/4 | −3/4 | 1/4 | 300 |
Tous les coefficients de la ligne Z sont ≤ 0 : la solution est optimale.
Remarque : dans la ligne Z, la colonne « Solution » contient −Z (convention du cours). Ici −Z = −170 000, donc Z = 170 000.
Lecture de la solution optimale : x1 = 1000 ; x2 = 300 ; x3 = 100 ; x4 = x5 = x6 = 0.
3. Bénéfice maximal et utilisation des capacités
Z* = 100×1000 + 150×300 + 250×100 = 100 000 + 45 000 + 25 000 = 170 000 F
Programme de fabrication optimal : 1000 lots de A (10 000 pièces A), 300 lots de B (3 000 pièces B) et 100 lots de C (1 000 pièces C) par mois.
| Atelier | Heures utilisées | Capacité | Écart |
|---|---|---|---|
| Usinage | 1000 + 2×300 + 4×100 = 2000 | 2000 | x4 = 0 |
| Montage | 1,5×1000 + 1,5×300 + 4,5×100 = 2400 | 2400 | x5 = 0 |
| Finitions | 1,5×1000 + 2,5×300 + 1,5×100 = 2400 | 2400 | x6 = 0 |
Conclusion : les trois variables d'écart sont nulles et hors base à l'optimum. Oui, ce programme utilise à plein les capacités de chaque atelier : usinage, montage et finitions sont tous les trois saturés.
Exercice 2 : Problèmes de satisfaction de contraintes
Partie A : Questions de cours
1. Qu'est-ce qu'un CSP ?
Un CSP est un problème défini par un triplet (X, D, C) où :
- X = {X1, …, Xn} est un ensemble fini de variables ;
- D = {D(X1), …, D(Xn)} est l'ensemble des domaines, ensembles finis de valeurs possibles de chaque variable ;
- C = {C1, …, Cm} est un ensemble de contraintes, chacune portant sur un sous-ensemble de variables et limitant les combinaisons de valeurs autorisées.
Résoudre un CSP consiste à trouver une affectation de valeurs à toutes les variables, dans leurs domaines, qui satisfait toutes les contraintes (une solution), ou à prouver qu'il n'en existe pas. Exemples : coloriage de carte, emploi du temps, Sudoku, problème des N reines.
2. Contrainte en extension et contrainte en intension
- En extension : la contrainte est définie en énumérant explicitement la liste des tuples de valeurs autorisés (ou interdits). Exemple : C(X,Y) = {(1,2), (1,3), (2,3)}.
- En intension : la contrainte est définie par une expression, formule ou prédicat que les valeurs doivent vérifier. Exemple : X < Y, ou X + Y = 10.
Avec D(X) = D(Y) = {1,2,3}, la contrainte intensionnelle X < Y équivaut à la contrainte extensionnelle {(1,2), (1,3), (2,3)}. La forme intensionnelle est plus compacte ; la forme extensionnelle est plus générale mais volumineuse.
3. Affectation partielle et affectation totale
- Affectation partielle : seule une partie des variables a reçu une valeur. Elle est dite consistante si elle ne viole aucune contrainte dont toutes les variables sont déjà instanciées.
- Affectation totale : toutes les variables ont reçu une valeur.
Une solution est une affectation totale consistante. Exemple : pour X < Y < Z sur {1,2,3}, (X=1) est une affectation partielle, (X=1, Y=2, Z=3) est une affectation totale et c'est une solution.
4. CSP sur-contraint et CSP sous-contraint
- CSP sur-contraint : les contraintes sont trop nombreuses ou trop fortes, aucune solution n'existe. Exemple : X < Y et Y < X ; ou X ≠ Y, Y ≠ Z, X ≠ Z avec les domaines {1,2}.
- CSP sous-contraint : les contraintes sont peu restrictives, il existe beaucoup de solutions. Exemple : X ≠ Y avec D(X) = D(Y) = {1,2,3}, soit 6 solutions sur 9 affectations.
Entre les deux, un CSP est « bien contraint » lorsqu'il admet une solution unique, c'est le cas de la partie B. Pour un CSP sur-contraint, on cherche souvent à relâcher des contraintes (Max-CSP) ; pour un CSP sous-contraint, on peut chercher la meilleure solution selon un critère.
Partie B : Étude du CSP
X = {X1, X2, X3} ; D(X1) = D(X2) = D(X3) = {3, 6, 9} ; C = {C1 : X1 < X2 ; C2 : X2 < X3}.
1) Ce CSP est-il consistant ?
Oui. Il admet au moins une solution : l'affectation (X1, X2, X3) = (3, 6, 9) vérifie C1 : 3 < 6 et C2 : 6 < 9. Comme il faut X1 < X2 < X3 avec seulement trois valeurs distinctes disponibles, c'est même la seule solution du CSP, qui est donc bien contraint.
2) Ordres statiques : signification, utilité, fiabilité
L'ordre statique d'instanciation des variables (X1, X2, X3) et l'ordre de choix des valeurs (3, 6, 9) sont deux heuristiques fixées avant la recherche et qui ne changent pas pendant son déroulement.
- Ce qu'elles représentent : l'ordre dans lequel l'algorithme choisit la prochaine variable à instancier (un niveau de l'arbre de recherche par variable) et l'ordre dans lequel il essaie les valeurs du domaine (l'ordre des branches d'un nœud). Elles définissent donc la forme de l'arbre de recherche parcouru.
- Utilité : elles influencent l'efficacité de la recherche. Un bon ordre, variables les plus contraintes d'abord, valeurs les plus prometteuses d'abord, permet de détecter tôt les échecs, de réduire les retours arrière et de trouver rapidement une solution. Ici, l'ordre croissant suit le sens des contraintes X1 < X2 < X3.
- Fiabilité : non, elles ne sont pas toujours fiables. Ce sont des heuristiques : elles n'affectent pas la correction (la complétude de l'algorithme reste garantie), mais n'apportent aucune garantie d'efficacité. Un mauvais ordre peut explorer inutilement une grande partie de l'arbre. Comme l'ordre est fixé à l'avance, il ne tient pas compte de l'évolution des domaines ; d'où l'intérêt des ordres dynamiques, par exemple MRV (variable de plus petit domaine).
3) Application des algorithmes
Ordre des variables : X1, X2, X3. Ordre des valeurs : 3, 6, 9.
a) Générer et Tester
Principe : on génère les affectations totales (27 au maximum) dans l'ordre lexicographique, puis on teste chacune sur l'ensemble des contraintes.
| N° | (X1, X2, X3) | C1 : X1 < X2 | C2 : X2 < X3 | Résultat |
|---|---|---|---|---|
| 1 | (3, 3, 3) | 3<3 faux | – | Rejetée |
| 2 | (3, 3, 6) | 3<3 faux | – | Rejetée |
| 3 | (3, 3, 9) | 3<3 faux | – | Rejetée |
| 4 | (3, 6, 3) | 3<6 vrai | 6<3 faux | Rejetée |
| 5 | (3, 6, 6) | 3<6 vrai | 6<6 faux | Rejetée |
| 6 | (3, 6, 9) | 3<6 vrai | 6<9 vrai | SOLUTION |
Bilan : 6 affectations totales générées et testées, 5 échecs, solution (3, 6, 9) trouvée au 6e test.
b) Simple Retour Arrière (Backtracking)
Principe : on instancie les variables une à une ; dès qu'une contrainte est violée par l'affectation partielle, on revient en arrière et on essaie la valeur suivante.
X1 = 3 -> consistant (aucune contrainte entierement instanciee)
X2 = 3 -> C1 : 3 < 3 faux X (retour arriere)
X2 = 6 -> C1 : 3 < 6 vrai OK
X3 = 3 -> C2 : 6 < 3 faux X
X3 = 6 -> C2 : 6 < 6 faux X
X3 = 9 -> C2 : 6 < 9 vrai OK -> SOLUTION (3, 6, 9)
Bilan : 6 affectations de valeur essayées, dont 3 échecs détectés dès l'affectation partielle. On n'a pas généré les combinaisons issues de X2 = 3, soit 3 affectations totales évitées.
c) Algorithme d'anticipation (Forward Checking)
Principe : après chaque affectation, on filtre les domaines des variables non encore instanciées en retirant les valeurs incompatibles avec la valeur choisie. Si un domaine devient vide, on revient en arrière immédiatement.
| Étape | Affectation | D(X1) | D(X2) | D(X3) | Remarque |
|---|---|---|---|---|---|
| 0 | Initialisation | {3,6,9} | {3,6,9} | {3,6,9} | – |
| 1 | X1 = 3 | {3} | {6,9} | {3,6,9} | C1 : on retire de D(X2) les valeurs ≤ 3 |
| 2 | X2 = 6 | {3} | {6} | {9} | C2 : on retire de D(X3) les valeurs ≤ 6 |
| 3 | X3 = 9 | {3} | {6} | {9} | Tous les domaines non vides : SOLUTION |
Bilan : 3 affectations seulement, aucun échec et aucun retour arrière : la valeur 3 de X2 et les valeurs 3 et 6 de X3 sont éliminées avant d'être essayées.
4) Comparaison des trois algorithmes
| Critère | Générer & Tester | Retour arrière | Anticipation (FC) |
|---|---|---|---|
| Affectations essayées | 6 (totales) | 6 (partielles) | 3 |
| Échecs rencontrés | 5 | 3 | 0 |
| Moment du test | Après génération d'une affectation totale | Dès qu'une contrainte est instanciée | Avant l'affectation : filtrage des domaines futurs |
| Élagage de l'espace | Aucun | Oui (a posteriori) | Oui (a priori) |
- Générer & Tester est le plus naïf : il ne profite pas des contraintes pour construire les affectations, teste chaque combinaison complète et ne détecte l'échec qu'à la fin (jusqu'à 3³ = 27 tests dans le pire cas). Il ne tire aucune leçon d'une erreur précoce : (3,3,3), (3,3,6) et (3,3,9) échouent tous pour la même raison, X1 < X2.
- Retour arrière simple teste les contraintes au fur et à mesure sur l'affectation partielle : une violation coupe tout le sous-arbre correspondant. Il détecte pourtant l'échec après avoir affecté la valeur.
- Anticipation (Forward Checking) va plus loin : après chaque affectation, elle propage la contrainte sur les domaines des variables futures et supprime les valeurs vouées à l'échec avant même de les essayer. C'est donc l'algorithme qui explore le moins de nœuds, ici 3, sans aucun échec, au prix d'un travail de filtrage supplémentaire à chaque nœud, largement compensé sur de grands problèmes.
Conclusion : Générer & Tester < Retour arrière < Anticipation en nombre de nœuds explorés, sachant que les trois algorithmes sont complets et trouvent la même solution (3, 6, 9).
Exercice 3 : Heuristiques et métaheuristiques
1) Définition d'une métaheuristique
Une métaheuristique (du grec méta : au-delà, à un plus haut niveau ; heuriskein : trouver) est un algorithme d'optimisation générique visant à résoudre des problèmes d'optimisation difficiles, souvent combinatoires, NP-difficiles, pour lesquels on ne connaît pas de méthode classique efficace. Elle fournit une solution de bonne qualité en temps raisonnable, sans garantie d'optimalité, en combinant exploration (diversification) et exploitation (intensification) de l'espace de recherche. Elle est indépendante du problème traité, souvent fondée sur un échantillonnage probabiliste et inspirée de systèmes naturels (physique, biologie, comportement social).
2) Quatre métaheuristiques et leur principe
| Métaheuristique | Type | Principe de fonctionnement |
|---|---|---|
| Recuit simulé | Voisinage (une solution) | Inspiré du recuit des métaux : chauffage puis refroidissement lent. On part d'une solution, on choisit un voisin ; s'il est meilleur on l'accepte, sinon on l'accepte avec la probabilité exp(−Δ/T), où T est la température. T diminue progressivement : au début on accepte des dégradations (exploration), à la fin on se comporte comme une descente (exploitation). Cela permet d'échapper aux optima locaux. |
| Recherche tabou | Voisinage avec mémoire | À chaque itération on se déplace vers le meilleur voisin non tabou, même s'il est moins bon que la solution courante. Une liste tabou (mémoire à court terme) interdit pendant quelques itérations les mouvements récents pour éviter de cycler ; un critère d'aspiration autorise un mouvement tabou s'il améliore la meilleure solution connue. |
| Algorithmes génétiques | Population | Inspirés de la théorie de Darwin. Une population de solutions (individus) évolue par sélection des meilleurs, croisement (recombinaison de deux parents) et mutation (modification aléatoire), génération après génération, jusqu'à un critère d'arrêt ; on garde le meilleur individu. |
| Colonies de fourmis (ACO) | Population | Des fourmis artificielles construisent des solutions pas à pas en choisissant probabilistement leur chemin selon les phéromones déposées. Les bons chemins reçoivent plus de phéromones (renforcement), les phéromones s'évaporent avec le temps (oubli) : la colonie converge par coopération indirecte (stigmergie). |
Autres possibles : essaims particulaires (PSO), descente de gradient, estimation de distributions.
3) Voyageur de commerce : recherche avec tabous
Données
Villes 1 à 8. Les « – » du tableau indiquent l'absence de liaison directe : le coût est pris égal à ∞ et la tournée correspondante est interdite. Matrice symétrique complète des distances :
| ville | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| 1 | 0 | 14 | 15 | ∞ | ∞ | ∞ | ∞ | 17 |
| 2 | 14 | 0 | 13 | 14 | 20 | ∞ | ∞ | 21 |
| 3 | 15 | 13 | 0 | 11 | 21 | 17 | 9 | 9 |
| 4 | ∞ | 14 | 11 | 0 | 11 | 10 | 8 | 20 |
| 5 | ∞ | 20 | 21 | 11 | 0 | 15 | 18 | ∞ |
| 6 | ∞ | ∞ | 17 | 10 | 15 | 0 | 9 | ∞ |
| 7 | ∞ | ∞ | 9 | 8 | 18 | 9 | 0 | 13 |
| 8 | 17 | 21 | 9 | 20 | ∞ | ∞ | 13 | 0 |
Paramètres de la recherche
- Solution initiale : s0 = (1-2-3-4-5-6-7-8-1).
- Voisinage : échange de deux villes dans la tournée (la ville 1, point de départ, reste fixe), soit C(7,2) = 21 voisins par itération.
- Liste tabou : les 3 dernières paires de villes échangées. Un mouvement tabou n'est accepté que si le voisin est meilleur que la meilleure solution connue (critère d'aspiration).
- Choix : à chaque itération, le meilleur voisin autorisé, même s'il est pire que la solution courante. Arrêt : 6 itérations.
Évaluation de la solution initiale
f(s0) = 14 + 13 + 11 + 11 + 15 + 9 + 13 + 17 = 103
La tournée est réalisable : toutes les liaisons existent. Meilleure solution courante : s* = s0, f* = 103.
Déroulement des itérations
Itération 1 : courante : 1-2-3-4-5-6-7-8-1, coût 103. Liste tabou : ∅
| Échange | Voisin | Coût | Statut |
|---|---|---|---|
| (2,3) | 1-3-2-4-5-6-7-8-1 | 107 | CHOISI |
| (4,5) | 1-2-3-5-4-6-7-8-1 | 108 | autorisé |
| (4,6) | 1-2-3-6-5-4-7-8-1 | 108 | autorisé |
| (5,6) | 1-2-3-4-6-5-7-8-1 | 111 | autorisé |
| (3,5) | 1-2-5-4-3-6-7-8-1 | 112 | autorisé |
| (3,4) | 1-2-4-3-5-6-7-8-1 | 114 | autorisé |
Mouvement choisi : échange (2, 3). Nouvelle solution 1-3-2-4-5-6-7-8-1, coût 107. Les 6 meilleurs voisins sur 21 sont affichés ; les autres ont un coût supérieur ou sont infaisables.
Itération 2 : courante : 1-3-2-4-5-6-7-8-1, coût 107. Liste tabou : {(2,3)}
| Échange | Voisin | Coût | Statut |
|---|---|---|---|
| (2,3) | 1-2-3-4-5-6-7-8-1 | 103 | tabou |
| (4,5) | 1-3-2-5-4-6-7-8-1 | 108 | CHOISI |
| (3,8) | 1-8-2-4-5-6-7-3-1 | 111 | autorisé |
| (2,4) | 1-3-4-2-5-6-7-8-1 | 114 | autorisé |
| (5,6) | 1-3-2-4-6-5-7-8-1 | 115 | autorisé |
Mouvement choisi : échange (4, 5). Nouvelle solution 1-3-2-5-4-6-7-8-1, coût 108.
Itération 3 : courante : 1-3-2-5-4-6-7-8-1, coût 108. Liste tabou : {(2,3), (4,5)}
| Échange | Voisin | Coût | Statut |
|---|---|---|---|
| (4,5) | 1-3-2-4-5-6-7-8-1 | 107 | tabou |
| (2,3) | 1-2-3-5-4-6-7-8-1 | 108 | tabou |
| (4,6) | 1-3-2-5-6-4-7-8-1 | 111 | CHOISI |
| (3,8) | 1-8-2-5-4-6-7-3-1 | 112 | autorisé |
| (2,5) | 1-3-5-2-4-6-7-8-1 | 119 | autorisé |
| (4,7) | 1-3-2-5-7-6-4-8-1 | 122 | autorisé |
Mouvement choisi : échange (4, 6). Nouvelle solution 1-3-2-5-6-4-7-8-1, coût 111.
Itération 4 : courante : 1-3-2-5-6-4-7-8-1, coût 111. Liste tabou : {(2,3), (4,5), (4,6)}
| Échange | Voisin | Coût | Statut |
|---|---|---|---|
| (4,6) | 1-3-2-5-4-6-7-8-1 | 108 | tabou |
| (2,3) | 1-2-3-5-6-4-7-8-1 | 111 | tabou |
| (3,8) | 1-8-2-5-6-4-7-3-1 | 115 | CHOISI |
| (4,5) | 1-3-2-4-6-5-7-8-1 | 115 | tabou |
| (4,7) | 1-3-2-5-6-7-4-8-1 | 117 | autorisé |
| (2,6) | 1-3-6-5-2-4-7-8-1 | 119 | autorisé |
Mouvement choisi : échange (3, 8). Nouvelle solution 1-8-2-5-6-4-7-3-1, coût 115.
Itération 5 : courante : 1-8-2-5-6-4-7-3-1, coût 115. Liste tabou : {(4,5), (4,6), (3,8)}
| Échange | Voisin | Coût | Statut |
|---|---|---|---|
| (3,8) | 1-3-2-5-6-4-7-8-1 | 111 | tabou |
| (4,6) | 1-8-2-5-4-6-7-3-1 | 112 | tabou |
| (2,7) | 1-8-7-5-6-4-2-3-1 | 115 | CHOISI |
| (4,7) | 1-8-2-5-6-7-4-3-1 | 116 | autorisé |
| (4,5) | 1-8-2-4-6-5-7-3-1 | 119 | tabou |
| (6,7) | 1-8-2-5-7-4-6-3-1 | 126 | autorisé |
Mouvement choisi : échange (2, 7). Nouvelle solution 1-8-7-5-6-4-2-3-1, coût 115.
Itération 6 : courante : 1-8-7-5-6-4-2-3-1, coût 115. Liste tabou : {(4,6), (3,8), (2,7)}
| Échange | Voisin | Coût | Statut |
|---|---|---|---|
| (5,6) | 1-8-7-6-5-4-2-3-1 | 107 | CHOISI |
| (2,3) | 1-8-7-5-6-4-3-2-1 | 111 | autorisé |
| (4,5) | 1-8-7-4-6-5-2-3-1 | 111 | autorisé |
| (2,7) | 1-8-2-5-6-4-7-3-1 | 115 | tabou |
| (3,8) | 1-3-7-5-6-4-2-8-1 | 119 | tabou |
| (2,6) | 1-8-7-5-2-4-6-3-1 | 124 | autorisé |
Mouvement choisi : échange (5, 6). Nouvelle solution 1-8-7-6-5-4-2-3-1, coût 107.
Récapitulatif
| Itération | Solution courante | Coût | Mouvement | Nouvelle solution | Coût |
|---|---|---|---|---|---|
| 1 | 1-2-3-4-5-6-7-8-1 | 103 | (2,3) | 1-3-2-4-5-6-7-8-1 | 107 |
| 2 | 1-3-2-4-5-6-7-8-1 | 107 | (4,5) | 1-3-2-5-4-6-7-8-1 | 108 |
| 3 | 1-3-2-5-4-6-7-8-1 | 108 | (4,6) | 1-3-2-5-6-4-7-8-1 | 111 |
| 4 | 1-3-2-5-6-4-7-8-1 | 111 | (3,8) | 1-8-2-5-6-4-7-3-1 | 115 |
| 5 | 1-8-2-5-6-4-7-3-1 | 115 | (2,7) | 1-8-7-5-6-4-2-3-1 | 115 |
| 6 | 1-8-7-5-6-4-2-3-1 | 115 | (5,6) | 1-8-7-6-5-4-2-3-1 | 107 |
Résultat : après 6 itérations, la meilleure tournée rencontrée reste 1-2-3-4-5-6-7-8-1 de coût 103, c'est-à-dire la solution initiale. On remarque que la recherche tabou accepte des solutions de coût plus élevé (107, 108, 111, 115) pour sortir du voisinage de la solution initiale et éviter de cycler, grâce à la liste tabou.
Remarque. En poursuivant la même recherche avec une liste tabou de taille 3, l'algorithme atteint le coût 98 à la 13e itération, avec la tournée 1-8-3-7-6-5-4-2-1 (identique à 1-2-4-5-6-7-3-8-1 parcourue en sens inverse). Une énumération complète des tournées confirme que 98 est l'optimum global : 14 + 14 + 11 + 15 + 9 + 9 + 9 + 17 = 98. C'est l'illustration du caractère approché des métaheuristiques : en 6 itérations, l'algorithme n'a pas encore atteint l'optimum, mais il ne s'est pas non plus enfermé dans le premier optimum local.
« La persévérance, c'est ce qui rend l'impossible possible, le possible probable et le probable réalisé. »
Bonne chance pour la suite !
Corrigé réalisé par Yankam Ngueguim Joël
Stéphane : Groupe Genius Répétition.
Questions / Réponses
Ajouter un commentaire