TRAVAIL D’ETUDE ET DE RECHERCHE
Présenté par :
Sarah BOUNEJMATE & Pala-Beh YEBLI
Résolution du sac à dos
bidimensionnel av...
Table des matières
Remerciement 1
Introduction générale 1
1 Le problème du Knapsack bidimensionnel avec contrainte de préc...
Conclusion et perspectives 17
Bibliographie 20
2
Table des figures
1 Illustration du problème du sac à dos . . . . . . . . . . . . . . . . . . . . . . 1
2.1 Illustration de...
Remerciement
Nous tenons à remercier en premier lieu nos familles et amis pour leur soutien, leur
encouragement et leur pa...
Introduction
Supposons que nous prévoyons une randonnée ; et nous sommes donc amenés à remplir
un sac à dos avec des items...
Chapitre 1
Le problème du Knapsack
bidimensionnel avec contrainte de
précédence
1.1 Introduction
Le problème du sac à dos ...
1.2 Formulation en programme linéaire
Le 0/1 Knapsack problem est un problème qui consiste à choisir de mettre dans un sac...
Chapitre 2
Résolution exacte du Knapsack
bidimensionnel avec contrainte de
précédence en utilisant la méthode du
Branch an...
2.2 La méthode du Branch and Bound
2.2.1 Contexte général
Le Branch and Bound se présente comme un parcours d’un arbre de ...
2.2.1.2 L’évaluation
Elle consiste à évaluer les solutions d’un sous-ensemble c’est à dire de trouver la meilleure
solutio...
2. L’ évaluation au niveau d’un noeud est inférieure ou égale à la valeur de la meilleure
solution entière stockée. En dév...
L’algorithme maintient donc la valeur M de la meilleure solution trouvée et la liste NA
des nœuds actifs, susceptibles de ...
Fig. 2.3 – Résolution du PCBKS à l’aide du branch and bound et le parcours en BFS par exemple
En fonction de la structure ...
2.3.1.1 Parcours en profondeur DFS
L’idée de la Recherche en Profindeur d’abord est de rendre cette recherche plus efficace
e...
Fig. 2.4 – Pseudo code pour le DFS
2.3.1.2 Parcours en largeur BFS
Le parcours en Largeur d’abord énumère les nœuds suivan...
Fig. 2.5 – Pseudo code pour le BFS
12
2.4 Conclusion
Dans ce chapitre, nous avons présenté un tour d’horizon de quelques stratégies de par-
cours d’un arbre de ...
Chapitre 3
Résultats des implémentations et
comparaison du parcours de l’arbre de
recherche en BFS et en DFS
3.1 Introduct...
15
Fig. 3.1 – Résultats et temps d’exécution
On peut constater déjà que les deux méthodes retournent la bonne solution, c’est...
Fig. 3.2 – Graphe représentant les temps d’exécution pour le Branch and Bound en DFS et en BFS
Sans oublier que les temps ...
Conclusion générale et perspectives
Dans ce Travail d’Etude et de Recherche, nous avons étudié le problème du Sac à Dos
Bi...
Certes durant notre travail, nous nous sommes focalisées que sur la résolution du pro-
blème par la méthode de Branch and ...
Bibliographie
[1] http://scholar.google.fr/scholar_url?url=http://www.iro.umontreal.
ca/~gendron/IFT6551/LECTURES/0-1Knaps...
Prochain SlideShare
Chargement dans…5
×

RapportComplet

98 vues

Publié le

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
98
Sur SlideShare
0
Issues des intégrations
0
Intégrations
9
Actions
Partages
0
Téléchargements
7
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

RapportComplet

  1. 1. TRAVAIL D’ETUDE ET DE RECHERCHE Présenté par : Sarah BOUNEJMATE & Pala-Beh YEBLI Résolution du sac à dos bidimensionnel avec contrainte de précédence Soutenu le : 12 Mai 2016 Sous l’encadrement de Mr : Jeremy Guillot Année universitaire : 2015/2016
  2. 2. Table des matières Remerciement 1 Introduction générale 1 1 Le problème du Knapsack bidimensionnel avec contrainte de précédence 2 1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 Formulation en programme linéaire . . . . . . . . . . . . . . . . . . . . . . . . 3 2 Résolution exacte du Knapsack bidimensionnel avec contrainte de précédence en utilisant la méthode du Branch and Bound 4 2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2 La méthode du Branch and Bound . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2.1 Contexte général . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.3 Branch and Bound appliqué aux PCBKS . . . . . . . . . . . . . . . . . . . . . 7 2.3.1 Algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.4 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3 Résultats des implémentations et comparaison du parcours de l’arbre de recherche en BFS et en DFS 14 3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.2 Résultats et comparaisons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1
  3. 3. Conclusion et perspectives 17 Bibliographie 20 2
  4. 4. Table des figures 1 Illustration du problème du sac à dos . . . . . . . . . . . . . . . . . . . . . . 1 2.1 Illustration de la méthode du Branch and Bound . . . . . . . . . . . . . . . . 5 2.2 Pseudo code pour le branch and bound appliqué au biknnapsack . . . . . . 8 2.3 Résolution du PCBKS à l’aide du branch and bound et le parcours en BFS par exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.4 Pseudo code pour le DFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.5 Pseudo code pour le BFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.1 Résultats et temps d’exécution . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.2 Graphe représentant les temps d’exécution pour le Branch and Bound en DFS et en BFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3
  5. 5. Remerciement Nous tenons à remercier en premier lieu nos familles et amis pour leur soutien, leur encouragement et leur patience durant ces mois de recherche et de dur labeur. Nous remercions aussi notre encadrant, le Professeur Jeremy GUILLOT, qui nous a ac- cordé de son temps et son soutien pour la parfaite compréhension de ce problème et la meilleure élaboration de ce rapport. Une pensée pour tous les professeurs qui nous ont donnés l’enseignement adéquat qui nous a permit d’aboutir à ce travail, spécialement le Professeur Boris DETIENNE.
  6. 6. Introduction Supposons que nous prévoyons une randonnée ; et nous sommes donc amenés à remplir un sac à dos avec des items qui sont considérés comme nécessaires pour le voyage. Il y a différents types d’éléments ; ceux-ci pourraient inclure une bouteille d’eau, pomme, orange, sandwich, etc. Chaque type d’élément a un ensemble donné de deux attributs, à savoir une capacité de poids (ou de volume, ou les deux, ou plusieurs caractéristiques même parfois) et une valeur qui quantifie le niveau d’importance associé à chaque unité de cet item.Étant donné que le sac a une capacité limitée, le problème d’intérêt consiste donc en savoir com- ment charger le sac avec une combinaison d’unités des types spécifiés des éléments de façon à ce que le niveau d’importante de ces derniers soit maximal. Ce que nous venons de décrire est appelé un problème de sac à dos (en anglais Knapsack ou Rucksack problem). Le problème tire son nom des travaux du mathématicien Tobias Danzig et se réfère aux probleme d’emballer les objets les plus précieux sans surcharger les bagages. Fig. 1 – Illustration du problème du sac à dos Dans ce TER, nous nous intéressons au problème du sac à dos contraint à deux capacités et dont les éléments ont une certaine priorité. 1
  7. 7. Chapitre 1 Le problème du Knapsack bidimensionnel avec contrainte de précédence 1.1 Introduction Le problème du sac à dos n’est pas récent, il s’agit d’un problème d’optimisation combi- natoire qui a été étudié pendant plus d’un siècle avec les premières œuvres datant d’aussi loin que 1897.Il est aussi l’un des 21 problèmes NP-complets de Richard Karp, exposés dans son article de 1972. La famille des problèmes de sac a dos qui nécessitent tous un ensemble d’éléments don- nés à choisir de telle sorte que la somme des bénéfices correspondants soit maximisé, sans dépasser la capacité. Cependant, plusieurs variantes de ce problème existent, et dans ce TER nous nous intéressons à la variante du sac à dos bidimensionnel avec contrainte de précé- dence, c.-à-d. que chaque élément est caractérisé par deux attributs (par exemple volume et poids), et par son ordre de précédence ( un élément n’est mis dans le sac que si tous ses prédécesseurs le sont aussi). Ce probleme est dit Precedence Constrainted Bi-Knapsack Problem (PCBKS). Comme on peut le voir dèjà la formulation du problème en un programme linéaire en variables mixtes est fort simple, mais sa résolution s’avère être plus complexe. Dans notre recherche, nous allons plutôt avoir une approche exacte en résolvant le problème de deux manières différentes en utilisant l’algorithme du Branch and Bound et en comparant par la suite l’efficacité de chacune. 2
  8. 8. 1.2 Formulation en programme linéaire Le 0/1 Knapsack problem est un problème qui consiste à choisir de mettre dans un sac un sous ensemble d’un ensemble de n éléments donnés de façon à maximiser le profit sans encombrer le knapsack. Ceci peut être exprimé par le problème d’optimisation suivant : Max Σn i=1xipi sc.    Σn i=1xiwi ≤ W Σn i=1xiti ≤ T xi ≤ xi si (i,j) ∈ AP xi ∈ 0,1 (1.1) Où : Les xi sont des variables binaires indiquant si l’élément doit être inclut dans le sac. Les pi représentent la valeur ou le profit de chaque élément. Les wi représentent le poids de chaque objet. Les ti représentent la consommation du temps de chaque objet. W représente la capacité maximale du sac. T représente le temps total. AP représente l’arbre de précédence. 3
  9. 9. Chapitre 2 Résolution exacte du Knapsack bidimensionnel avec contrainte de précédence en utilisant la méthode du Branch and Bound 2.1 Introduction Connu en français sous le nom d’algorithme de Séparation et évaluation, la technique du Branch and Bound est un algorithme classique pour résoudre certains problèmes d’op- timisation combinatoire. Il s’agit de rechercher une solution optimale dans un ensemble combinatoire de solutions possibles. Le premier algorithme de séparation et évaluation a été introduit par Kolesar pour ré- soudre le KP mais nécessitait un large temps de résolution. La méthode repose d’abord sur la séparation (la partie du branchement) de l’ensemble des solutions en sous-ensembles plus petits. L’exploration de ces solutions utilise ensuite une évaluation optimiste pour majorer (borner) les sous-ensembles, ce qui permet de ne plus considérer que ceux susceptibles d’avoir une solution potentiellement plus avantageuse que la solution courante. Du fait que cette méthode donne des résultats exactes, et dans le cadre de ce travail nous allons appliquer cette méthode pour le problème de sac à dos bidimensionnelle avec contraintes de précédence. 4
  10. 10. 2.2 La méthode du Branch and Bound 2.2.1 Contexte général Le Branch and Bound se présente comme un parcours d’un arbre de recherche dont chaque nœud représente une éventuelle solution. Ce parcours est caractérisé par deux par- ties importantes à savoir : La séparation et L’évaluation. Fig. 2.1 – Illustration de la méthode du Branch and Bound 2.2.1.1 La séparation Elle consiste à séparer un ensemble de solutions en sous-ensembles. Ainsi en résolvant tous les sous-problèmes et en gardant la meilleure solution, nous sommes surs de résoudre le problème initial. Pour décrire l’opération de séparation, il suffit de dire comment on divise un ensemble de solutions en sous-ensembles. Cela revient à décrire comment construire l’arbre permet- tant d’énumérer toutes les solutions. L’ensemble de nœuds de l’arbre qu’il reste encore à parcourir comme étant susceptibles de contenir une solution optimale, c’est-à-dire encore à diviser, est appelé ensemble des nœuds actifs (NA) ou non visités. 5
  11. 11. 2.2.1.2 L’évaluation Elle consiste à évaluer les solutions d’un sous-ensemble c’est à dire de trouver la meilleure solution pouvant être obtenue parmi les solutions réalisables au niveau d’un noeud. Du fait que l’arbre représente toutes les solutions, chaque feuille contient une solution dont on peut calculer la valeur exacte. Pour un nœud interne de l’arbre, k, on va évaluer ce nœud en calculant un majorant de la valeur de toutes les solutions contenues dans le sous- ensemble représenté par le sous arbre de racine k. Si l’arbre entier était connu, on pourrait évaluer un nœud par la meilleure solution por- tée par ses feuilles. Mais ce n’est bien sûr pas le cas ! Il faut donc essayer d’estimer par majoration la meilleure solution qu’il est possible d’atteindre à partir du nœud. Comme un nœud interne représente une solution partielle (dont une partie des variables du problème est partiellement fixée), on calcule sa valeur en cherchant la meilleure valeur qu’on peut obtenir grâce aux degrés de liberté restants. Cette fonction d’évaluation, spécifique à chaque problème, est dite « optimiste ou exacte », car elle calcule « un majorant » du meilleur résultat possible à partir d’une solution par- tielle. Une bonne fonction doit majorer au plus près la solution maximale, tout en restant la moins coûteuse possible d’un point de vue algorithmique. C’est un des aspects cruciaux quant aux performances de la résolution du problème. En plus de ces deux grandes étapes, s’ajoute l’évolution de l’algorithme suivant les cri- tères d’arrêt : 2.2.1.3 Elagage Il s’agit d’une stratégie qui se base sur le fait qu’une fois la borne au niveau d’un nœud interne est obtenue, l’on peut l’exploiter pour interdire éventuellement de continuer l’explo- ration de cette partie de l’arbre. En particulier, il est inutile de brancher sur un nœud dans les cas suivants : 1. L’ évaluation a permis de calculer une solution qui a exactement cette valeur. Cette solution est nécessairement optimale dans ce sous-ensemble de solutions. Si cette solution est la meilleure trouvée jusque-là, elle devient la meilleure solution courante. Ce cas est plutôt rare. 6
  12. 12. 2. L’ évaluation au niveau d’un noeud est inférieure ou égale à la valeur de la meilleure solution entière stockée. En développant ce noeud, on ne peut qu’avoir des solutions moins avantageuses. Ceci nous apporte beaucoup en temps de calcul, car on élimine une partie et donc on réduit l’arbre de recherche. 3. Le sous-ensemble est réduit à un seul élément. Dans les cas 1 et 2, on gagne dans l’exploration de l’arbre puisque la branche suivant le nœud considéré ne sera pas explorée. On dit que cette branche est élaguée (pruning en anglais). A noter que dans le cas 2, si la meilleure solution courante a changé, il convient de parcourir tous les nœuds actifs pour voir si ces noeuds fils seront avantageux. 2.2.1.4 L’approximation Le succès de la méthode dépend essentiellement de la précision de la fonction d’évalua- tion. On peut l’accélérer en se contentant d’une solution approchée avec garantie de qualité. On peut décider d’élaguer tout nœud dont l’évaluation est inférieure à (1+EPSILON) fois la valeur de la meilleure solution courante. Par exemple si EPSILON = 0, 05, alors quand on s’arrêtera la valeur de la solution trouvée sera à moins de 5 pour cent de l’optimum. Suivant les définitions antérieures, on pourra donc définir le Branch and Bound comme une méthode exacte qui crée et résout une séquence de sous-problèmes au problème initial et qui évolue de façon restrictive jusqu’à ce qu’une solution entière soit trouvée. 2.3 Branch and Bound appliqué aux PCBKS Comme dans tous les problèmes d’optimisation, on cherche un élément de valeur opti- male et non tous. Le problème à résoudre est donc le suivant : trouver dans un ensemble de solutions potentielles donné, un élément de valeur optimale. Pour fixer les idées nous supposerons dans ce qui suit que l’on cherche un élément de valeur maximum. 2.3.1 Algorithme L’algorithme propose de parcourir l’arborescence des solutions possibles en évaluant chaque sous-ensemble de solutions de façon optimale. Lors de ce parcours, il maintient la valeur M de la meilleure solution entière trouvée jusqu’à présent. Quand l’évaluation d’un sous-ensemble donne une valeur plus faible que M, il est inutile d’explorer plus loin ce sous-ensemble. 7
  13. 13. L’algorithme maintient donc la valeur M de la meilleure solution trouvée et la liste NA des nœuds actifs, susceptibles de contenir de meilleures solutions que M : Fig. 2.2 – Pseudo code pour le branch and bound appliqué au biknnapsack Pour le problème étudié, nous avons un ensemble d’objets. A l’étape initiale, on choisit un nœud racine pour lequel on ne prend aucune décision sur les variables et on résout sa relaxation puis on le rajoute à la liste des nœuds non traités. Si le résultat ne donne aucune valeur fractionnaire, alors on s’arrête car celle ci est forcément la solution optimale. Dans le cas où il a une variable fractionnaire, on branche dessus (souvent sur celle la plus fractionnaire, c-a-d la plus proche de 0.5), on crée donc deux fils de ce nœud pour lesquels on prendra une décision sur la variable fractionnaire (0/1) et on recalcule la relaxation pour ces nouveaux nœuds et on les rajoute à la liste. Tant que la liste n’est pas vide on réitère cette opération, et une fois qu’on n’aura plus de nœuds à traiter, on retourne la meilleure valeur de solution entière qu’on a obtenu jusque-là. Ceci est décrit par l’algorithme suivant qui résume notre approche pour résoudre le problème : 8
  14. 14. Fig. 2.3 – Résolution du PCBKS à l’aide du branch and bound et le parcours en BFS par exemple En fonction de la structure de données utilisée pour la liste des nœuds actifs NA, l’al- gorithme peut avoir des performances expérimentales très différentes. La façon dont on parcourt l’arbre des solutions et le choix du prochain nœud actif à diviser sont cruciaux. Plusieurs stratégies sont à envisager : 9
  15. 15. 2.3.1.1 Parcours en profondeur DFS L’idée de la Recherche en Profindeur d’abord est de rendre cette recherche plus efficace en gardant la trace de la solution la moins coûteuse trouvée jusqu’à présent. Comme le coût d’un ajout partiel est la somme des coûts des bords parcouru jusqu’à pré- sent, chaque fois qu’on en trouve un dont le coût est égal ou supérieur au coût du meilleur tour complet trouvé à ce jour, la branche représentant cet ajout peut être élagué, puisque tous ses descendants doivent avoir un coût égal ou inférieur. Chaque fois qu’on respecte les contraintes appliquées, le meilleur coût est mis à jour à ce faible coût. En outre, une fonction heuristique admissible comme le coût de l’arbre de re- couvrement minimal des objets déjà ajoutés au sac, peut être ajouté au coût jusqu’à présent d’une visite partielle pour augmenter la quantité de nœuds élagués. Enfin, en ordonnant soigneusement les enfants d’un nœud donné du plus petit au plus grand coût total estimé, une solution à moindre coût peut être trouvé plus rapidement, améliorant encore plus l’ef- ficacité de l’élagage. En somme ce qui concerne cette règle, elle consiste donc à sélectionner le nœud, le plus récemment créé associé au nœud sur lequel on choisit de brancher. À l’étape de la Sépara- tion, la variable de base avec le plus grand composant fractionnel est généralement choisie pour le partitionnement. 10
  16. 16. Fig. 2.4 – Pseudo code pour le DFS 2.3.1.2 Parcours en largeur BFS Le parcours en Largeur d’abord énumère les nœuds suivant l’ordre de création. Il permet de visiter tous les futurs nœuds crées en gardant la trace de la meilleure solution trouvée jusqu’à présent, ceci étant il visite tout l’arbre de recherche. Chaque fois qu’un tour complet à faible coût est trouvé, le coût avantageux suivant les contraintes est mis à jour à ce faible coût. Toute chose dite, l’on peut retenir de ce parcours, qu’une telle stratégie consiste traiter les noeuds suivant leur ordre d’ajout dans la liste des noeuds non traités. L’objectif étant de trouver une bonne solution réalisable en explorant toutes les possibilités. 11
  17. 17. Fig. 2.5 – Pseudo code pour le BFS 12
  18. 18. 2.4 Conclusion Dans ce chapitre, nous avons présenté un tour d’horizon de quelques stratégies de par- cours d’un arbre de recherche comme dans le cas de notre problème. L’efficacité de la méthode par séparation et évaluation dépend essentiellement de la stra- tégie de développement qui peut être en la stratégie de parcours utilisée, soit en largeur ou en profondeur dans notre cas. De plus, la méthode du branchement employée et la nature de la fonction d’évaluation utilisée influencent fortement cette méthode. Les stratégies de parcours de l’arbre de recherche sont nombreuses et diverses. Dans le cadre de notre travail, l’on sait focaliser sur deux stratégies à savoir une de branchement qui est nécessaire à l’étape du Branchement (FIFO) et une stratégie de sélection de variables nécessaire à l’étape de Séparation (LIFO). Les résultats et observations effectuées suivant la mise en œuvre de chacune de ces méthodes de recherche sont plutôt exacts dans la résolution d’un programme linéaire en nombres entiers. Ils feront l’objet du chapitre suivant. 13
  19. 19. Chapitre 3 Résultats des implémentations et comparaison du parcours de l’arbre de recherche en BFS et en DFS 3.1 Introduction Dans ce chapitre nous allons présenter les résultats obtenue pour l’implémentation du branch and bound pour le PCBKS en utilisant une stratégie de parcours de l’arbre des so- lution BFS et DFS et nous allons ensuite comparer les résultats et essayer d’en tirer des conclusions. 3.2 Résultats et comparaisons Ayant implémenté notre algorithme pour la résolution de ce programme linéaire en nombre entiers pour les instances dans la page à suivre on compare les résultats. Max Σn i=1x[i]p[i] sc.    ΣNbItems i=1 x[i]Capacity[i] ≤ W Σn i=1x[i]CapacityT ime[i] ≤ T x[j] ≤ x[i] si (i,j) ∈ AP x[i] ∈ 0,1 (3.1) 14
  20. 20. 15
  21. 21. Fig. 3.1 – Résultats et temps d’exécution On peut constater déjà que les deux méthodes retournent la bonne solution, c’est évident comme on a résolu le problème en question avec le Branch and Bound qui est une méthode de résolution exacte. Essayons de voir maintenant les courbes des temps d’exécution pour chacune des mé- thodes 16
  22. 22. Fig. 3.2 – Graphe représentant les temps d’exécution pour le Branch and Bound en DFS et en BFS Sans oublier que les temps d’exécution dépendent beaucoup de la nature des instances.On peut voir qu’il n’y a pas de méthode qui marche mieux que l’autre en terme de temps d’exé- cution ou qui soit plus avantageuse que l’autre quand la taille de l’instance augmente. 17
  23. 23. Conclusion générale et perspectives Dans ce Travail d’Etude et de Recherche, nous avons étudié le problème du Sac à Dos Bidimensionnel avec contraintes de précédence. Dans la première partie de ce rapport, nous nous sommes attelées à expliciter le pro- blème sous forme d’un programme linéaire en nombre entiers classique. Un peu plus com- plexe que le problème de sac à dos normal du fait qu’on a deux contraintes de capacité et une contrainte de précédence. Dans le second chapitre, la méthode de résolution choisie fut explicitée. D’abord, d’un point de vue global, puis d’un point de vue plus concret adapté à notre problème. De façon standard, nous avions développé deux stratégies de parcours le Bfs et le Dfs. Toutefois on distingue bien d’autres stratégies aussi efficaces les unes que les autres à savoir : • Stratégie du plus prioritaire : La priorité d’un nœud peut être évaluée par pondération entre son évaluation et sa profondeur dans l’arbre (sa distance par rapport à une feuille). En effet, les évaluations loin des feuilles sont souvent plus intéressantes mais moins fiables et il peut être avantageux de diviser un nœud potentiellement moins bon mais plus profond dans l’arbre. • Stratégie mixte : On va en profondeur tant qu’on le peut, mais quand on ne peut plus on saute au nœud de meilleure évaluation. On explorera les fils dans l’ordre d’évaluation : le meilleur d’abord. Le troisième chapitre décrivait les résultats et observations faites après qu’on ait eu à résoudre le problème suivant les stratégies de parcours mentionnées dans le deuxième cha- pitre. 18
  24. 24. Certes durant notre travail, nous nous sommes focalisées que sur la résolution du pro- blème par la méthode de Branch and Bound. Toutefois il existe bien d’autres méthodes de résolution dont quelques-unes à savoir : • La programmation dynamique (méthode exacte) • Algorithme du Lagrangien et Algorithme du Surrogate dual (méthodes approchée ou heuristique). Ainsi donc parmi les perceptives que nous envisageons très probablement, nous pensions implémenter ces méthodes sus-citées dont nous n’avions pas eu l’occasion de présenter dans ce rapport faute de temps afin de comparer les résultats avec ceux des méthodes déjà implé- mentées. 19
  25. 25. Bibliographie [1] http://scholar.google.fr/scholar_url?url=http://www.iro.umontreal. ca/~gendron/IFT6551/LECTURES/0-1Knapsack.pdf&hl=fr&sa=X&scisig= AAGBfm149osatpE7cxuY4Dr53wkMQ69luA&nossl=1&oi=scholarr&ved= 0ahUKEwi7wsb878HMAhVJVhoKHStLDK0QgAMIGygAMAA= [2] http://scholar.google.fr/scholar_url?url=http://www.iro.umontreal. ca/~gendron/IFT6551/Articles/MartelloPisinger1999.pdf&hl=fr&sa=X& scisig=AAGBfm16wrurOZNqkKTfPAqoN3W8f4qvVg&nossl=1&oi=scholarr&ved= 0ahUKEwi7wsb878HMAhVJVhoKHStLDK0QgAMIHCgBMAA [3] http://scholar.google.fr/scholar_url?url=http://shyam.nitk.ac.in/Books/ Optimization/Surveys_in_Combinatorial_Optimization.pdfssl=1&oi=scholarr& ved=0ahUKEwi7wsb878HMAhVJVhoKHStLDK0QgAMIHSgCMAA [4] http://www3.cs.stonybrook.edu/~algorith/video-lectures/ [5] http://sebastien-viardot.imag.fr/Enseignements/DocumentsAlgoWiki/bb.pdf 20

×