Vous êtes sur la page 1sur 22

DÉFINITION

Le problème du sac à dos modélise une situation


analogue au remplissage d’un sac à dos, ne
pouvant supporter plus d’un certain poids, avec
tout ou une partie d’un ensemble donné d’objets ayant
chacun un poids et une valeur. Les objets dans le sac
doivent maximiser la valeur totale, sans dépasser le
poids maximum.

2
CHAMP D’APPLICATION
• La logistique comme le chargement d’avions, de
bateaux ou de camions
• La gestion de portefeuille
• La découpe de matériaux
• La préparation de valise pour une randonnée ou un
voyage

3
PRÉSENTATION DU PROBLÈME
❖On dispose de n objets de poids positifs p1, p2, . . . ,
pn et de valeurs positives v1, v2, . . . , vn,
respectivement.
❖On a un sac à dos de capacité maximale en poids
de W.

PROBLÈME: Remplir le sac à dos de sorte


à maximiser la valeur des objets inclus tout en
respectant la contrainte de poids
4
5
ALGORITHME DE GLOUTON
EXEMPLE D’APPLICATION
Pour quatre (4) objets (n = 4) et un sac à dos d’un
poids maximal de 30 kg (W = 30), nous avons les
données suivantes :
Objets O1 O2 O3 O4

Vi 7 4 3 3

Pi 13 12 8 10

7
ÈRE
1 ÉTAPE
Calculer l’efficacité I de chaque objet telle que : Ii = Vi/ Pi
Efficacité: Plus la valeur de l'objet est importante par
rapport à ce qu'il consomme, plus l'objet est efficace.
Objets O1 O2 O3 O4

Ii 0,54 0,33 0,37 0,30

8
ÈME
2 ÉTAPE
Trier les objets par ordre décroissant de son efficacité
Objets O1 O3 O2 O4
Vi 7 3 4 3

Pi 13 8 12 10

Ii 0,54 0,37 0,33 0,30

9
ÈME
3 ÉTAPE
Sélectionner les objets un à un dans l’ordre du tri et
ajouter l’objet sélectionné dans le sac tel que: ∑ Pi
≤W
• Objet 1: Dans le sac, 13 < 30 => OK
• Objet 3: Dans le sac, 13+8 = 21 < 30 => OK • Objet 2:
Dans le sac, 21+12 = 33 > 30 => On ne prend pas
l’objet 2
• Objet 4: Dans le sac, 21+10 = 31 > 30 => On ne prend
pas l’objet 4
=> Objets mis dans le sac: objets 1 et 3 avec une
valeur de 10.
10

EXEMPLE D’APPLICATION
Pour cinq (5) objets (n = 5) et un sac à dos d’un
poids maximal de 15 kg (W = 15), nous avons les
données suivantes :
Objet O1 O2 O3 O4 O5

s Vi 4 3 2 3 5

Pi 5 4 5 3 4

12

ARBRE DE RECHERCHE
⮚Enumérer intelligemment toutes les solution
possibles
⮚Usage d’un arbre de recherche
❖ Un nœuds/sommets : Etapes de construction de
la solution.
❖ Arcs : Indiquent les choix pour construire la
solution.
❖Attribuer à chaque arc une valeur Xi tel que si Xi= 1,
on prend l’objet dans le sac, et Xi= 0, on ne met pas
l’objet dans le sac.13
Obj O1 O2 O3 O Pi 5 4 5 3X1,2,3,5 X1,2,3
ets
17 18 14
4 3 2 3
Vi X1,2,3,4 12
X4=1

X1,2,3,4 149
X4=1
X1,2,3
X3=1 X3=0 X1,2,3 X4=0 10
16
X1,2 X1,2,4,5 X1,2,4
12
12

X2=1
X1,2,5
13
X1,2,4 15
X1=1

Le sac est vide

X1=0

X10

X2= 0
X2=1 X2= 0

X1 X2 0

X3=1 X3=0

X3=1 X3=0

X3=1

X1,2 X1,3 X1

X2,3
X2

X3
X4=0

X4=1

X4=0

X4=1

X4=0

X4=1

X4=0

X4=1

X4=0

X4=1

X4=0
X1,2

X1,3,4 X1,3

X1,4

X1
X2,3,4 X2,3

X2,4 X2

X3,4
X1,2
X1,3,4,5 X1,3,4 X1,3,5 X1,3
X1,4,5 X1,4
X1,5
X1
X2,3,4,5 X2,3,4 X2,3,5 X2,3
X2,4,5 X2,4
X2,5
X2

X3,4,5
9
17
14
14
10
12
8
9
5
16
12
13
9
11
7
8
4

12
7
14
9
11
6
12
7
9
4
13
8
10
5
11
6
8
3

10
Solution optimale: O1+O2+O5 ΣP1,P2,P3= 13 ΣV1,V2,V5= 12
X3 X4 X3,5 X3 3 14
X3=0 X4,5 X4
5

0 8 7
X4=1 95 2
X3,4 83
7

CONSTRUCTION D’UN
TABLEAU
⮚Nombre de lignes (noté i) = Nombre d’objets
⮚Nombre de colonnes (noté p) = Le poids que peut
supporter le sac à dos allant de 0 à W
⮚Chaque case est notée B(i;p)
p
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
i

1
2
3
4
5 16

REMPLISSAGE DU TABLEAU
⮚Pour la première ligne (i = 1)
Pour p < P1, B (1;p) = 0
Pour p ≥ P1, B (1;p) = V1
⮚Pour les autres lignes (i > 1)
Pour p < Pi, B (i;p) = B (i – 1;p)
Pour p ≥ Pi, B (i;p) = Max [B (i – 1;p) ; B (i – 1;p – Pi) + Vi]

17

p
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
i

1 0 0 0 0 0 4 4 4 4 4 4 4 4 4 4 4
2 0 0 0 0 3 4 4 4 4 7 7 7 7 7 7 7
3 0 0 0 0 3 4 4 4 4 7 7 7 7 7 9 9
4 0 0 0 3 3 4 4 6 7 7 7 7 1 1 1 1
0 0 0 0
5 0 0 0 3 5 5 5 8 8 9 9 11 1 1 1 12
2 2 2
18

OBTENTION DE LA SOLUTION OPTIMALE


• Parcourir la dernière ligne du tableau en partant de la fin
jusqu’à ce que la valeur soit inférieure ou égale à W
L’indice de la colonne est notée S*
• En partant de la dernière case de la colonne S*, remonter
jusqu’à ce que la valeur change
>Si valeur à la ligne i = valeur à la ligne i-1
l’objet i ne fait pas partie de la solution
optimale > Si valeur à la ligne i ≠ valeur à la
ligne i-1
l’objet i fait partie de la solution optimale et on note l’indice de
la ligne 19
• Notons r le premier objet trouvé.
• On recommence alors la méthode ci-dessus depuis
la case B(r – 1;S* - Vr)
On trouve alors le deuxième objet puis on
recommence jusqu’à ce que l’on arrive à la première
ligne
20

B(1;7) S* B(4;10) S*
W = 15
3 0 0 0 0 3 4 4 4 4
1 0 1 2 3 4 5 6 7 4 0 0 0 3 3 4 4 6 7
0 0 0 0 0 4 4 4
5 0 0 0 3 5 5 5 8 8
2 0 0 0 0 3 4 4 4
4≠7
10≠12 12<15
7≠4

7=7

7=7
On prend 1
On prend 5
Solution On prend pas 4
optimale: ∑ V1,
V2, V5 = 12 ∑ P1, 21
On prend pas 3
P2, P3 = 13 < 15
On prend 2

Avantages Limites
Algorithme Glouton Rapidité du temps Solution pas
de calcul car ne nécessairement
remet optimale
jamais en cause la
décision prise
auparavant
Procédure par - Temps de calcul La taille de l’arbre
séparation et raisonnable de recherche est
évaluation - Solution fiable exponentielle en le
nombre d’objets
- Élimine à l’avance
les solutions
impossibles
Programmation Méthode exacte 🡪 La capacité du sac ne
dynamique solution optimale doit pas être trop
grande sinon le travail
sera long et fastidieux

22

Vous aimerez peut-être aussi