Programmation Linéaire 2

Transcription

Programmation Linéaire 2
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Programmation Linéaire 2 - Cours 1
P. Pesneau
[email protected]
Université Bordeaux 1
Bât A33 - Bur 256
D’après Linear Programming, Vasek Chvatal - McGraw-Hill, 1983
et les notes de cours de L.A. Wolsey et F. Vanderbeck
P. Pesneau [email protected]
Programmation Linéaire 2 - Cours 1
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Convention d’indexation des composantes de y
Primal
Dual
Variables originales
xO = (x1 , . . . , xn )
↔
Variables d’écart
yO = (y1 , . . . , yn )
Variables d’écart
xE = (xn+1 , . . . , xn+m )
↔
Variables originales
yE = (yn+1 , . . . , yn+m )
Dictionnaires final :
z=
s.c.
cB B −1 b + (cN − cB B −1 N)xN
xB = B −1 b − B −1 NxN
xB , xN ≥ 0
Solution z ∗ = cB B −1 b = cx ∗ = y ∗ b
∗ , . . . , y∗
−1
avec y ∗ = yE∗ = (yn+1
n+m ) = −c̄E = cB B
P. Pesneau [email protected]
Programmation Linéaire 2 - Cours 1
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Simplex révisé
Idée : ne calculer que ce qui est nécessaire. Ne pas calculer les
dictionnaires dans leur totalité.
Exemple :
c = (19, 13, 12, 17, 0, 0, 0)



225
3 2 1 2 1 0 0
b =  117 
A= 1 1 1 1 0 1 0 
420
4 3 3 4 0 0 1

Avec B = {1, 3, 7}, N = {2, 4, 5, 6},




3 1 0
54
xB =  63  , B =  1 1 0  ,
4 3 1
15
P. Pesneau [email protected]

2 2 1 0
N= 1 1 0 1 
3 4 0 0

Programmation Linéaire 2 - Cours 1
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Simplex révisé
Trouver une variable entrante k de coût réduit positif :
Calculer c̄N = cN − cB B −1 N :
Calculer yE = cB B −1 en résolvant le système yE B = cB .


3 1 0
(y5 y6 y7 )  1 1 0  = (19 12 0)
4 3 1
0).
On obtient yE = ( 27 17
2
Calculer c̄N = cN − yE N
(13
17 0 0) − ( 72
On obtient c̄N = (− 52
x4 entre en base.
3
2
P. Pesneau [email protected]
17
2
−
7
2

2 2 1 0
0)  1 1 0 1 .
3 4 0 0

−
17
2 ).
Programmation Linéaire 2 - Cours 1
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Simplex révisé
Trouver une variable sortante s en augmentant la variable entrante
jusqu’à la valeur t pour laquelle une variable de B s’annule :
max {t ≥ 0 : B −1 b − B −1 N.,k t ≥ 0}.
Calculer d = B −1 N.,k en résolvant le système Bd = N.,k
  


2
d1
3 1 0
 1 1 0   d2  =  1 
d3
4
4 3 1
1
1
1
T
Ce qui donne d = ( 2 2 2 ).
b̄ = B −1 b, la valeur courante de xB est disponible. Calculer
max{t ≥ 0 : tdi ≤ b̄i , i = 1, . . . , m}
= min{ b̄dii , i = 1, . . . , m : di > 0}
63
15
54
, 1/2
, 1/2
}
= min{ 1/2
On obtient tmax = 30 pour s = 7.
x7 sort de la base.
P. Pesneau [email protected]
Programmation Linéaire 2 - Cours 1
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Simplex révisé
Remettre à jour la solution de base.
B = (B \ {s}) ∪ {k}
N = (N \ {k}) ∪ {s}
On obtient la solution associée en posant :
xk = tmax
xs = 0
xi = xi − tmax di pour i ∈ B \ {s}.
Il faut encore remettre à jour B et N.
B
{4} = {1, 
3,
 = ({1, 3,7} \ {7}) ∪
3 1 2
39
xB =  48  , B =  1 1 1  , N = 
4 3 4
30

P. Pesneau [email protected]
4}

2 0 1 0
1 0 0 1 
3 1 0 0
Programmation Linéaire 2 - Cours 1
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Quelques remarques
L’ordre des colonnes de B n’a pas d’importance à partir du
moment ou il est cohérent avec l’ordre des composants de B.
La méthode du simplex révisé demande nettement moins de
travail que celle du simplex qui calcule tous les coéfficients du
nouveau dictionnaire.
En pratique, la matrice B est factorisée, B = LU, pour une
plus grande efficacité de résolution des systèmes yE B = cB et
Bd = N.,k .
P. Pesneau [email protected]
Programmation Linéaire 2 - Cours 1
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Algorithme du simplex révisé
Soit B, xB et B une base initiale et la solution associée.
1
2
3
4
5
Résoudre yE B = cB .
Choisir une variable k ∈ N telle que
c̄k = ck − yE A.,k > 0.
S’il n’en existe pas, la solution est optimale, STOP.
Résoudre Bd = A.,k .
Trouver tmax = max{t ≥ 0 : xB − td ≥ 0}.
S’il n’en existe pas, le problème est non-borné, STOP.
Sinon, on choisi une variable s qui tombe à zéro dans
xB − tmax d.
Poser xB = xB − tmax d et remplacer xs par xk = tmax dans xB
Poser B = (B \ {s}) ∪ {k} et remplacer la colonne s de B par
A.,k .
Retourner au pas 1.
P. Pesneau [email protected]
Programmation Linéaire 2 - Cours 1
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Interprétation économique d’une itération
1
Résoudre yE B = cB
Trouver un système de valeur (prix) des ressources qui
“justifie” (i.e., explique) complètement le profit des activités
retenues xB . Trouver des valeurs duales qui assurent que les
conditions de complémentarité sont remplies.
2
Choisir une variable k ∈ N telle que :
c̄k = (ck − yE A.,k ) > 0
Voir si une activité “non-basic” ne définirait pas un meilleur
usage de nos ressources : apporterait un profit plus grand que
la valeur des ressources consommées.
P. Pesneau [email protected]
Programmation Linéaire 2 - Cours 1
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Interprétation économique d’une itération
3
Résoudre Bd = A.,k
Calculer une combinaison d d’activités de base auxquelles on
pourrait substituer 1 unité de l’activité entrante k pour une
même consommation en ressource.
4
Trouver tmax = max{t ≥ 0 : xB − td ≥ 0}.
Puisque cette substitution est profitable, calculer le quantité
maximum de l’activité k qu’on peut substituer à la
combinaison d.
5
Poser xB = xB − tmax d et xk = tmax dans xB .
Implémenter cette substitution maximum.
P. Pesneau [email protected]
Programmation Linéaire 2 - Cours 1
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Programme linéaire avec varibales bornées
Considérons le programme linéaire suivant :
Pn
max
cx
Pn j=1 j j
s.c.
≤ bi i = 1, . . . , m
j=1 ai,j xj
lj ≤ xj ≤ uj j = 1, . . . , n
Mettre ce problème sous la forme
Pn
max
cx
Pn j=1 j j
s.c.
a
≤ bi
j=1 i,j xj
xj ≤ u j
xj ≥ l j
i = 1, . . . , m
j = 1, . . . , n
j = 1, . . . , n
implique de travailler avec une base de taille m + 2n.
Question : peut-on adapter l’algorithme du simplex afin de tenir
compte automatiquement des bornes sur les variables ?
P. Pesneau [email protected]
Programmation Linéaire 2 - Cours 1
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Programme linéaire avec varibales bornées
Jusqu’à maintenant :
variables 0 ≤ xj ≤ ∞
variables hors-bases fixées à 0 (leur borne inférieure)
à chaque itération du simplexe, on garantie que chaque
variable reste ≥ 0 (plus grande que leur borne inférieure).
Adaptation au cas général :
variables bornées : lj ≤ xj ≤ uj
Si lj = −∞ et uj = ∞, alors xj variable libre
Si lj = uj ∈ IR , alors xj variable fixée (on remplace xj par sa
valeur dans toutes les expressions linéaires).
Si lj < uj , alors xj variable restreinte (bornée)
Les variables hors-base restreintes seront fixées à l’une de
leurs bornes.
A chaque itération, on va s’assurer que chacune des variables
reste dans son domaine de définition.
P. Pesneau [email protected]
Programmation Linéaire 2 - Cours 1
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Généralisation de la notion de base
Considérons le programme linéaire suivant (après ajout des
variables d’écart) : P ′
n
c j xj
max
Pn′j=1
= bi i = 1, . . . , m
s.c.
j=1 ai,j xj
lj ≤ xj ≤ uj j = 1, . . . , n′
Une solution de base sera définie en partitionnant l’ensemble des
variables en
m variables de base B,
n′ − m variables hors-base N = {L, U , F},
tel que
la sous-matrice B associée soit non-singulière (inversible)
chaque variable bornée de N prend comme valeur
soit lj → j ∈ L,
soit uj → j ∈ U
les variables libres de N ont une valeur libre → j ∈ F.
P. Pesneau [email protected]
Programmation Linéaire 2 - Cours 1
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Généralisation de la notion de base
Une base est donc définie par une partition (B, L, U , F).
La solution de base associée x ∗ (si F 6= ∅, elle n’est pas unique)
est réalisable si
l ≤ x ∗ ≤ u.
Prenons un dictionnaire pour une base (B, L, U , F) :
z=
s.c.
cB B −1 b + (cN − cB B −1 N)xN
xB = B −1 b − B −1 NxN
xB , xN ≥ 0
Noter que la solution de base n’est plus donnée uniquement par
B −1 b. Il faut maintenant prendre en compte que les variables
hors-base peuvent être fixées à des bornes 6= 0.
P. Pesneau [email protected]
Programmation Linéaire 2 - Cours 1
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Un exemple
Considérons le programme linéaire suivant :
c =[
2
1
−2
−2
3
2
3
−4
0
−2
−3
3
]
A= [
3
1
1
0
5
9
6
5
9
8
4
1
3
2
4
7
7
8
6
7
4
9
5
1
] b= [
l =[
u=[
−5
+
−
3
−4
−2
−2
3
2
5
0
1
0
+
3
+
−
0
−
5
−
+
−
+
]
]
xa = [
xb = [
1
2
0
2
−2
−2
3
3
2
2
0
0
0
0
3
3
0
0
5
5
−1
−1
1
0
]
]
c̄ = (
0
0
2
−3
2
−1
2
−1
1
−1
2
−1
)
72
62
x a et x b sont deux solutions associées à la base B = {1, 2} et
N = {3, . . . , 12} avec
P. Pesneau [email protected]
L = {5, 6, 7, 8},
U = {3, 4, 9, 10},
F = {11, 12}.
Programmation Linéaire 2 - Cours 1
]
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Un exemple
Remarque : comme B = {1, 2}, on a :
B=
3
1
1
0
, B −1 =
0
1
1
−3
1
1
2
−3
et B −1 b =
62
−14
6= xB
En effet :
B −1 N =
9
−22
5
−9
8
−15
7
−17
8
−17
7
−15
9
−23
Noter que
xB = B −1 b − B −1 NxN
= B −1 b − B −1 NL xL − B −1 NU xU − B −1 NF xF
où
les variables de L sont fixées à leur borne inférieure,
les variables de U sont fixées à leur borne supérieure,
les variables de F sont fixées à une valeur arbitraire.
P. Pesneau [email protected]
Programmation Linéaire 2 - Cours 1
1
2
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Un exemple
c=[
A=[
l =[
u=[
xa = [
2
3
1
−5
+
1
1
1
0
−
3
0
−2
5
9
−4
−2
−2
−2
6
5
−2
3
3
3
9
8
2
5
2
2
4
1
0
1
0
3
3
2
0
+
0
−4
4
7
3
+
3
0
7
8
−
0
0
−2
6
7
−
5
5
−3
4
9
−
+
−1
3
5
1
−
+
1
]
] b= [
72
62
]
]
]
Dans x a , pour x5 , on a x5 = 2 = l5 et c̄5 = 2. On peut faire entrer
x5 en base :
3 1
d1
9
d1
8
Bd = A.,5 ⇔
=
⇒
=
1 0
d2
8
d2
−15
Les contraintes sur l’augmentation de x5 sont
2 ≤ 2 + t ≤ 5,
d’où tmax =
1
5
−5 ≤ 1 − 8t,
15t ≤ 3
et x2 sort de la base.
P. Pesneau [email protected]
Programmation Linéaire 2 - Cours 1
]
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Un exemple
c=[
A=[
l =[
u=[
xa = [
2
3
1
−5
+
1
1
1
0
−
3
0
−2
5
9
−4
−2
−2
−2
6
5
−2
3
3
3
9
8
2
5
2
2
4
1
0
1
0
3
3
2
0
+
0
−4
4
7
3
+
3
0
7
8
−
0
0
−2
6
7
−
5
5
−3
4
9
−
+
−1
3
5
1
−
+
1
]
] b= [
72
62
]
]
]
Dans x a , pour x4 , on a x4 = 3 = u4 et c̄4 = −3. On peut faire
entrer x4 en base :
3 1
d1
6
d1
5
Bd = A.,4 ⇔
=
⇒
=
1 0
d2
5
d2
−9
Les contraintes sur l’augmentation de x4 sont
−2 ≤ 3 − t ≤ 3,
−5 ≤ 1 + 5t,
−9t ≤ 3
d’où tmax = 5 et x4 passe à sa borne inférieure.
P. Pesneau [email protected]
Programmation Linéaire 2 - Cours 1
]
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Simplex révisé pour un PL à variables bornées
(Phase II)
0
Commencer avec une solution de base réalisable x : B, B
1
Résoudre yE B = cB
2
Choisir une variable k ∈ N telle que :
soit xk < uk (k ∈ L ∪ F) et c̄k = (ck − yE A.,k ) > 0 ;
soit xk > lk (k ∈ U ∪ F) et c̄k = (ck − yE A.,k ) < 0.
S’il n’en existe pas, la solution est optimale, STOP.
3
Résoudre Bd = A.,k
P. Pesneau [email protected]
Programmation Linéaire 2 - Cours 1
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Simplex révisé pour un PL à variables bornées
(Phase II)
4
Si xk < uk (k ∈ L ∪ F), (cas 1 ci-dessus) définir
xk (t) = xk + t et xB (t) = xB − td.
Si xk > lk (k ∈ U ∪ F), (cas 2 ci-dessus) définir
xk (t) = xk − t et xB (t) = xB∗ + td.
Si lk ≤ xk (t) ≤ uk et lB ≤ xB (t) ≤ uB quand t → ∞, le
problème est non-borné, STOP.
Sinon chercher tmax satisfaisant ces contraintes.
Si une contrainte lB ≤ xB (t) ≤ uB est la plus serrée, alors la
variable correspondante s quitte la base.
Sinon B reste inchangé, mais la partition (L, U , F) de N
change.
P. Pesneau [email protected]
Programmation Linéaire 2 - Cours 1
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Simplex révisé pour un PL à variables bornées
(Phase II)
5
Poser xk = xk (tmax ) et xB = xB (tmax ).
Si B est inchangée, aller en 2.
Sinon, poser B = B \ {s} ∪ {k} et remplacer la colonne s de
B par A.,k . Aller en 1.
P. Pesneau [email protected]
Programmation Linéaire 2 - Cours 1
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Le simplex révisé pour un PL à variables bornées
(Phase I)
max
s.c.
Pn ′
c j xj
Pn′j=1
j=1 ai,j xj
l j ≤ xj
≤ bi
≤ uj
i = 1, . . . , m
j = 1, . . . , n′
Introduire des variables artificielles xn′ +i :
Pn ′
i = 1, . . . , m
j=1 ai,j xj + xn′ +i = bi
Poser au choix x̂j = lj ou x̂j = uj pour toutes variables bornées.
Poser les autres à zéro, x̂j = 0, pour toute variable libre j, et
P ′
x̂n′ +i = bi − nj=1 ai,j x̂j .
Si x̂n′ +i < 0, définir ln′ +i = −∞, un′ +i = 0 et cn′ +i = −1
Si x̂n′ +i > 0, définir ln′ +i = 0, un′ +i = ∞ et cn′ +i = 1
P. Pesneau [email protected]
Programmation Linéaire 2 - Cours 1
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Le simplex révisé pour un PL à variables bornées
(Phase I)
Résoudre le problème suivant
min
s.c.
Pn′ +m
j=n′ cj xj
a
x
j=1 i,j j + xn′ +i
l j ≤ xj
Pn ′
= bi
≤ uj
i = 1, . . . , m
j = 1, . . . , n′ + m
Si ce problème atteint son minimum en 0, alors le problème
original est réalisable et la base optimale du problème ci-dessus
donne une base réalisable pour le problème original.
Remettre l’objectif original et appliquer la phase II du simplex.
P. Pesneau [email protected]
Programmation Linéaire 2 - Cours 1
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Programme Linéaire Généralisé : Exemple du Bin
Packing
Problème : Soient m objets de taille wi pour i = 1, . . . , m.
Combien de groupes de taille W sont nécessaires pour caser tous
les objets.
Exemples : nombre minimum de camions pour les livraisons du
jour, nombre min de machines/personnes pour effectuer toutes les
tâches en 1 jour.
P. Pesneau [email protected]
Programmation Linéaire 2 - Cours 1
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Programme Linéaire Généralisé : Exemple du Bin
Packing
Formulation extensive :
xj = 1 si le remplissage j := {ai,j , i = 1, ..., m} est utilisé, avec
Pm
∀j
i=1 ai,j wi ≤ W
Min
s.c.
PJ
PJ
j=1 xj
j=1 ai,j xj
xj
=
∈
1
{0, 1}
i = 1, . . . , m
∀j
Question : Comment résoudre un LP avec énormément de
variables ?
On va générer les variables utiles au fur et à mesure : génération
de colonnes.
P. Pesneau [email protected]
Programmation Linéaire 2 - Cours 1
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Application numérique
W = 6, m = 5, w = (1, 2, 2, 3, 4)
Programme linéaire :






1
0
0
0
0
min x1 + x2 + x3 + x4 + x5

 
0 0 0 0
x1

 
1 0 0 0 
  x2  
 x3  ≥ 
0 1 0 0 

 
0 0 1 0   x4  
0 0 0 1
x5
1
1
1
1
1






Z (S) = 5, x = (1, 1, 1, 1, 1), y = (1, 1, 1, 1, 1).
Générer une variable (un remplissage) qui permette d’améliorer la
solution (coût réduit négatif).
P. Pesneau [email protected]
Programmation Linéaire 2 - Cours 1
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Application numérique
Générer une variable (un remplissage) qui permette d’améliorer la
solution (coût réduit négatif).
Trouver une variables x6 telle que
c̄6 = c6 − cB B −1 A.,6 < 0
⇔
c̄6 = 1 − yA.,6 < 0
Trouver un ensemble d’objet définissant un remplissage (A.,6 ) et
minimisant 1 − yA.,6 (⇔ maximisant yA.,6 ).
Sous problème de sac-à-dos :
max
a 1 + a 2 + a 3 + a4 + a 5
a1 + 2a2 + 2a3 + 3a4 + 4a5
ai
≤6
∈ {0, 1}
KNP(y) = 3, solution a = (1, 1, 1, 0, 0)
P. Pesneau [email protected]
Programmation Linéaire 2 - Cours 1
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Application numérique






1
0
0
0
0
min x1 + x2 + x3 + x4 + x5 + x6
 

x1
0 0 0 0 1
 .  
1 0 0 0 1 
  ..  
 

0 1 0 0 1 
 .  ≥ 
0 0 1 0 0   ..  
0 0 0 1 0
x6
1
1
1
1
1






Z (S) = 3, x = (0, 0, 0, 1, 1, 1), y = (0, 0, 1, 1, 1).
Sous problème de sac-à-dos :
max
a 3 + a 4 + a5
2a3 + 3a4 + 4a5
ai
≤6
∈ {0, 1}
KNP(y) = 2, solution a = (0, 0, 1, 1, 0)
P. Pesneau [email protected]
Programmation Linéaire 2 - Cours 1
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Application numérique






1
0
0
0
0
min x1 + x2 + x3 + x4 + x5 + x6 + x7
 

x1
0 0 0 0 1 0
 .  
1 0 0 0 1 0 
  ..  
 

0 1 0 0 1 1 
 .  ≥ 
0 0 1 0 0 1   ..  
0 0 0 1 0 0
x7
1
1
1
1
1






Z (S) = 3, x = (0, 0, 0, 1, 1, 1, 0), y = (0, 1, 0, 1, 1).
Sous problème de sac-à-dos :
max
a 2 + a 4 + a5
2a2 + 3a4 + 4a5
ai
≤6
∈ {0, 1}
KNP(y) = 2, solution a = (0, 1, 0, 1, 0)
P. Pesneau [email protected]
Programmation Linéaire 2 - Cours 1
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Application numérique






1
0
0
0
0
min x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8

 
x1
0 0 0 0 1 0 0
 .  
1 0 0 0 1 0 1 
  ..  

 
0 1 0 0 1 1 0 
 .  ≥ 
0 0 1 0 0 1 1   ..  
0 0 0 1 0 0 0
x8
1
1
1
1
1






Z (S) = 3, x = ( 21 , 0, 0, 0, 1, 12 , 12 , 21 ), y = (1, 0, 0, 1, 1).
Sous problème de sac-à-dos :
max
a1 + a4 + a5
a1 + 3a4 + 4a5
ai
≤6
∈ {0, 1}
KNP(y) = 2, solution a = (1, 0, 0, 0, 1)
P. Pesneau [email protected]
Programmation Linéaire 2 - Cours 1
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Application numérique






1
0
0
0
0
min x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9

 
x1
0 0 0 0 1 0 0 1
 .  
1 0 0 0 1 0 1 0 
  ..  

 
0 1 0 0 1 1 0 0 
 .  ≥ 
0 0 1 0 0 1 1 0   ..  
0 0 0 1 0 0 0 1
x9
1
1
1
1
1






Z (S) = 2.5, x = (0, 0, 0, 0, 0, 12 , 12 , 12 , 1), y = (0, 21 , 12 , 21 , 1).
Sous problème de sac-à-dos :
max 0.5a2 + 0.5a3 + 0.5a4 + a5
2a2 + 2a3 + 3a4 + 4a5
ai
≤6
∈ {0, 1}
KNP(y) = 1.5, solution a = (0, 1, 0, 0, 1)
P. Pesneau [email protected]
Programmation Linéaire 2 - Cours 1
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Application numérique






1
0
0
0
0
min x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10
 

x1
0 0 0 0 1 0 0 1 0
.
 

1 0 0 0 1 0 1 0 1 
  ..  
 

0 1 0 0 1 1 0 0 0 
 .  ≥ 
.


0 0 1 0 0 1 1 0 0
.  
0 0 0 1 0 0 0 1 1
x10
1
1
1
1
1






Z (S) = 2 + 13 , x = (0, 0, 0, 0, 0, 13 , 23 , 13 , 23 , 13 ), y = ( 31 , 13 , 31 , 23 , 23 ).
Sous problème de sac-à-dos :
max 31 a1 + 13 a2 + 31 a3 + 32 a4 + 32 a5
a1 + 2a2 + 2a3 + 3a4 + 4a5
ai
≤6
∈ {0, 1}
KNP(y) = 1 + 13 , solution a = (1, 1, 0, 1, 0)
P. Pesneau [email protected]
Programmation Linéaire 2 - Cours 1
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Application numérique






min x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 + x11
 

x1
1 0 0 0 0 1 0 0 1 0 1
1
.
 .   1
0 1 0 0 0 1 0 1 0 1 1 
 .  
 

0 0 1 0 0 1 1 0 0 0 0 
 .  ≥  1
.


0 0 0 1 0 0 1 1 0 0 1
.   1
0 0 0 0 1 0 0 0 1 1 0
1
x11






Z (S) = 2 + 41 , x = (0, 0, 0, 0, 0, 14 , 34 , 0, 21 , 12 , 41 ), y = ( 41 , 41 , 12 , 12 , 34 ).
Sous problème de sac-à-dos :
max 41 a1 + 14 a2 + 21 a3 + 21 a4 + 43 a5
a1 + 2a2 + 2a3 + 3a4 + 4a5
ai
≤6
∈ {0, 1}
KNP(y) = 1 + 13 , solution a = (0, 0, 1, 0, 1)
P. Pesneau [email protected]
Programmation Linéaire 2 - Cours 1
Rappel : le Simplex révisé
Simplex révisé avec variables bornées
Génération de colonnes / Bin Packing
Application numérique






min x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 + x11 + x12
 

x1
1
1 0 0 0 0 1 0 0 1 0 1 0
 .  
0 1 0 0 0 1 0 1 0 1 1 0 
  ..   1
 

0 0 1 0 0 1 1 0 0 0 0 1 
 .  ≥  1
0 0 0 1 0 0 1 1 0 0 1 0   ..   1
1
0 0 0 0 1 0 0 0 1 1 0 1
x12






Z (S) = 2, x = (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1), y = (0, 0, 0, 1, 1).
Sous problème de sac-à-dos :
max
a 4 + a5
3a4 + 4a5
ai
≤6
∈ {0, 1}
KNP(y) = 1, solution a = (0, 0, 0, 0, 1)
P. Pesneau [email protected]
Programmation Linéaire 2 - Cours 1