Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Le problème du sac à dos
ProblématiqueRésolutions théoriquesTests sur les partiesPrin ipe ré ursifRésolutions appro héesNé essité d'une résolution appro héePrin ipes généraux de la résolution appro héeTri par heuristiqueHeuristique F : (w , p) 7→p
wRe her he opérationnelle par programmation linéaireRésolution graphiqueMéthode du simplexeImplémentation Python de l'algorithme du simplexeCon lusionProblème du sa à dos par re her he opérationnellePortées du problème du sa à dos
Mise en pla e
Mise en pla eProblématique du sa à dos
Mise en pla eProblématique du sa à dos◮ n objets de valeurs positives w1, · · · ,wn
Mise en pla eProblématique du sa à dos◮ n objets de valeurs positives w1, · · · ,wn et de poidspositifs p1, · · · , pn
Mise en pla eProblématique du sa à dos◮ n objets de valeurs positives w1, · · · ,wn et de poidspositifs p1, · · · , pn◮ faire rentrer dans un sa des objets dont la somme despoids ne dépasse pas un seuil P [ ontrainte℄ et la sommedes valeurs est maximale
Mise en pla eProblématique du sa à dos◮ n objets de valeurs positives w1, · · · ,wn et de poidspositifs p1, · · · , pn◮ faire rentrer dans un sa des objets dont la somme despoids ne dépasse pas un seuil P [ ontrainte℄ et la sommedes valeurs est maximaleModélisation
Mise en pla eProblématique du sa à dos◮ n objets de valeurs positives w1, · · · ,wn et de poidspositifs p1, · · · , pn◮ faire rentrer dans un sa des objets dont la somme despoids ne dépasse pas un seuil P [ ontrainte℄ et la sommedes valeurs est maximaleModélisation◮ al uler max{∑
k∈A
wk | A ⊂ J1, nK et ∑
k∈A
pk 6 P
}.
ProblématiqueRésolutions théoriquesTests sur les partiesPrin ipe ré ursifRésolutions appro héesNé essité d'une résolution appro héePrin ipes généraux de la résolution appro héeTri par heuristiqueHeuristique F : (w , p) 7→p
wRe her he opérationnelle par programmation linéaireRésolution graphiqueMéthode du simplexeImplémentation Python de l'algorithme du simplexeCon lusionProblème du sa à dos par re her he opérationnellePortées du problème du sa à dos
Test sur P(n)
Test sur P(n)Prin ipe
Test sur P(n)Prin ipe◮ liste L d'objets de format ["objet",valeur,poids℄ et P la ontrainte de poids
Test sur P(n)Prin ipe◮ liste L d'objets de format ["objet",valeur,poids℄ et P la ontrainte de poids◮ génération de P(n) par ré ursivité, ave n = len(L)
Test sur P(n)Prin ipe◮ liste L d'objets de format ["objet",valeur,poids℄ et P la ontrainte de poids◮ génération de P(n) par ré ursivité, ave n = len(L)
◮ valeur_test ←− 0
Test sur P(n)Prin ipe◮ liste L d'objets de format ["objet",valeur,poids℄ et P la ontrainte de poids◮ génération de P(n) par ré ursivité, ave n = len(L)
◮ valeur_test ←− 0◮ passage de revue des parties A dans P(n)
Test sur P(n)Prin ipe◮ liste L d'objets de format ["objet",valeur,poids℄ et P la ontrainte de poids◮ génération de P(n) par ré ursivité, ave n = len(L)
◮ valeur_test ←− 0◮ passage de revue des parties A dans P(n)
◮ si π =∑
k∈A
L[k][2] 6 P et ω =∑
k∈A
L[k][1] > valeur_test :
Test sur P(n)Prin ipe◮ liste L d'objets de format ["objet",valeur,poids℄ et P la ontrainte de poids◮ génération de P(n) par ré ursivité, ave n = len(L)
◮ valeur_test ←− 0◮ passage de revue des parties A dans P(n)
◮ si π =∑
k∈A
L[k][2] 6 P et ω =∑
k∈A
L[k][1] > valeur_test :⊲ mise à jour de valeur_test
Test sur P(n)Prin ipe◮ liste L d'objets de format ["objet",valeur,poids℄ et P la ontrainte de poids◮ génération de P(n) par ré ursivité, ave n = len(L)
◮ valeur_test ←− 0◮ passage de revue des parties A dans P(n)
◮ si π =∑
k∈A
L[k][2] 6 P et ω =∑
k∈A
L[k][1] > valeur_test :⊲ mise à jour de valeur_test⊲ mise en mémoire dans Sac = [[L[k] for k in A], ω, π]
Test sur P(n)Prin ipe◮ liste L d'objets de format ["objet",valeur,poids℄ et P la ontrainte de poids◮ génération de P(n) par ré ursivité, ave n = len(L)
◮ valeur_test ←− 0◮ passage de revue des parties A dans P(n)
◮ si π =∑
k∈A
L[k][2] 6 P et ω =∑
k∈A
L[k][1] > valeur_test :⊲ mise à jour de valeur_test⊲ mise en mémoire dans Sac = [[L[k] for k in A], ω, π]
◮ sortie : Sac
+ et −
+ et −Avantage
+ et −Avantage◮ solution optimale au problème
+ et −Avantage◮ solution optimale au problèmeIn onvénients
+ et −Avantage◮ solution optimale au problèmeIn onvénients◮ omplexité en mémoire lourde pour P(n)
+ et −Avantage◮ solution optimale au problèmeIn onvénients◮ omplexité en mémoire lourde pour P(n)
◮ temps d'exé ution exponentiels :
+ et −Avantage◮ solution optimale au problèmeIn onvénients◮ omplexité en mémoire lourde pour P(n)
◮ temps d'exé ution exponentiels :
Ré ursivité
Ré ursivitéPrin ipe de la fon tion ré ursive Pb_Sa _Re (L,P)
Ré ursivitéPrin ipe de la fon tion ré ursive Pb_Sa _Re (L,P)◮ liste L d'objets de format ["objet",valeur,poids℄ et P la ontrainte de poids
Ré ursivitéPrin ipe de la fon tion ré ursive Pb_Sa _Re (L,P)◮ liste L d'objets de format ["objet",valeur,poids℄ et P la ontrainte de poids◮ si L = [ ] ou (len(L) = 1 et L[0][2] > P), sortie :[[ ℄,0,0℄
Ré ursivitéPrin ipe de la fon tion ré ursive Pb_Sa _Re (L,P)◮ liste L d'objets de format ["objet",valeur,poids℄ et P la ontrainte de poids◮ si L = [ ] ou (len(L) = 1 et L[0][2] > P), sortie :[[ ℄,0,0℄◮ si len(L) = 1 et L[0][2] 6 P, sortie :[L,L[0℄[1℄,L[0℄[2℄℄
Ré ursivitéPrin ipe de la fon tion ré ursive Pb_Sa _Re (L,P)◮ liste L d'objets de format ["objet",valeur,poids℄ et P la ontrainte de poids◮ si L = [ ] ou (len(L) = 1 et L[0][2] > P), sortie :[[ ℄,0,0℄◮ si len(L) = 1 et L[0][2] 6 P, sortie :[L,L[0℄[1℄,L[0℄[2℄℄◮ si len(L) > 2 :
Ré ursivitéPrin ipe de la fon tion ré ursive Pb_Sa _Re (L,P)◮ liste L d'objets de format ["objet",valeur,poids℄ et P la ontrainte de poids◮ si L = [ ] ou (len(L) = 1 et L[0][2] > P), sortie :[[ ℄,0,0℄◮ si len(L) = 1 et L[0][2] 6 P, sortie :[L,L[0℄[1℄,L[0℄[2℄℄◮ si len(L) > 2 :
⊲ x ←− L[0]
Ré ursivitéPrin ipe de la fon tion ré ursive Pb_Sa _Re (L,P)◮ liste L d'objets de format ["objet",valeur,poids℄ et P la ontrainte de poids◮ si L = [ ] ou (len(L) = 1 et L[0][2] > P), sortie :[[ ℄,0,0℄◮ si len(L) = 1 et L[0][2] 6 P, sortie :[L,L[0℄[1℄,L[0℄[2℄℄◮ si len(L) > 2 :
⊲ x ←− L[0]⊲ Res1←− Pb_Sa _Re (L[1:℄,P)
Ré ursivitéPrin ipe de la fon tion ré ursive Pb_Sa _Re (L,P)◮ liste L d'objets de format ["objet",valeur,poids℄ et P la ontrainte de poids◮ si L = [ ] ou (len(L) = 1 et L[0][2] > P), sortie :[[ ℄,0,0℄◮ si len(L) = 1 et L[0][2] 6 P, sortie :[L,L[0℄[1℄,L[0℄[2℄℄◮ si len(L) > 2 :
⊲ x ←− L[0]⊲ Res1←− Pb_Sa _Re (L[1:℄,P)⊲ si x [2] > P , sortie Res1
Ré ursivitéPrin ipe de la fon tion ré ursive Pb_Sa _Re (L,P)◮ liste L d'objets de format ["objet",valeur,poids℄ et P la ontrainte de poids◮ si L = [ ] ou (len(L) = 1 et L[0][2] > P), sortie :[[ ℄,0,0℄◮ si len(L) = 1 et L[0][2] 6 P, sortie :[L,L[0℄[1℄,L[0℄[2℄℄◮ si len(L) > 2 :
⊲ x ←− L[0]⊲ Res1←− Pb_Sa _Re (L[1:℄,P)⊲ si x [2] > P , sortie Res1⊲ si x [2] 6 P , Res2←− PB_Sa _Re (L[1:℄,P-x[2℄) :
Ré ursivitéPrin ipe de la fon tion ré ursive Pb_Sa _Re (L,P)◮ liste L d'objets de format ["objet",valeur,poids℄ et P la ontrainte de poids◮ si L = [ ] ou (len(L) = 1 et L[0][2] > P), sortie :[[ ℄,0,0℄◮ si len(L) = 1 et L[0][2] 6 P, sortie :[L,L[0℄[1℄,L[0℄[2℄℄◮ si len(L) > 2 :
⊲ x ←− L[0]⊲ Res1←− Pb_Sa _Re (L[1:℄,P)⊲ si x [2] > P , sortie Res1⊲ si x [2] 6 P , Res2←− PB_Sa _Re (L[1:℄,P-x[2℄) :
⋄ si Res1[1] > Res2[1] + x [1], sortie : Res1
Ré ursivitéPrin ipe de la fon tion ré ursive Pb_Sa _Re (L,P)◮ liste L d'objets de format ["objet",valeur,poids℄ et P la ontrainte de poids◮ si L = [ ] ou (len(L) = 1 et L[0][2] > P), sortie :[[ ℄,0,0℄◮ si len(L) = 1 et L[0][2] 6 P, sortie :[L,L[0℄[1℄,L[0℄[2℄℄◮ si len(L) > 2 :
⊲ x ←− L[0]⊲ Res1←− Pb_Sa _Re (L[1:℄,P)⊲ si x [2] > P , sortie Res1⊲ si x [2] 6 P , Res2←− PB_Sa _Re (L[1:℄,P-x[2℄) :
⋄ si Res1[1] > Res2[1] + x [1], sortie : Res1⋄ sinon, sortie :[[x℄+Res2[0℄,x[1℄+Res2[1℄,x[2℄+Res2[2℄℄
+ et −
+ et −Avantages
+ et −Avantages◮ solution optimale au problème
+ et −Avantages◮ solution optimale au problème◮ temps de al uls réduits
+ et −Avantages◮ solution optimale au problème◮ temps de al uls réduitsIn onvénient
+ et −Avantages◮ solution optimale au problème◮ temps de al uls réduitsIn onvénient◮ temps d'exé ution en ore importants :
+ et −Avantages◮ solution optimale au problème◮ temps de al uls réduitsIn onvénient◮ temps d'exé ution en ore importants :
ProblématiqueRésolutions théoriquesTests sur les partiesPrin ipe ré ursifRésolutions appro héesNé essité d'une résolution appro héePrin ipes généraux de la résolution appro héeTri par heuristiqueHeuristique F : (w , p) 7→p
wRe her he opérationnelle par programmation linéaireRésolution graphiqueMéthode du simplexeImplémentation Python de l'algorithme du simplexeCon lusionProblème du sa à dos par re her he opérationnellePortées du problème du sa à dos
Né essité d'une résolution appro hée
Né essité d'une résolution appro héeEstimations des temps de al uls
Né essité d'une résolution appro héeEstimations des temps de al uls◮ lois approximatives des temps d'exé ution des algorithmesexa ts : T (n) = 10a log n+b
Né essité d'une résolution appro héeEstimations des temps de al uls◮ lois approximatives des temps d'exé ution des algorithmesexa ts : T (n) = 10a log n+b
◮ algorithme ré ursif au moins 30 fois plus rapide
Né essité d'une résolution appro héeEstimations des temps de al uls◮ lois approximatives des temps d'exé ution des algorithmesexa ts : T (n) = 10a log n+b
◮ algorithme ré ursif au moins 30 fois plus rapide◮ pour n = 30 objets, estimations :
Né essité d'une résolution appro héeEstimations des temps de al uls◮ lois approximatives des temps d'exé ution des algorithmesexa ts : T (n) = 10a log n+b
◮ algorithme ré ursif au moins 30 fois plus rapide◮ pour n = 30 objets, estimations :
{ pour la re her he dans P(n) : ≃ 6 heures et demie
Né essité d'une résolution appro héeEstimations des temps de al uls◮ lois approximatives des temps d'exé ution des algorithmesexa ts : T (n) = 10a log n+b
◮ algorithme ré ursif au moins 30 fois plus rapide◮ pour n = 30 objets, estimations :
{ pour la re her he dans P(n) : ≃ 6 heures et demiepour la re her he ré ursive : ≃ 10 minutes
Né essité d'une résolution appro héeEstimations des temps de al uls◮ lois approximatives des temps d'exé ution des algorithmesexa ts : T (n) = 10a log n+b
◮ algorithme ré ursif au moins 30 fois plus rapide◮ pour n = 30 objets, estimations :
{ pour la re her he dans P(n) : ≃ 6 heures et demiepour la re her he ré ursive : ≃ 10 minutes◮ pour n = 40 objets, estimations :
Né essité d'une résolution appro héeEstimations des temps de al uls◮ lois approximatives des temps d'exé ution des algorithmesexa ts : T (n) = 10a log n+b
◮ algorithme ré ursif au moins 30 fois plus rapide◮ pour n = 30 objets, estimations :
{ pour la re her he dans P(n) : ≃ 6 heures et demiepour la re her he ré ursive : ≃ 10 minutes◮ pour n = 40 objets, estimations :
{ pour la re her he dans P(n) : ≃ 333 jours
Né essité d'une résolution appro héeEstimations des temps de al uls◮ lois approximatives des temps d'exé ution des algorithmesexa ts : T (n) = 10a log n+b
◮ algorithme ré ursif au moins 30 fois plus rapide◮ pour n = 30 objets, estimations :
{ pour la re her he dans P(n) : ≃ 6 heures et demiepour la re her he ré ursive : ≃ 10 minutes◮ pour n = 40 objets, estimations :
{ pour la re her he dans P(n) : ≃ 333 jourspour la re her he ré ursive : ≃ 7 jours 5 heures
Né essité d'une résolution appro héeEstimations des temps de al uls◮ lois approximatives des temps d'exé ution des algorithmesexa ts : T (n) = 10a log n+b
◮ algorithme ré ursif au moins 30 fois plus rapide◮ pour n = 30 objets, estimations :
{ pour la re her he dans P(n) : ≃ 6 heures et demiepour la re her he ré ursive : ≃ 10 minutes◮ pour n = 40 objets, estimations :
{ pour la re her he dans P(n) : ≃ 333 jourspour la re her he ré ursive : ≃ 7 jours 5 heures◮ pour n = 50 objets, estimations :
Né essité d'une résolution appro héeEstimations des temps de al uls◮ lois approximatives des temps d'exé ution des algorithmesexa ts : T (n) = 10a log n+b
◮ algorithme ré ursif au moins 30 fois plus rapide◮ pour n = 30 objets, estimations :
{ pour la re her he dans P(n) : ≃ 6 heures et demiepour la re her he ré ursive : ≃ 10 minutes◮ pour n = 40 objets, estimations :
{ pour la re her he dans P(n) : ≃ 333 jourspour la re her he ré ursive : ≃ 7 jours 5 heures◮ pour n = 50 objets, estimations :
{ pour la re her he dans P(n) : ≃ 1114 années !!
Né essité d'une résolution appro héeEstimations des temps de al uls◮ lois approximatives des temps d'exé ution des algorithmesexa ts : T (n) = 10a log n+b
◮ algorithme ré ursif au moins 30 fois plus rapide◮ pour n = 30 objets, estimations :
{ pour la re her he dans P(n) : ≃ 6 heures et demiepour la re her he ré ursive : ≃ 10 minutes◮ pour n = 40 objets, estimations :
{ pour la re her he dans P(n) : ≃ 333 jourspour la re her he ré ursive : ≃ 7 jours 5 heures◮ pour n = 50 objets, estimations :
{ pour la re her he dans P(n) : ≃ 1114 années !!pour la re her he ré ursive : ≃ 20 années 283 jours
Né essité d'une résolution appro héeEstimations des temps de al uls◮ lois approximatives des temps d'exé ution des algorithmesexa ts : T (n) = 10a log n+b
◮ algorithme ré ursif au moins 30 fois plus rapide◮ pour n = 30 objets, estimations :
{ pour la re her he dans P(n) : ≃ 6 heures et demiepour la re her he ré ursive : ≃ 10 minutes◮ pour n = 40 objets, estimations :
{ pour la re her he dans P(n) : ≃ 333 jourspour la re her he ré ursive : ≃ 7 jours 5 heures◮ pour n = 50 objets, estimations :
{ pour la re her he dans P(n) : ≃ 1114 années !!pour la re her he ré ursive : ≃ 20 années 283 jours
Présentation du on eptPrin ipes et obje tifs
Présentation du on eptPrin ipes et obje tifs◮ avoir une résolution appro hée en temps raisonnable
Présentation du on eptPrin ipes et obje tifs◮ avoir une résolution appro hée en temps raisonnable◮ quanti�er la perte d'informations sur le résultat en sortie
Tri par Heuristique
Tri par HeuristiquePrin ipe
Tri par HeuristiquePrin ipe◮ liste L d'objets de format ["objet",valeur,poids℄ et P la ontrainte de poids
Tri par HeuristiquePrin ipe◮ liste L d'objets de format ["objet",valeur,poids℄ et P la ontrainte de poids◮ F : (v , p) 7→ F (v , p) une fon tion heuristique réelle
Tri par HeuristiquePrin ipe◮ liste L d'objets de format ["objet",valeur,poids℄ et P la ontrainte de poids◮ F : (v , p) 7→ F (v , p) une fon tion heuristique réelle◮ tri des objets selon F (valeur , poids) roissant
Tri par HeuristiquePrin ipe◮ liste L d'objets de format ["objet",valeur,poids℄ et P la ontrainte de poids◮ F : (v , p) 7→ F (v , p) une fon tion heuristique réelle◮ tri des objets selon F (valeur , poids) roissant◮ remplissage du sa selon et ordre
Tri par HeuristiquePrin ipe◮ liste L d'objets de format ["objet",valeur,poids℄ et P la ontrainte de poids◮ F : (v , p) 7→ F (v , p) une fon tion heuristique réelle◮ tri des objets selon F (valeur , poids) roissant◮ remplissage du sa selon et ordre
b
bb
b
b
bb
b
bvaleurspoids
wk
pk
Heuristique F : (w , p) 7→p
w
Heuristique F : (w , p) 7→p
wPrin ipe
Heuristique F : (w , p) 7→p
wPrin ipe◮ tri des objets par quotients poids
valeur roissants
Heuristique F : (w , p) 7→p
wPrin ipe◮ tri des objets par quotients poids
valeur roissants
valeurspoids
wk
pk
b
bb
b
b
bb
b
b
Heuristique F : (w , p) 7→p
wPrin ipe◮ tri des objets par quotients poids
valeur roissants
valeurspoids
wk
pk
b
bb
b
b
bb
b
bb
Heuristique F : (w , p) 7→p
wPrin ipe◮ tri des objets par quotients poids
valeur roissants
valeurspoids
wk
pk
b
bb
b
b
bb
b
bb
b
Heuristique F : (w , p) 7→p
wPrin ipe◮ tri des objets par quotients poids
valeur roissants
valeurspoids
wk
pk
b
bb
b
b
bb
b
bb
b
b
Heuristique F : (w , p) 7→p
wPrin ipe◮ tri des objets par quotients poids
valeur roissants
valeurspoids
wk
pk
b
bb
b
b
bb
b
bb
b
b
b
Heuristique F : (w , p) 7→p
wPrin ipe◮ tri des objets par quotients poids
valeur roissants
valeurspoids
wk
pk
b
bb
b
b
bb
b
bb
b
b
b
b
Heuristique F : (w , p) 7→p
wPrin ipe◮ tri des objets par quotients poids
valeur roissants
valeurspoids
wk
pk
b
bb
b
b
bb
b
bb
b
b
b
b
b
Heuristique F : (w , p) 7→p
wPrin ipe◮ tri des objets par quotients poids
valeur roissants
valeurspoids
wk
pk
b
bb
b
b
bb
b
bb
b
b
b
b
bb
Heuristique F : (w , p) 7→p
wPrin ipe◮ tri des objets par quotients poids
valeur roissants
valeurspoids
wk
pk
b
bb
b
b
bb
b
bb
b
b
b
b
bb
b
Heuristique F : (w , p) 7→p
wPrin ipe◮ tri des objets par quotients poids
valeur roissants
valeurspoids
wk
pk
b
bb
b
b
bb
b
bb
b
b
b
b
bb
b
b
Heuristique F : (w , p) 7→p
wPrin ipe◮ tri des objets par quotients poids
valeur roissants
valeurspoids
wk
pk
b
bb
b
b
bb
b
bb
b
b
b
b
bb
b
b
b
bb
b
b
bb
b
bImplémentation : tri rapide par λ- al ul
Heuristique F : (w , p) 7→p
wPrin ipe◮ tri des objets par quotients poids
valeur roissants
valeurspoids
wk
pk
b
bb
b
b
bb
b
bb
b
b
b
b
bb
b
b
b
bb
b
b
bb
b
bImplémentation : tri rapide par λ- al ulsorted(L,key=lambda objet : F(objet[1℄,objet[2℄))
Heuristique F : (w , p) 7→p
wAvantages de ette heuristique
Heuristique F : (w , p) 7→p
wAvantages de ette heuristique◮ temps de al uls très ourts :
Heuristique F : (w , p) 7→p
wAvantages de ette heuristique◮ temps de al uls très ourts :
Heuristique F : (w , p) 7→p
wAvantages de ette heuristique◮ sortie assez performante :
Heuristique F : (w , p) 7→p
wAvantages de ette heuristique◮ sortie assez performante :
Heuristique F : (w , p) 7→p
wAvantages de ette heuristique◮ sortie assez performante :◮ meilleure sortie que pour les tris dé roissants sur lesvaleurs puis roissants sur les poids ou vi e-versa puisremplissage du sa selon et ordre
ProblématiqueRésolutions théoriquesTests sur les partiesPrin ipe ré ursifRésolutions appro héesNé essité d'une résolution appro héePrin ipes généraux de la résolution appro héeTri par heuristiqueHeuristique F : (w , p) 7→p
wRe her he opérationnelle par programmation linéaireRésolution graphiqueMéthode du simplexeImplémentation Python de l'algorithme du simplexeCon lusionProblème du sa à dos par re her he opérationnellePortées du problème du sa à dos
Exemple
ExempleDonnées
ExempleDonnées◮ produ tion de deux types de pro esseurs Pr A et Pr B
ExempleDonnées◮ produ tion de deux types de pro esseurs Pr A et Pr B
◮ tableau des ara téristiques :
ExempleDonnées◮ produ tion de deux types de pro esseurs Pr A et Pr B
◮ tableau des ara téristiques :Pr nbre barrettes tps (en min) pro�t (en e)A 2 3 400B 6 1 800
ExempleDonnées◮ produ tion de deux types de pro esseurs Pr A et Pr B
◮ tableau des ara téristiques :Pr nbre barrettes tps (en min) pro�t (en e)A 2 3 400B 6 1 800◮ ontraintes supplémentaires :
ExempleDonnées◮ produ tion de deux types de pro esseurs Pr A et Pr B
◮ tableau des ara téristiques :Pr nbre barrettes tps (en min) pro�t (en e)A 2 3 400B 6 1 800◮ ontraintes supplémentaires :
⊲ 24000 minutes disponibles pour l'assemblage
ExempleDonnées◮ produ tion de deux types de pro esseurs Pr A et Pr B
◮ tableau des ara téristiques :Pr nbre barrettes tps (en min) pro�t (en e)A 2 3 400B 6 1 800◮ ontraintes supplémentaires :
⊲ 24000 minutes disponibles pour l'assemblage⊲ au maximum 10000 pro esseurs à vendre
ExempleDonnées◮ produ tion de deux types de pro esseurs Pr A et Pr B
◮ tableau des ara téristiques :Pr nbre barrettes tps (en min) pro�t (en e)A 2 3 400B 6 1 800◮ ontraintes supplémentaires :
⊲ 24000 minutes disponibles pour l'assemblage⊲ au maximum 10000 pro esseurs à vendre⊲ au maximum 48000 barrettes
ExempleDonnées◮ produ tion de deux types de pro esseurs Pr A et Pr B
◮ tableau des ara téristiques :Pr nbre barrettes tps (en min) pro�t (en e)A 2 3 400B 6 1 800◮ ontraintes supplémentaires :
⊲ 24000 minutes disponibles pour l'assemblage⊲ au maximum 10000 pro esseurs à vendre⊲ au maximum 48000 barrettes
◮ obje tif : maximiser le pro�t
Reformulation du problème
Reformulation du problèmeDonnées
Reformulation du problèmeDonnées◮ x1 : nbre de Pr A ; x2 : nbre de Pr B
Reformulation du problèmeDonnées◮ x1 : nbre de Pr A ; x2 : nbre de Pr B
◮ fon tion obje tif : z = 400 x1 + 800 x2
Reformulation du problèmeDonnées◮ x1 : nbre de Pr A ; x2 : nbre de Pr B
◮ fon tion obje tif : z = 400 x1 + 800 x2◮ ontraintes :
2 x1 + 6 x2 6 48000x1 + x2 6 100003 x1 + x2 6 24000x1 > 0x2 > 0
Reformulation du problèmeDonnées◮ x1 : nbre de Pr A ; x2 : nbre de Pr B
◮ fon tion obje tif : z = 400 x1 + 800 x2◮ ontraintes :
2 x1 + 6 x2 6 48000x1 + x2 6 100003 x1 + x2 6 24000x1 > 0x2 > 0Prin ipe de résolution graphique
Reformulation du problèmeDonnées◮ x1 : nbre de Pr A ; x2 : nbre de Pr B
◮ fon tion obje tif : z = 400 x1 + 800 x2◮ ontraintes :
2 x1 + 6 x2 6 48000x1 + x2 6 100003 x1 + x2 6 24000x1 > 0x2 > 0Prin ipe de résolution graphique
◮ haque ontrainte ←→ demi-plan
Reformulation du problèmeDonnées◮ x1 : nbre de Pr A ; x2 : nbre de Pr B
◮ fon tion obje tif : z = 400 x1 + 800 x2◮ ontraintes :
2 x1 + 6 x2 6 48000x1 + x2 6 100003 x1 + x2 6 24000x1 > 0x2 > 0Prin ipe de résolution graphique
◮ haque ontrainte ←→ demi-plan◮ ensemble des ontraintes ←→ polygone onvexe C
Reformulation du problèmeDonnées◮ x1 : nbre de Pr A ; x2 : nbre de Pr B
◮ fon tion obje tif : z = 400 x1 + 800 x2◮ ontraintes :
2 x1 + 6 x2 6 48000x1 + x2 6 100003 x1 + x2 6 24000x1 > 0x2 > 0Prin ipe de résolution graphique
◮ haque ontrainte ←→ demi-plan◮ ensemble des ontraintes ←→ polygone onvexe C
◮ tra é des droites parallèles Dk : 400 x + 800 y = k
Reformulation du problèmeDonnées◮ x1 : nbre de Pr A ; x2 : nbre de Pr B
◮ fon tion obje tif : z = 400 x1 + 800 x2◮ ontraintes :
2 x1 + 6 x2 6 48000x1 + x2 6 100003 x1 + x2 6 24000x1 > 0x2 > 0Prin ipe de résolution graphique
◮ haque ontrainte ←→ demi-plan◮ ensemble des ontraintes ←→ polygone onvexe C
◮ tra é des droites parallèles Dk : 400 x + 800 y = k
◮ al ul de la plus grande valeur k telle que Dk ∩ C 6= ∅
Résolution graphique
Résolution graphique
x2 > 0
Résolution graphique
x2 > 0
x 1>0
Résolution graphique
x2 > 0
x 1>0x1 +
x2 6 10000
Résolution graphique
x2 > 0
x 1>0x1 +
x2 6 100002 x1 + 6 x2 6 48000x1 + x2 6 10000
Résolution graphique
x2 > 0
x 1>0x1 +
x2 6 100002 x1 + 6 x2 6 48000x1 + x2 6 100003x1
+x2
6 24000x1 +
x2 6 10000
Résolution graphique
x2 > 0
x 1>0x1 +
x2 6 100002 x1 + 6 x2 6 48000x1 + x2 6 100003x1
+x2
6 24000x1 +
x2 6 10000b
b
b
b
b
C
Résolution graphique
b
b
b
b
b
Résolution graphique
b
b
b
b
b
k = 0
Résolution graphique
b
b
b
b
b
k = 10 6
Résolution graphique
b
b
b
b
b
k = 1.5 · 10 6
Résolution graphique
b
b
b
b
b
k = 2 · 10 6
Résolution graphique
b
b
b
b
b
k = 2.5 · 10 6
Résolution graphique
b
b
b
b
b
k = 3 · 10 6
Résolution graphique
b
b
b
b
b
k = 3.5 · 10 6
Résolution graphique
b
b
b
b
b
k = 4 · 10 6
Résolution graphique
b
b
b
b
b
k = 4.5 · 10 6
Résolution graphique
b
b
b
b
b
k = 5 · 10 6
Résolution graphique
b
b
b
b
b
k = 5.5 · 10 6
Résolution graphique
b
b
b
b
b
k = 6 · 10 6
Résolution graphique
b
b
b
b
b
k = 6.5 · 10 6
Résolution graphique
b
b
b
b
b
k = 7 · 10 6
Résolution graphique
b
b
b
b
b
k = 6.8 · 10 6
Résolution graphique
b
b
b
b
b
k = 6.8 · 10 6
Résolution graphique
b
b
b
b
b
k = 6.8 · 10 6x1 = 3000
x2 = 7000
Méthode du simplexe
Méthode du simplexePrin ipes généraux
Méthode du simplexePrin ipes généraux◮ la fon tion obje tif z atteint un maximum en un sommetde C
Méthode du simplexePrin ipes généraux◮ la fon tion obje tif z atteint un maximum en un sommetde C
◮ transformation des ontraintes en égalités : ajout devariables auxiliaires
Méthode du simplexePrin ipes généraux◮ la fon tion obje tif z atteint un maximum en un sommetde C
◮ transformation des ontraintes en égalités : ajout devariables auxiliaires◮ navigation sur les sommets d'un polytope onvexe pouraugmenter z à partir d'un sommet initial eninter hangeant des variables de base et auxiliaires
Méthode du simplexePrin ipes généraux◮ la fon tion obje tif z atteint un maximum en un sommetde C
◮ transformation des ontraintes en égalités : ajout devariables auxiliaires◮ navigation sur les sommets d'un polytope onvexe pouraugmenter z à partir d'un sommet initial eninter hangeant des variables de base et auxiliaires◮ variables de base : variables n'apparaissant pas dans z etapparaissant dans la solution ourante du système
Méthode du simplexePrin ipes généraux◮ la fon tion obje tif z atteint un maximum en un sommetde C
◮ transformation des ontraintes en égalités : ajout devariables auxiliaires◮ navigation sur les sommets d'un polytope onvexe pouraugmenter z à partir d'un sommet initial eninter hangeant des variables de base et auxiliaires◮ variables de base : variables n'apparaissant pas dans z etapparaissant dans la solution ourante du système◮ systèmes linéaires de Cramer pour les variables de base :pivot de Gauss
Méthode du simplexePrin ipes généraux◮ la fon tion obje tif z atteint un maximum en un sommetde C
◮ transformation des ontraintes en égalités : ajout devariables auxiliaires◮ navigation sur les sommets d'un polytope onvexe pouraugmenter z à partir d'un sommet initial eninter hangeant des variables de base et auxiliaires◮ variables de base : variables n'apparaissant pas dans z etapparaissant dans la solution ourante du système◮ systèmes linéaires de Cramer pour les variables de base :pivot de Gauss◮ ondition d'arrêt lorsque les oe� ients devant lesvariables de base sont tous négatifs dans z
Appli ation à l'exemple
Appli ation à l'exempleSystème standardisé
Appli ation à l'exempleSystème standardisé◮ ontraintes :
2 x1 + 6 x2 + x3 = 48000x1 + x2 + x4 = 100003 x1 + x2 + x5 = 24000x1, x2, x3, x4, x5 > 0
Appli ation à l'exempleSystème standardisé◮ ontraintes :
2 x1 + 6 x2 + x3 = 48000x1 + x2 + x4 = 100003 x1 + x2 + x5 = 24000x1, x2, x3, x4, x5 > 0
◮ fon tion obje tif : z = 400 x1 + 800 x2
Appli ation à l'exempleSystème standardisé◮ ontraintes :
2 x1 + 6 x2 + x3 = 48000x1 + x2 + x4 = 100003 x1 + x2 + x5 = 24000x1, x2, x3, x4, x5 > 0
◮ fon tion obje tif : z = 400 x1 + 800 x2Solution de départ
Appli ation à l'exempleSystème standardisé◮ ontraintes :
2 x1 + 6 x2 + x3 = 48000x1 + x2 + x4 = 100003 x1 + x2 + x5 = 24000x1, x2, x3, x4, x5 > 0
◮ fon tion obje tif : z = 400 x1 + 800 x2Solution de départ◮ solution : x1 = x2 = 0 ; x3 = 48000, x4 = 10000 et
x5 = 24000
Appli ation à l'exempleSystème standardisé◮ ontraintes :
2 x1 + 6 x2 + x3 = 48000x1 + x2 + x4 = 100003 x1 + x2 + x5 = 24000x1, x2, x3, x4, x5 > 0
◮ fon tion obje tif : z = 400 x1 + 800 x2Solution de départ◮ solution : x1 = x2 = 0 ; x3 = 48000, x4 = 10000 et
x5 = 24000◮ obje tif asso ié : z = 0
Cal uls sur les systèmes linéaires
Cal uls sur les systèmes linéairesÉtape 1
Cal uls sur les systèmes linéairesÉtape 1◮
x1 x2 x3 x4 x52 6 1 0 0 480001 1 0 1 0 100003 1 0 0 1 24000400 800 0 0 0 0
Cal uls sur les systèmes linéairesÉtape 1◮
x1 x2 x3 x4 x52 6 1 0 0 480001 1 0 1 0 100003 1 0 0 1 24000400 800 0 0 0 0◮ solution (0, 0, 48000, 10000, 24000) et z = 400x1 + 800x2
Cal uls sur les systèmes linéairesÉtape 1◮
x1 x2 x3 x4 x52 6 1 0 0 480001 1 0 1 0 100003 1 0 0 1 24000400 800 0 0 0 0◮ solution (0, 0, 48000, 10000, 24000) et z = 400x1 + 800x2◮ variables de base x3, x4, x5
Cal uls sur les systèmes linéairesÉtape 1◮
x1 x2 x3 x4 x52 6 1 0 0 480001 1 0 1 0 100003 1 0 0 1 24000400 800 0 0 0 0◮ solution (0, 0, 48000, 10000, 24000) et z = 400x1 + 800x2◮ variables de base x3, x4, x5◮ augmenter au maximum x2 (pour optimiser z) pourrespe ter les ontraintes : x2 ←− 8000
Cal uls sur les systèmes linéairesÉtape 1◮
x1 x2 x3 x4 x52 6 1 0 0 480001 1 0 1 0 100003 1 0 0 1 24000400 800 0 0 0 0◮ solution (0, 0, 48000, 10000, 24000) et z = 400x1 + 800x2◮ variables de base x3, x4, x5◮ augmenter au maximum x2 (pour optimiser z) pourrespe ter les ontraintes : x2 ←− 8000◮ annulation de x3 : x3 sort de la base et x2 rentre
Cal uls sur les systèmes linéairesÉtape 1◮
x1 x2 x3 x4 x52 6 1 0 0 480001 1 0 1 0 100003 1 0 0 1 24000400 800 0 0 0 0◮ solution (0, 0, 48000, 10000, 24000) et z = 400x1 + 800x2◮ variables de base x3, x4, x5◮ augmenter au maximum x2 (pour optimiser z) pourrespe ter les ontraintes : x2 ←− 8000◮ annulation de x3 : x3 sort de la base et x2 rentre◮ opération L1 ←− 1/6 L1 puis élimination de x2 dans lesautres lignes
Cal uls sur les systèmes linéairesÉtape 2◮
x1 x2 x3 x4 x51/3 1 1/6 0 0 80002/3 0 −1/6 1 0 20008/3 0 −1/6 0 1 16000400/3 0 −400/3 0 0 −6.4 106
Cal uls sur les systèmes linéairesÉtape 2◮
x1 x2 x3 x4 x51/3 1 1/6 0 0 80002/3 0 −1/6 1 0 20008/3 0 −1/6 0 1 16000400/3 0 −400/3 0 0 −6.4 106◮ solution (0, 8000, 0, 2000, 16000) et
z = 400/3x1 − 400/3x3 + 6.4 106
Cal uls sur les systèmes linéairesÉtape 2◮
x1 x2 x3 x4 x51/3 1 1/6 0 0 80002/3 0 −1/6 1 0 20008/3 0 −1/6 0 1 16000400/3 0 −400/3 0 0 −6.4 106◮ solution (0, 8000, 0, 2000, 16000) et
z = 400/3x1 − 400/3x3 + 6.4 106◮ variables de base x2, x4, x5
Cal uls sur les systèmes linéairesÉtape 2◮
x1 x2 x3 x4 x51/3 1 1/6 0 0 80002/3 0 −1/6 1 0 20008/3 0 −1/6 0 1 16000400/3 0 −400/3 0 0 −6.4 106◮ solution (0, 8000, 0, 2000, 16000) et
z = 400/3x1 − 400/3x3 + 6.4 106◮ variables de base x2, x4, x5◮ augmenter au maximum x1 (pour optimiser z) pourrespe ter les ontraintes : x1 ←− 3000
Cal uls sur les systèmes linéairesÉtape 2◮
x1 x2 x3 x4 x51/3 1 1/6 0 0 80002/3 0 −1/6 1 0 20008/3 0 −1/6 0 1 16000400/3 0 −400/3 0 0 −6.4 106◮ solution (0, 8000, 0, 2000, 16000) et
z = 400/3x1 − 400/3x3 + 6.4 106◮ variables de base x2, x4, x5◮ augmenter au maximum x1 (pour optimiser z) pourrespe ter les ontraintes : x1 ←− 3000◮ annulation de x4 : x4 sort de la base et x1 rentre
Cal uls sur les systèmes linéairesÉtape 2◮
x1 x2 x3 x4 x51/3 1 1/6 0 0 80002/3 0 −1/6 1 0 20008/3 0 −1/6 0 1 16000400/3 0 −400/3 0 0 −6.4 106◮ solution (0, 8000, 0, 2000, 16000) et
z = 400/3x1 − 400/3x3 + 6.4 106◮ variables de base x2, x4, x5◮ augmenter au maximum x1 (pour optimiser z) pourrespe ter les ontraintes : x1 ←− 3000◮ annulation de x4 : x4 sort de la base et x1 rentre◮ opération L2 ←− 3/2 L2 puis élimination de x1 dans lesautres lignes
Cal uls sur les systèmes linéairesÉtape 3◮
x1 x2 x3 x4 x50 1 1/4 −1/2 0 70001 0 −1/4 3/2 0 30000 0 1/2 −4 1 80000 0 −100 −200 0 −6.8 106
Cal uls sur les systèmes linéairesÉtape 3◮
x1 x2 x3 x4 x50 1 1/4 −1/2 0 70001 0 −1/4 3/2 0 30000 0 1/2 −4 1 80000 0 −100 −200 0 −6.8 106◮ solution (3000, 7000, 0, 0, 8000) et
z = −100x3 − 200x4 + 6.8 106
Cal uls sur les systèmes linéairesÉtape 3◮
x1 x2 x3 x4 x50 1 1/4 −1/2 0 70001 0 −1/4 3/2 0 30000 0 1/2 −4 1 80000 0 −100 −200 0 −6.8 106◮ solution (3000, 7000, 0, 0, 8000) et
z = −100x3 − 200x4 + 6.8 106◮ variables de base x1, x2, x5
Cal uls sur les systèmes linéairesÉtape 3◮
x1 x2 x3 x4 x50 1 1/4 −1/2 0 70001 0 −1/4 3/2 0 30000 0 1/2 −4 1 80000 0 −100 −200 0 −6.8 106◮ solution (3000, 7000, 0, 0, 8000) et
z = −100x3 − 200x4 + 6.8 106◮ variables de base x1, x2, x5◮ augmentation des variables impossible sans diminuer z : ondition d'arrêt
Cal uls sur les systèmes linéairesFin
Cal uls sur les systèmes linéairesFin◮ solution optimale (3000, 7000, 0, 0, 8000)
Cal uls sur les systèmes linéairesFin◮ solution optimale (3000, 7000, 0, 0, 8000)◮ obje tif optimal : z = 6.8 106.
Implémentation Python de l'algorithme du simplexe
Implémentation Python de l'algorithme du simplexeS ript Python
Implémentation Python de l'algorithme du simplexeS ript Pythondef Algo_Simplexe(M_standard) :M=M_standard. opy()p,q=M.shapej_max=argmax(M[-1,:-1℄)while M[-1,j_max℄>0 :i_ligne=0val=inffor i in range(p) :if M[i,j_max℄>0 and M[i,-1℄>0 and M[i,-1℄/M[i,j_max℄< val :i_ligne=ival=M[i,-1℄/M[i,j_max℄M[i_ligne,:℄/=M[i_ligne,j_max℄for k in range(p) :if k!=i_ligne :M[k,:℄-=M[k,j_max℄*M[i_ligne,:℄j_max=argmax(M[-1,:-1℄)Res=[℄for j in range(q-1) :if M[-1,j℄==0 :for i in range(p) :if M[i,j℄!= 0 : # on repère la ase de la variable hors baseRes.append(M[i,-1℄)breakelse :Res.append(0) # variable de base nullereturn [Res,-M[-1,-1℄℄ # solution optimale, obje tif optimal
ProblématiqueRésolutions théoriquesTests sur les partiesPrin ipe ré ursifRésolutions appro héesNé essité d'une résolution appro héePrin ipes généraux de la résolution appro héeTri par heuristiqueHeuristique F : (w , p) 7→p
wRe her he opérationnelle par programmation linéaireRésolution graphiqueMéthode du simplexeImplémentation Python de l'algorithme du simplexeCon lusionProblème du sa à dos par re her he opérationnellePortées du problème du sa à dos
Problème du sa à dos par re her he opérationnelle
Problème du sa à dos par re her he opérationnellePrin ipe
Problème du sa à dos par re her he opérationnellePrin ipe◮ obje tif : z =
n∑
k=1 xk wk
Problème du sa à dos par re her he opérationnellePrin ipe◮ obje tif : z =
n∑
k=1 xk wk/ ontrainte : n∑
k=1 xk pk 6 P
Problème du sa à dos par re her he opérationnellePrin ipe◮ obje tif : z =
n∑
k=1 xk wk/ ontrainte : n∑
k=1 xk pk 6 P
◮ optimisation ombinatoire : in onnues xk ∈ {0, 1}
Problème du sa à dos par re her he opérationnellePrin ipe◮ obje tif : z =
n∑
k=1 xk wk/ ontrainte : n∑
k=1 xk pk 6 P
◮ optimisation ombinatoire : in onnues xk ∈ {0, 1}◮ re her he opérationnelle : in onnues xk ∈ [0, 1]
Problème du sa à dos par re her he opérationnellePrin ipe◮ obje tif : z =
n∑
k=1 xk wk/ ontrainte : n∑
k=1 xk pk 6 P
◮ optimisation ombinatoire : in onnues xk ∈ {0, 1}◮ re her he opérationnelle : in onnues xk ∈ [0, 1]Exemple
Problème du sa à dos par re her he opérationnellePrin ipe◮ obje tif : z =
n∑
k=1 xk wk/ ontrainte : n∑
k=1 xk pk 6 P
◮ optimisation ombinatoire : in onnues xk ∈ {0, 1}◮ re her he opérationnelle : in onnues xk ∈ [0, 1]Exemple◮ n = 3, sa : [[11, 7], [8, 6], [5, 4]] et P = 10
Problème du sa à dos par re her he opérationnellePrin ipe◮ obje tif : z =
n∑
k=1 xk wk/ ontrainte : n∑
k=1 xk pk 6 P
◮ optimisation ombinatoire : in onnues xk ∈ {0, 1}◮ re her he opérationnelle : in onnues xk ∈ [0, 1]Exemple◮ n = 3, sa : [[11, 7], [8, 6], [5, 4]] et P = 10◮ tableau : x1 x2 x3 x4 x5 x6 x77 6 4 1 0 0 0 101 0 0 0 1 0 0 10 1 0 0 0 1 0 10 0 1 0 0 0 1 111 8 5 0 0 0 0 0
Di�érentes résolutions
Di�érentes résolutionsSolution exa te par ré ursivité
Di�érentes résolutionsSolution exa te par ré ursivité◮ solution optimale : [[8, 6], [5, 4]] de valeur 13
Di�érentes résolutionsSolution exa te par ré ursivité◮ solution optimale : [[8, 6], [5, 4]] de valeur 13Solution appro hée par heuristique
Di�érentes résolutionsSolution exa te par ré ursivité◮ solution optimale : [[8, 6], [5, 4]] de valeur 13Solution appro hée par heuristique◮ solution appro hée : [[11, 7]] de valeur 11
Di�érentes résolutionsSolution exa te par ré ursivité◮ solution optimale : [[8, 6], [5, 4]] de valeur 13Solution appro hée par heuristique◮ solution appro hée : [[11, 7]] de valeur 11Solution optimale en re her he opérationnelle
Di�érentes résolutionsSolution exa te par ré ursivité◮ solution optimale : [[8, 6], [5, 4]] de valeur 13Solution appro hée par heuristique◮ solution appro hée : [[11, 7]] de valeur 11Solution optimale en re her he opérationnelle◮ solution optimale : (1, 12 , 0, 0, 0, 12 , 1) de valeur z = 15
Di�érentes résolutionsSolution exa te par ré ursivité◮ solution optimale : [[8, 6], [5, 4]] de valeur 13Solution appro hée par heuristique◮ solution appro hée : [[11, 7]] de valeur 11Solution optimale en re her he opérationnelle◮ solution optimale : (1, 12 , 0, 0, 0, 12 , 1) de valeur z = 15◮ solution non entière ...
Portées du problème du sa à dos
Portées du problème du sa à dosImportan e pratique
Portées du problème du sa à dosImportan e pratique◮ problème universel trouvant des appli ations dansd'innombrables domaines (industriels, é onomiques, et .)
Portées du problème du sa à dosImportan e pratique◮ problème universel trouvant des appli ations dansd'innombrables domaines (industriels, é onomiques, et .)Importan e théorique
Portées du problème du sa à dosImportan e pratique◮ problème universel trouvant des appli ations dansd'innombrables domaines (industriels, é onomiques, et .)Importan e théorique◮ problème NP- omplet
Portées du problème du sa à dosImportan e pratique◮ problème universel trouvant des appli ations dansd'innombrables domaines (industriels, é onomiques, et .)Importan e théorique◮ problème NP- omplet◮ en lien dire t ave la onje ture P = NP.