Optimisation Combinatoire : Programmation Linéaire et Algorithmes
Optimisation linéaire
description
Transcript of Optimisation linéaire
![Page 1: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/1.jpg)
Optimisation linéaire
Recherche opérationnelleGC-SIE
![Page 2: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/2.jpg)
Algorithme du simplexe
![Page 3: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/3.jpg)
Algorithme du simplexe
Michel Bierlaire 3
Rappel Si un problème de programmation
linéaire en forme standard possède une solution optimale, alors il existe une solution de base admissible qui soit optimale.
Méthode du simplexe : passer d’une solution de base admissible à l’autre, en réduisant le coût.
![Page 4: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/4.jpg)
Algorithme du simplexe
Michel Bierlaire 4
Problème
avec– A matrice m lignes n colonnes– lignes de A linéairement indépendantes– On note P = {x ¦ Ax = b, x 0}
Problème en forme standard
![Page 5: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/5.jpg)
Algorithme du simplexe
Michel Bierlaire 5
Direction admissible Idée de l’algorithme:
– Soit x0 une solution de base admissible– Pour k=0,…. faire
Trouver xk+1 sol. de base adm. voisinetelle que cTxk+1 < cTxk
– Jusqu’à ce qu’aucune sol. de base adm. voisine n’améliore l’objectif.
On trouve alors un minimum local En programmation linéaire,
minimum local = minimum global.
![Page 6: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/6.jpg)
Algorithme du simplexe
Michel Bierlaire 6
Direction admissible Soit x P. On va se déplacer le
long d’une direction d IRn. d doit nous maintenir dans P Définition :
– Soit x un élément d’un polyèdre P. Un vecteur d IRn est appelé direction admissible en x s’il existe un scalaire positif tel que
x + d P
![Page 7: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/7.jpg)
Algorithme du simplexe
Michel Bierlaire 7
Direction admissible
direction admissible
direction admissible
direction non admissible
toutes les directions sont admissibles
![Page 8: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/8.jpg)
Algorithme du simplexe
Michel Bierlaire 8
Direction admissible Soit x une solution de base
admissible Soient B(1),…,B(m) les indices des
variables de base Soit B=[AB(1)… AB(m)] la matrice de
base associée xi = 0 pour toute variable hors base xB=(xB(1),…,xB(m)) = B-1 b
![Page 9: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/9.jpg)
Algorithme du simplexe
Michel Bierlaire 9
Direction admissibleComment déterminer x+d ? Choisir une variable j hors base
(qui vaut 0) Augmenter sa valeur jusqu’à ,
tout en gardant les autres variables hors base à zéro. Donc :
– dj = 1– di = 0, i j, i indice hors base
![Page 10: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/10.jpg)
Algorithme du simplexe
Michel Bierlaire 10
Direction admissible Il faut rester admissible :
A(x + d) = bAx + Ad = b
x est admissible, et donc Ax = b Pour que x + d soit admissible, il
faut que Ad = 0
![Page 11: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/11.jpg)
Algorithme du simplexe
Michel Bierlaire 11
Direction admissible
![Page 12: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/12.jpg)
Algorithme du simplexe
Michel Bierlaire 12
Direction admissible Nous obtenons:
dB = - B-1 Aj La direction d ainsi obtenue est appelée
jième direction de base Elle garantit que les contraintes
d’égalité seront vérifiées lorsque l’on s’éloigne de x le long de d.
Qu’en est-il des contraintes de non négativité ?
![Page 13: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/13.jpg)
Algorithme du simplexe
Michel Bierlaire 13
Direction admissible Variables hors-base:
– xj était nulle et devient positive – xi, ij, restent à zéro
Variables de base.– Si x est une solution de base admissible
non dégénérée, alors xB > 0.Lorsque est suffisamment petit
xB + dB 0
![Page 14: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/14.jpg)
Algorithme du simplexe
Michel Bierlaire 14
Direction admissible Variables de base.
– Si x est une solution de base admissible dégénérée, alors d n’est pas toujours une direction admissible.
– C’est le cas lorsque qu’une variable de base xi = 0 et que la composante correspondante di de la direction est négative.
Si x est une solution de base admissible non dégénérée, la jième direction de base en x est
admissible, pour tout j indice de base.
![Page 15: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/15.jpg)
Algorithme du simplexe
Michel Bierlaire 15
Conditions d’optimalité Quels sont les impacts sur la
fonction objectif ? cT(x + d) = cTx + cTd cTd : taux de modification du coût
le long de d
( ) ( )1 1
n mT T
i i B i B i j B B ji i
c d c d c d c c d c
![Page 16: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/16.jpg)
Algorithme du simplexe
Michel Bierlaire 16
Conditions d’optimalité Comme dB = - B-1 Aj, on obtient
cTd = cj - cTB B-1 Aj
Interprétation intuitive :– en augmentant xj, cela coûte cj– - cT
B B-1 Aj est le prix à payer pour vérifier Ax=b.Définition : Soit x une solution de base, soit B la matrice de
base associée, et cB le vecteur de coût pour les variables de base. Pour chaque j, le cout réduit est défini par
cj = cj - cTB B-1 Aj
![Page 17: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/17.jpg)
Algorithme du simplexe
Michel Bierlaire 17
Conditions d’optimalitéNote : le coût réduit a été introduit pour
les variables hors base. il est défini pour toutes les
variables. que vaut-il pour les variables de
base ?
![Page 18: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/18.jpg)
Algorithme du simplexe
Michel Bierlaire 18
Conditions d’optimalité Soit B(i) indice d’une variable en base. Le coût réduit est cB(i) - cT
B B-1 AB(i) B = [AB(1) … AB(m)] B-1 [AB(1) … AB(m)] = I B-1 AB(i) = ei (iième colonne de I) cB(i) = cB(i) - cT
B B-1 AB(i)
= cB(i) - cTBei
= cB(i) - cB(i)= 0Le coût réduit des variables de base est nul
![Page 19: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/19.jpg)
Algorithme du simplexe
Michel Bierlaire 19
Conditions d’optimalitéThéorème :Considérons une solution de base
admissible x, associée à une matrice de base B. Soit c le vecteur de coûts réduits correspondant.
1. Si c 0, alors x est optimal2. Si x est optimal et non dégénérée,
alors c 0.
![Page 20: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/20.jpg)
Algorithme du simplexe
Michel Bierlaire 20
Développement de la méthode du simplexe Supposons qu’aucune solution de
base admissible ne soit dégénérée. Nous sommes à une solution de
base admissible x Les coûts réduits cj ont été calculés
pour les variables hors-base. S’ils sont tous positifs, x est
solution optimale. On arrête.
![Page 21: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/21.jpg)
Algorithme du simplexe
Michel Bierlaire 21
Développement de la méthode du simplexe Sinon, il existe une variable hors
base xj dont le coût réduit cj est négatif.
La jième direction de base est donc une direction admissible le long de laquelle le coût diminue.
La variable j devient positive. On dit qu’elle entre dans la base.
![Page 22: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/22.jpg)
Algorithme du simplexe
Michel Bierlaire 22
Développement de la méthode du simplexe On veut aller le plus loin possible le long
de d, en restant admissible. On cherche * tel que
* = max { 0 ¦ x+d P} Comment calculer * ? Comme d est admissible, la seule
manière de « quitter » P est lorsqu’une variable devient négative.
![Page 23: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/23.jpg)
Algorithme du simplexe
Michel Bierlaire 23
Développement de la méthode du simplexe Si d 0, alors x + d 0 pour tout .
– plus est grand, plus le coût diminue * = +– le problème est non borné
S’il existe i tel que di < 0, la contraintexi + di 0
devient -xi / di
* doit vérifier toutes les contraintes*= min{i ¦ di<0}(-xi/di)
![Page 24: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/24.jpg)
Algorithme du simplexe
Michel Bierlaire 24
Développement de la méthode du simplexe
x1
x2
d
x
x+2d
x+1d
*=1
![Page 25: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/25.jpg)
Algorithme du simplexe
Michel Bierlaire 25
Développement de la méthode du simplexeNotes : Si xi est une variable hors base,
di 0 (car di=0 ou di = 1) Il suffit donc de regarder les variables de
base*= min{i =1,…,m¦ dB(i)<0}(-xB(i)/dB(i))
Comme x est non dégénéré, xB(i) > 0 pour tout i=1,…m. Et donc, * > 0.
![Page 26: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/26.jpg)
Algorithme du simplexe
Michel Bierlaire 26
Exemple
![Page 27: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/27.jpg)
Algorithme du simplexe
Michel Bierlaire 27
Exemple Base : B(1)=1 B(2)=2
![Page 28: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/28.jpg)
Algorithme du simplexe
Michel Bierlaire 28
Exemple Calcul des coûts réduits Uniquement pour les variables hors
base (x3 et x4)
Négatif. La 3ième direction de base réduit le coût.
![Page 29: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/29.jpg)
Algorithme du simplexe
Michel Bierlaire 29
Exemple3ième direction de base: d3 = 1 d4 = 0
![Page 30: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/30.jpg)
Algorithme du simplexe
Michel Bierlaire 30
Exemple
1 = -x1/d1=-1/(-3/2)=2/3
![Page 31: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/31.jpg)
Algorithme du simplexe
Michel Bierlaire 31
ExempleNotes : Nouvelle solution de base admissible x3 remplace x1 dans la base A2 et A3 correspondent aux variables
non nulles Base:
![Page 32: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/32.jpg)
Algorithme du simplexe
Michel Bierlaire 32
Développement de la méthode du simplexe Si d est la jième direction de base Si k est l’indice tel que
*= -xB(k)/dB(k)=min{i =1,…,m¦ dB(i)<0}(-xB(i)/dB(i))
On dit que – xj entre dans la base– xB(k) sort de la base
![Page 33: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/33.jpg)
Algorithme du simplexe
Michel Bierlaire 33
Développement de la méthode du simplexe
Théorème : Les colonnes AB(i), ik, et Aj sont
linéairement indépendantes, et donc B est une matrice de base.
Le vecteur y=x+ *d est une solution de base admissible associée à B.
![Page 34: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/34.jpg)
Algorithme du simplexe
Michel Bierlaire 34
Développement de la méthode du simplexeUne itération de la méthode du simplexe :1. Soit une base B=[AB(1),…,AB(m)] et x une
solution de base admissible associée à B.
2. Calculer les coûts réduits pour chaque indice j hors base:
cj = cj - cTB B-1 Aj.
S’ils sont tous non négatifs, la solution courante est optimale. STOP.
![Page 35: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/35.jpg)
Algorithme du simplexe
Michel Bierlaire 35
Développement de la méthode du simplexe3. Choisir j tel que cj < 0, et
calculer dB = -B-1 Aj.
Si aucune composante de dB n’est négative, alors le coût optimal est infini. STOP.
4. Calculer *= -xB(k)/dB(k)=
min{i =1,…,m¦ dB(i)<0}(-xB(i)/dB(i))
![Page 36: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/36.jpg)
Algorithme du simplexe
Michel Bierlaire 36
Développement de la méthode du simplexe5. Former une nouvelle base en
remplaçant AB(k) par Aj.Si y est la nouvelle solution de base admissible, les valeurs des nouvelles variables de base sont
– yj = *– yB(i) = xB(i) + * dB(i), ik.
![Page 37: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/37.jpg)
Algorithme du simplexe
Michel Bierlaire 37
Développement de la méthode du simplexeThéorème :Supposons que l’ensemble admissible est
non vide, et que chaque solution de base admissible est non dégénérée. Alors, la méthode du simplexe se termine après un nombre fini d’itérations. A la fin, on obtient
soit une solution optimale soit une direction d telle que Ad=0, d0
et cTd < 0. Le coût optimal est alors -.
![Page 38: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/38.jpg)
Algorithme du simplexe
Michel Bierlaire 38
Développement de la méthode du simplexeNotes : Que se passe-t-il si l’algorithme est utilisé en
présence de solutions de base admissibles dégénérées ?
1. Si la solution de base admissible courante x est dégénérée, il se peut que * soit égal à zéro. C’est le cas si une variable de base xi = 0 et que la composante correspondante di < 0.Cela n’empêche cependant pas de définir une nouvelle base, même si la solution de base admissible n’est pas modifiée.
![Page 39: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/39.jpg)
Algorithme du simplexe
Michel Bierlaire 39
Développement de la méthode du simplexe2. Même si * > 0, il se peut que plus
d’une variables de base deviennent zéro. La nouvelle solution de base admissible sera donc dégénérée.
Il peut être utile de changer de base sans changer la solution de base admissible.
Mais il faut éviter de cycler.
![Page 40: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/40.jpg)
Algorithme du simplexe
Michel Bierlaire 40
Développement de la méthode du simplexe Exemple :
B(1)=5, B(2)=6, B(3)=7B-1 = B = IxB=B-1b=b
cB
![Page 41: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/41.jpg)
Algorithme du simplexe
Michel Bierlaire 41
Développement de la méthode du simplexe Coût réduit pour j = 1.
La variable x1 va rentrer en base.
![Page 42: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/42.jpg)
Algorithme du simplexe
Michel Bierlaire 42
Développement de la méthode du simplexe Direction :
*=0
![Page 43: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/43.jpg)
Algorithme du simplexe
Michel Bierlaire 43
Développement de la méthode du simplexeNote : Etape 3: Choisir j tel que cj < 0. L’algorithme ne spécifie pas quelle
variable choisir pour rentrer dans la base. Plusieurs règles existent. Retenons la règle de Bland :Parmi les j tels que cj < 0, choisir l’indice le
plus petit
![Page 44: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/44.jpg)
Algorithme du simplexe
Michel Bierlaire 44
Tableau du simplexe Il y a plusieurs manières d’implémenter
l’algorithme du simplexe. La méthode du tableau est l’une des plus efficaces.
Idée : Maintenir en permanence :
B-1[A ¦ b] = [B-1A1 … B-1An ¦ B-1b] Cette matrice s’appelle le tableau du simplexe La dernière colonne contient les valeurs des
variables en base. Les autres colonnes permettent de calculer cj et dB
![Page 45: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/45.jpg)
Algorithme du simplexe
Michel Bierlaire 45
Tableau du simplexe Exemple :
![Page 46: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/46.jpg)
Algorithme du simplexe
Michel Bierlaire 46
Tableau du simplexe
B(1)=4, B(2)=5, B(3)=6
B=B-1=I
![Page 47: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/47.jpg)
Algorithme du simplexe
Michel Bierlaire 47
Tableau du simplexe
B-1A B-1b
![Page 48: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/48.jpg)
Algorithme du simplexe
Michel Bierlaire 48
Tableau du simplexeDéfinitions :Lors d’une itération du simplexe : Si j est l’indice de la variable qui entre en
base, la colonne B-1Aj est appelée colonne du pivot.
Si la variable de base B(k) sort de la base, la ligne k du tableau est appelée ligne du pivot.
L’élément qui se trouve sur la ligne du pivot et la colonne du pivot est appelé le pivot.
![Page 49: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/49.jpg)
Algorithme du simplexe
Michel Bierlaire 49
Tableau du simplexeNotes : Pour les variables en base :
B-1 AB(i) = eiSi i est l’indice d’une variable en base, la colonne B(i) du tableau est ei. Elle contient uniquement des zéros, sauf en ligne i dont l’élément est 1.
![Page 50: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/50.jpg)
Algorithme du simplexe
Michel Bierlaire 50
Tableau du simplexe
B-1A B-1b
B(1)=4, B(2)=5, B(3)=6
![Page 51: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/51.jpg)
Algorithme du simplexe
Michel Bierlaire 51
Tableau du simplexe Lecture du tableau :
= x5
= x4
= x6
![Page 52: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/52.jpg)
Algorithme du simplexe
Michel Bierlaire 52
Tableau du simplexe On augmente le tableau avec une
ligne relative aux coûts :[cT – cT
BB-1A ¦ -cTBB-1b]
-cTBB-1b = -cT
BxB = -cTx - fonction objectif
cT – cTBB-1A
coûts réduits
![Page 53: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/53.jpg)
Algorithme du simplexe
Michel Bierlaire 53
Tableau du simplexe Le tableau complet sera donc
B-1A B-1bcT – cT
BB-1A -cTBB-1b
![Page 54: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/54.jpg)
Algorithme du simplexe
Michel Bierlaire 54
Tableau du simplexe
B-1A B-1b
cT – cTBB-1A -cT
BB-1b
![Page 55: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/55.jpg)
Algorithme du simplexe
Michel Bierlaire 55
Tableau du simplexeAppliquons l’algorithme1. Solution de base admissible :
B(1)=4, B(2)=5, B(3)=6(0,0,0,20,20,20)
2. Coûts réduits: dernière ligne du tableau
3. Choisir un coût réduit négatif c1 = -10, c2= -12, c3=-12 Règle de Bland: j = 1 -dB = B-1Aj = colonne j = (1 2 2)T
![Page 56: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/56.jpg)
Algorithme du simplexe
Michel Bierlaire 56
Tableau du simplexe4. Calcul de *
1=20/12=20/23=20/2
-dB xB*=10k=2
![Page 57: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/57.jpg)
Algorithme du simplexe
Michel Bierlaire 57
Tableau du simplexe5. Former une nouvelle base Ancien tableau B-1[A ¦ b] Nouveau tableau B-1[A ¦ b] Idée : trouver une matrice Q telle
que -1 -1QB =B-1QB B =I
![Page 58: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/58.jpg)
Algorithme du simplexe
Michel Bierlaire 58
Tableau du simplexeDéfinition : Soit une matrice C. L’opération
consistant à ajouter un multiple d’une ligne à cette même ligne ou à une autre ligne est appelée une opération élémentaire de ligne.
Cela revient à pré-multiplier C par une matrice carrée Q, construite de manière adéquate.
![Page 59: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/59.jpg)
Algorithme du simplexe
Michel Bierlaire 59
Tableau du simplexe
Multiplier la 3ième ligne par 2 et l’ajouter à la première
![Page 60: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/60.jpg)
Algorithme du simplexe
Michel Bierlaire 60
Tableau du simplexe D’une manière générale,
– multiplier la ligne j par – et l’ajouter à la ligne i j
revient à pré-multiplier par Q = I + Dij
où Dij contient uniquement des 0, sauf la ligne i, colonne j, qui contient .
Q est inversible Une suite d’opérations élémentaires de
ligne revient donc à prémultiplier par une matrice inversible.
![Page 61: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/61.jpg)
Algorithme du simplexe
Michel Bierlaire 61
Tableau du simplexe B = [AB(1),…,AB(k-1),AB(k),AB(k+1),…,AB(m)] B = [AB(1),…,AB(k-1),Aj,AB(k+1),…,AB(m)] B-1AB(i) = ei B-1B = [e1,…,ek-1,B-1Aj,ek+1,…,em] Si u = B-1Aj, on a
![Page 62: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/62.jpg)
Algorithme du simplexe
Michel Bierlaire 62
Tableau du simplexe Comment transformer cette matrice en
l’identité ? Utilisons des opérations élémentaires de
ligne.1. Pour tout i k, on ajoute la kième ligne
multipliée par –ui/uk2. On divise la kième ligne par uk Cela revient à prémultiplier par une
matrice Q QB-1B = I et donc QB-1=B-1
![Page 63: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/63.jpg)
Algorithme du simplexe
Michel Bierlaire 63
Tableau du simplexeSi on applique les opérations élémentaires de
ligne suivantes à la matrice B-1, on obtient la matrice B-1 :
1. Pour tout i k, on ajoute la kième ligne multipliée par –ui/uk
2. On divise la kième ligne par uk
Ces opérations sont donc appliquées au tableau du simplexe.
Cela s’appelle un pivotage.
![Page 64: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/64.jpg)
Algorithme du simplexe
Michel Bierlaire 64
Tableau du simplexeReprenons l’exemple :
– B(1)=4, B(2)=5, B(3)=6– xT = (0, 0, 0, 20, 20, 20) * = 10– dT = (1, 0, 0, -1, -2, -2)– yT= (x + *d)T = (10, 0, 0, 10, 0, 0)– x1 rentre en base– x5 sort de base– Attention : y est sol. de base adm. dégénérée.
![Page 65: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/65.jpg)
Algorithme du simplexe
Michel Bierlaire 65
Tableau du simplexe
![Page 66: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/66.jpg)
Algorithme du simplexe
Michel Bierlaire 66
Tableau du simplexeDernière ligne du tableau Avant pivotage
[-cBTB-1b ¦ cT-cB
TB-1A][0 ¦ cT] – cB
TB-1 [b ¦ A] Après pivotage, on peut montrer :
[0 ¦ cT] – cBTB-1 [b ¦ A]
![Page 67: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/67.jpg)
Algorithme du simplexe
Michel Bierlaire 67
Tableau du simplexeAlgorithme1. Soit une matrice de base B, une solution
de base admissible x et le tableau du simplexe associés.
2. Examiner les coûts réduits dans la dernière ligne du tableau. S’ils sont tous non négatifs, la solution de base admissible courante est optimale. STOP.Sinon, choisir j tel que cj < 0
![Page 68: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/68.jpg)
Algorithme du simplexe
Michel Bierlaire 68
Tableau du simplexe3. Soit u=B-1Aj, la jième colonne du tableau.
Si aucune composante de u n’est positive, le coût optimal est -. STOP.
4. Pour chaque i tel que ui > 0, calculer xB(i)/ui. Soit k l’indice de la ligne correspondant au rapport le plus petit. La colonne AB(k) sort de la base. La colonne Aj rentre en base.
5. Effectuer des opérations élémentaires de ligne pour que la colonne du pivot ne contienne que des zéros, sauf à l’emplacement du pivot, qui doit être 1.
![Page 69: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/69.jpg)
Algorithme du simplexe
Michel Bierlaire 69
Tableau du simplexe
1=20/12=20/23=20/2
1=102=10
Attention : Bland n’est pas respecté iciDégéné-rescence
![Page 70: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/70.jpg)
Algorithme du simplexe
Michel Bierlaire 70
Tableau du simplexe
1=20/3
3=4
1=102=10
![Page 71: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/71.jpg)
Algorithme du simplexe
Michel Bierlaire 71
Tableau du simplexe1=20/3
3=4
![Page 72: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/72.jpg)
Algorithme du simplexe
Michel Bierlaire 72
Tableau du simplexe Lecture du tableau :
= x1
= x3
= x2
![Page 73: Optimisation linéaire](https://reader038.fdocuments.fr/reader038/viewer/2022110105/56815677550346895dc42b07/html5/thumbnails/73.jpg)
Algorithme du simplexe
Michel Bierlaire 73
Tableau du simplexe Lorsque certaines solutions de base
admissibles sont dégénérées, l’algorithme peut cycler. Pour l’empêcher, régle de Bland.
Variable entrant en base: choisir l’indice j le plus petit tel que le coût réduit est négatif
Variable sortant de base : en cas d’égalité pour *, choisir la variable d’indice minimale.