SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
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
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
Conclusion et perspectives 17
Bibliographie 20
2
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
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.
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
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
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
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
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
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
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
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
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
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
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
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 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
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
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 é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
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
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
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
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

Mais conteúdo relacionado

Mais procurados

Algorithme génétique
Algorithme génétiqueAlgorithme génétique
Algorithme génétiqueIlhem Daoudi
 
L’optimisation par essaims de particules
L’optimisation par essaims de particulesL’optimisation par essaims de particules
L’optimisation par essaims de particuleschagra bassem
 
Vincent T'KINDT - Aide à la décision multicritère
Vincent T'KINDT - Aide à la décision multicritèreVincent T'KINDT - Aide à la décision multicritère
Vincent T'KINDT - Aide à la décision multicritèreGroupe ARTICQUE
 
Présentation PFE: Système de gestion des réclamations et interventions clients
Présentation PFE: Système de gestion des réclamations et interventions clientsPrésentation PFE: Système de gestion des réclamations et interventions clients
Présentation PFE: Système de gestion des réclamations et interventions clientsMohamed Ayoub OUERTATANI
 
Solving Traveling Salesman problem using genetic algorithms, implementation i...
Solving Traveling Salesman problem using genetic algorithms, implementation i...Solving Traveling Salesman problem using genetic algorithms, implementation i...
Solving Traveling Salesman problem using genetic algorithms, implementation i...MEJDAOUI Soufiane
 
Le problème de voyageur de commerce: algorithme génétique
Le problème de voyageur de commerce: algorithme génétiqueLe problème de voyageur de commerce: algorithme génétique
Le problème de voyageur de commerce: algorithme génétiqueRima Lassoued
 
Chapitre 3 la recherche tabou
Chapitre 3 la recherche tabouChapitre 3 la recherche tabou
Chapitre 3 la recherche tabouAchraf Manaa
 
Présentation PPT CARSELFCARE
 Présentation PPT  CARSELFCARE Présentation PPT  CARSELFCARE
Présentation PPT CARSELFCAREBILEL TLILI
 
Outils et techniques des gestion des risques
Outils et techniques des gestion des risquesOutils et techniques des gestion des risques
Outils et techniques des gestion des risquesGBO
 
6sigma ibtissam el hassani-chapitre 4
6sigma ibtissam el hassani-chapitre 46sigma ibtissam el hassani-chapitre 4
6sigma ibtissam el hassani-chapitre 4ibtissam el hassani
 
Le processus-de-management-du-projet
Le processus-de-management-du-projetLe processus-de-management-du-projet
Le processus-de-management-du-projetyouness jabbar
 
8 Outils Qualité pour toutes les fonctions de l'entreprise
8 Outils Qualité pour toutes les fonctions de l'entreprise8 Outils Qualité pour toutes les fonctions de l'entreprise
8 Outils Qualité pour toutes les fonctions de l'entrepriseTOOL_Z
 
Présentation stage ing_finale
Présentation stage ing_finalePrésentation stage ing_finale
Présentation stage ing_finaleAhmed Abdeljelil
 

Mais procurados (20)

Loi Normale
Loi NormaleLoi Normale
Loi Normale
 
Algorithme génétique
Algorithme génétiqueAlgorithme génétique
Algorithme génétique
 
L’optimisation par essaims de particules
L’optimisation par essaims de particulesL’optimisation par essaims de particules
L’optimisation par essaims de particules
 
Vincent T'KINDT - Aide à la décision multicritère
Vincent T'KINDT - Aide à la décision multicritèreVincent T'KINDT - Aide à la décision multicritère
Vincent T'KINDT - Aide à la décision multicritère
 
Présentation PFE: Système de gestion des réclamations et interventions clients
Présentation PFE: Système de gestion des réclamations et interventions clientsPrésentation PFE: Système de gestion des réclamations et interventions clients
Présentation PFE: Système de gestion des réclamations et interventions clients
 
Solving Traveling Salesman problem using genetic algorithms, implementation i...
Solving Traveling Salesman problem using genetic algorithms, implementation i...Solving Traveling Salesman problem using genetic algorithms, implementation i...
Solving Traveling Salesman problem using genetic algorithms, implementation i...
 
Formation AMDEC
Formation AMDECFormation AMDEC
Formation AMDEC
 
Demarche qualite
Demarche qualiteDemarche qualite
Demarche qualite
 
Le problème de voyageur de commerce: algorithme génétique
Le problème de voyageur de commerce: algorithme génétiqueLe problème de voyageur de commerce: algorithme génétique
Le problème de voyageur de commerce: algorithme génétique
 
Les outils du management de la qualite
Les outils du management de la qualiteLes outils du management de la qualite
Les outils du management de la qualite
 
Chapitre 3 la recherche tabou
Chapitre 3 la recherche tabouChapitre 3 la recherche tabou
Chapitre 3 la recherche tabou
 
Présentation PPT CARSELFCARE
 Présentation PPT  CARSELFCARE Présentation PPT  CARSELFCARE
Présentation PPT CARSELFCARE
 
Modèle en cascade
Modèle en cascadeModèle en cascade
Modèle en cascade
 
Outils et techniques des gestion des risques
Outils et techniques des gestion des risquesOutils et techniques des gestion des risques
Outils et techniques des gestion des risques
 
Programmation sous Android
Programmation sous AndroidProgrammation sous Android
Programmation sous Android
 
6sigma ibtissam el hassani-chapitre 4
6sigma ibtissam el hassani-chapitre 46sigma ibtissam el hassani-chapitre 4
6sigma ibtissam el hassani-chapitre 4
 
Le processus-de-management-du-projet
Le processus-de-management-du-projetLe processus-de-management-du-projet
Le processus-de-management-du-projet
 
8 Outils Qualité pour toutes les fonctions de l'entreprise
8 Outils Qualité pour toutes les fonctions de l'entreprise8 Outils Qualité pour toutes les fonctions de l'entreprise
8 Outils Qualité pour toutes les fonctions de l'entreprise
 
Gimsi
GimsiGimsi
Gimsi
 
Présentation stage ing_finale
Présentation stage ing_finalePrésentation stage ing_finale
Présentation stage ing_finale
 

Destaque

Analyse de données rapport final
Analyse de données rapport finalAnalyse de données rapport final
Analyse de données rapport finalSarah Bounejmate
 
Sommaire Mini Projet Implémentation de l’algorithme du Simplexe En Java
Sommaire Mini Projet Implémentation de l’algorithme du Simplexe En JavaSommaire Mini Projet Implémentation de l’algorithme du Simplexe En Java
Sommaire Mini Projet Implémentation de l’algorithme du Simplexe En JavaRached Krim
 
Cours9 programmation linéaire
Cours9 programmation linéaireCours9 programmation linéaire
Cours9 programmation linéaireAroussia Othmen
 
Recherche Opérationnelle - Optimisation (notions de base)
Recherche Opérationnelle - Optimisation (notions de base)Recherche Opérationnelle - Optimisation (notions de base)
Recherche Opérationnelle - Optimisation (notions de base)Mohammed TAMALI
 
Numerical analysis dual, primal, revised simplex
Numerical analysis  dual, primal, revised simplexNumerical analysis  dual, primal, revised simplex
Numerical analysis dual, primal, revised simplexSHAMJITH KM
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLwebreaker
 
Atelier Mobile pour les professionnels du tourisme
Atelier Mobile pour les professionnels du tourismeAtelier Mobile pour les professionnels du tourisme
Atelier Mobile pour les professionnels du tourismeAymeric
 
Wordpress Ecommerce - Core-Techs
Wordpress Ecommerce - Core-TechsWordpress Ecommerce - Core-Techs
Wordpress Ecommerce - Core-TechsCore-Techs
 
Observatoire des réseaux sociaux 2012 - IFOP
Observatoire des réseaux sociaux 2012 - IFOPObservatoire des réseaux sociaux 2012 - IFOP
Observatoire des réseaux sociaux 2012 - IFOPazizhaddad
 
L'ubérisation racontée par Don Draper
L'ubérisation racontée par Don DraperL'ubérisation racontée par Don Draper
L'ubérisation racontée par Don DraperBuynme
 
Plan communication Europe
Plan communication EuropePlan communication Europe
Plan communication Europeeuropablues
 
Dossier entreprendre-revue management 1215
Dossier entreprendre-revue management 1215Dossier entreprendre-revue management 1215
Dossier entreprendre-revue management 1215Pascale MANTEAUX
 
Enquête changement de nom des bs francaises
Enquête changement de nom des bs francaisesEnquête changement de nom des bs francaises
Enquête changement de nom des bs francaisesSarahPhilippe
 

Destaque (20)

RapportComplet
RapportCompletRapportComplet
RapportComplet
 
Analyse de données rapport final
Analyse de données rapport finalAnalyse de données rapport final
Analyse de données rapport final
 
Certificates
CertificatesCertificates
Certificates
 
Sommaire Mini Projet Implémentation de l’algorithme du Simplexe En Java
Sommaire Mini Projet Implémentation de l’algorithme du Simplexe En JavaSommaire Mini Projet Implémentation de l’algorithme du Simplexe En Java
Sommaire Mini Projet Implémentation de l’algorithme du Simplexe En Java
 
Cours9 programmation linéaire
Cours9 programmation linéaireCours9 programmation linéaire
Cours9 programmation linéaire
 
Programmation linéaire
Programmation linéaireProgrammation linéaire
Programmation linéaire
 
Recherche Opérationnelle - Optimisation (notions de base)
Recherche Opérationnelle - Optimisation (notions de base)Recherche Opérationnelle - Optimisation (notions de base)
Recherche Opérationnelle - Optimisation (notions de base)
 
Numerical analysis dual, primal, revised simplex
Numerical analysis  dual, primal, revised simplexNumerical analysis  dual, primal, revised simplex
Numerical analysis dual, primal, revised simplex
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQL
 
Atelier Mobile pour les professionnels du tourisme
Atelier Mobile pour les professionnels du tourismeAtelier Mobile pour les professionnels du tourisme
Atelier Mobile pour les professionnels du tourisme
 
issue2
issue2issue2
issue2
 
Referendum
ReferendumReferendum
Referendum
 
Trois Amis
Trois AmisTrois Amis
Trois Amis
 
Wordpress Ecommerce - Core-Techs
Wordpress Ecommerce - Core-TechsWordpress Ecommerce - Core-Techs
Wordpress Ecommerce - Core-Techs
 
Observatoire des réseaux sociaux 2012 - IFOP
Observatoire des réseaux sociaux 2012 - IFOPObservatoire des réseaux sociaux 2012 - IFOP
Observatoire des réseaux sociaux 2012 - IFOP
 
VERTEX
VERTEXVERTEX
VERTEX
 
L'ubérisation racontée par Don Draper
L'ubérisation racontée par Don DraperL'ubérisation racontée par Don Draper
L'ubérisation racontée par Don Draper
 
Plan communication Europe
Plan communication EuropePlan communication Europe
Plan communication Europe
 
Dossier entreprendre-revue management 1215
Dossier entreprendre-revue management 1215Dossier entreprendre-revue management 1215
Dossier entreprendre-revue management 1215
 
Enquête changement de nom des bs francaises
Enquête changement de nom des bs francaisesEnquête changement de nom des bs francaises
Enquête changement de nom des bs francaises
 

Semelhante a RapportComplet

recherche operationnelle
recherche operationnelle recherche operationnelle
recherche operationnelle mohamednacim
 
Decomposition des spectres dans des images astronomiques hyperspectrales avec...
Decomposition des spectres dans des images astronomiques hyperspectrales avec...Decomposition des spectres dans des images astronomiques hyperspectrales avec...
Decomposition des spectres dans des images astronomiques hyperspectrales avec...Kais Baccour
 
Cours arithmetique
Cours arithmetiqueCours arithmetique
Cours arithmetiquebades12
 
Box Methode M2 R
Box Methode M2 RBox Methode M2 R
Box Methode M2 Rguestb16e95
 
Dynamic Analysis of an Elbow Bracket in COMSOL Multiphysics
Dynamic Analysis of an Elbow Bracket in COMSOL MultiphysicsDynamic Analysis of an Elbow Bracket in COMSOL Multiphysics
Dynamic Analysis of an Elbow Bracket in COMSOL MultiphysicsAlexanderABANOBI
 
Theorie des poutres_resistance_des_mater (1)
Theorie des poutres_resistance_des_mater (1)Theorie des poutres_resistance_des_mater (1)
Theorie des poutres_resistance_des_mater (1)YoussefTrimech
 
Rapport Mini-Projet Recherche Opérationnelle
Rapport Mini-Projet Recherche OpérationnelleRapport Mini-Projet Recherche Opérationnelle
Rapport Mini-Projet Recherche OpérationnelleCibamboSteven
 
formation_latex
formation_latexformation_latex
formation_latexBui Loi
 
Extraction de sous-trajectoires d’abeilles.pdf
Extraction de sous-trajectoires d’abeilles.pdfExtraction de sous-trajectoires d’abeilles.pdf
Extraction de sous-trajectoires d’abeilles.pdfHanaTiti
 
Thèse Quantification sur cône de lumière
Thèse Quantification sur cône de lumièreThèse Quantification sur cône de lumière
Thèse Quantification sur cône de lumièreStéphane Salmons
 
Cours ensembles
Cours ensemblesCours ensembles
Cours ensemblesbades12
 
Visualisation graphique R avec ggplot2
Visualisation graphique R avec ggplot2Visualisation graphique R avec ggplot2
Visualisation graphique R avec ggplot2Daname KOLANI
 
Apprentissage par renforcement
Apprentissage par renforcementApprentissage par renforcement
Apprentissage par renforcementStany Mwamba
 
Polycopie excel.pdf
Polycopie excel.pdfPolycopie excel.pdf
Polycopie excel.pdfSafiatouSore
 

Semelhante a RapportComplet (20)

recherche operationnelle
recherche operationnelle recherche operationnelle
recherche operationnelle
 
Decomposition des spectres dans des images astronomiques hyperspectrales avec...
Decomposition des spectres dans des images astronomiques hyperspectrales avec...Decomposition des spectres dans des images astronomiques hyperspectrales avec...
Decomposition des spectres dans des images astronomiques hyperspectrales avec...
 
Cours arithmetique
Cours arithmetiqueCours arithmetique
Cours arithmetique
 
Box Methode M2 R
Box Methode M2 RBox Methode M2 R
Box Methode M2 R
 
Dynamic Analysis of an Elbow Bracket in COMSOL Multiphysics
Dynamic Analysis of an Elbow Bracket in COMSOL MultiphysicsDynamic Analysis of an Elbow Bracket in COMSOL Multiphysics
Dynamic Analysis of an Elbow Bracket in COMSOL Multiphysics
 
Theorie des poutres_resistance_des_mater (1)
Theorie des poutres_resistance_des_mater (1)Theorie des poutres_resistance_des_mater (1)
Theorie des poutres_resistance_des_mater (1)
 
Recherches opérationnelles
Recherches opérationnellesRecherches opérationnelles
Recherches opérationnelles
 
Rapport Mini-Projet Recherche Opérationnelle
Rapport Mini-Projet Recherche OpérationnelleRapport Mini-Projet Recherche Opérationnelle
Rapport Mini-Projet Recherche Opérationnelle
 
Graphes
GraphesGraphes
Graphes
 
formation_latex
formation_latexformation_latex
formation_latex
 
Extraction de sous-trajectoires d’abeilles.pdf
Extraction de sous-trajectoires d’abeilles.pdfExtraction de sous-trajectoires d’abeilles.pdf
Extraction de sous-trajectoires d’abeilles.pdf
 
Thèse Quantification sur cône de lumière
Thèse Quantification sur cône de lumièreThèse Quantification sur cône de lumière
Thèse Quantification sur cône de lumière
 
Cours ensembles
Cours ensemblesCours ensembles
Cours ensembles
 
Cours td
Cours tdCours td
Cours td
 
Tutorial GGPlot2
Tutorial GGPlot2Tutorial GGPlot2
Tutorial GGPlot2
 
Visualisation graphique R avec ggplot2
Visualisation graphique R avec ggplot2Visualisation graphique R avec ggplot2
Visualisation graphique R avec ggplot2
 
graphe.pdf
graphe.pdfgraphe.pdf
graphe.pdf
 
Apprentissage par renforcement
Apprentissage par renforcementApprentissage par renforcement
Apprentissage par renforcement
 
Polycopie excel.pdf
Polycopie excel.pdfPolycopie excel.pdf
Polycopie excel.pdf
 
Algo
AlgoAlgo
Algo
 

RapportComplet

  • 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. 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. Conclusion et perspectives 17 Bibliographie 20 2
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Fig. 2.5 – Pseudo code pour le BFS 12
  • 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. 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. 15
  • 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. 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. 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. 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. 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