Chapitre 3 Algorithme du simplexe 3.1 Solution de base admissible P en forme standard. A = (a 1,...,a n ) Hypothèse : n m (plus de variables que d équations) et rg(a)=m (pas d équation inutile). Donc après rearrangement des vecteurs on peut écrire A = (a i 1,..., a im, a i m+1,...,a in ) avec les m premiers vecteurs indépendants c.a.d. A = B + N avec B(m, m) de rang m. D où Ax = b iff (B + N) ( xb x N ) = b ce qui donne x B = B 1 b + B 1 N( x N ) Definition 1 B est appelée une base et x B = B 1 b la solution de base associée à B Si x B 0 alors (x B, 0) est une solution admissible de P. Deux idées à retenir pour la suite : une solution de base admissible est un sommet du polyhèdre d éfini par les contraintes. Le simplexe va faire passer d une solution de base admissible à une autre qui améliore la fonction objectif. 3.2 Solution de base admissible et polytope des contraintes On considère que des polyhèdres situé dans l orthant positif (x i 0 pour i = 1,...,n). Les équations de définitions sont donc : des équations d hyperplans et les contraintes x i 0. 1
2 CHAPITRE 3. ALGORITHME DU SIMPLEXE Premier résultat : on suppose que Ax = b, x 0 avec rang(a) = m définit un ensemble borné. Alors c est un polytope de R n m. Deuxième résultat : x B est une solution de base admissible ssi x B correspond à un sommet du polytope associé. Le polytope associé à Ax = b x 0 donne x B = B 1 b + B 1 N( x N ) avec x B, x N 0, c.a.d. B 1 N(x N ) B 1 b x N 0 ce qui donne bien un polytope de R n m. Réciproquement, étant donné un polytope de R n m dans le premier orthant, ses équations de définition sont : d ou x l 0 pour l = 1,..., n m Σ l=n m l=1 a i,l x l b i pour i = 1,...,n. x k 0 pour k = 1,..., m Σ l=n m l=1 a i,l x l + x n = b i pour i = 1,...,n. B donnée, on associe à x le ˆx de R n m obtenu en ne gardant que les valeurs x i B. On admettra que si (P) est un polytope et (C) est le problème standard associé, alors 1. x solution de base admissible de (C) 2. ˆx le sommet correspondant est un sommet de (P) 3.3 Méthode de Gauss-Jordan 3.3.1 Principe du pivotage La méthode du pivot (Gauss-Jordan) pour résoudre un système d équation linéaire consiste à itérer les étapes suivantes : 1. à l étape p, choisir une variable x j et une ligne r tel que le coefficient a r,j soit non-nul 2. garder cette ligne après l avoir divisée par le coefficient a r,j (pour que le nouveau coefficient de x j soit 1) ligne r (ligne r)/a r,j 3. Ajouter cette ligne aux autres lignes après multiplication par le coefficient qui permet de faire disparaitre x j. ligne i ligne i a i,k /a r,j ligne r
3.3. MÉTHODE DE GAUSS-JORDAN 3 4. on réarrange les variables de manière à ce que x j soit la p ieme variable. En itérant et regroupant les variables correspondant aux pivots on obtient une matrice (I m, A ) avec I la matrice identité (m,m). Les variables qui correspondent à I m définissent une base. 3.3.2 Maintenir l admissibilité de la base Le principe du simplexe est d appliquer la méthode de pivotage sur une matrice qui est déjà de la forme (I m, A ) et telle que la base soit admissible. On verra comment on peut toujours se ramener à ce cas plus tard. Cela correspond à : a 1... a m a m+1... a n 1 0.. 0 0 1 0. 0..... A.... 0 0.. 0 1 ( xb x N ) = b 1.. b m et où b i 0 pour i = 1,...,m (sinon la base n est pas admissible). Forme tableau Les équations peuvent s écrire : x 1.... x m x m+1.. x n 1 0.. 0 0 b 1 0 1 0. 0 0 A....... =. 0 0.. 0 1 b m Ces équations définissent les m premières variables et on peut les écrire : x m+1.. x n x 1 b 1. =. A.. x m b m Les variables x 1,..., x m sont les variables de bases et les variables x m+1,..., x n sont les variables hors base. Pour avoir la base admissible, on met les variables hors bases égales à 0 et la valeur des variables de base se lit sur le tableau : x i = b i. La base est admissible ssi b i > 0. Par abus de language, on identifiera la base et ses variables de base. Le pivotage consiste à choisir une variable x j à faire entrer dans la base (donc choisir une colonne j) à choisir une variable à faire sortir de la base x r (donc choisir une ligne r) ce qui correspond à un pivot a r,j qui doit être non-nul. Le pivotage donne un tableau tel que :
4 CHAPITRE 3. ALGORITHME DU SIMPLEXE 1. ligne r ligne r/a r,j 2. ligne i ligne i + ligne r( a i,j /a r,j ) pour i r 3. les variables x j et x r sont échangées et la colonne j est remplacée par la colonne des coefficients multiplicateurs : 1/a r,j sur la ligne r et ( a i,j /a r,j ) sur les lignes i j. Maintien de l admissibilité de la base. On a une nouvelle base admissible si les nouveaux coefficients pour b sont 0. Ces coefficients sont : * b r /a r,j pour la ligne r * b i b r (a i,j /a r,j ) Si la base précédente est admissible la nouvelle l est ssi : a r,j > 0 et b i /a i,j b r /a r,j (pour les i tel que a i,j > 0.) 3.3.3 Amélioration de la fonction objectif On rajoute aux calculs précédents la fonction objectif. A = B + N avec B(m, m) de rang m et c = (c B, c N ). ce qui donne Après remplacement Max z = c B x B + c N x N x B = B 1 b + B 1 N( x N ) Max z = c B B 1 b B 1 Nx N + c N x N Le premier terme s écrit z 0 = c B B 1 b et on écrit le second terme comme Σ j B (z j c j )( x j ). On a la forme tableau Exemple : Le pivotage consiste à x m+1. x j. x n z z 0. z j c j.. x 1 b 1 α 1,j... =....... x m b m α m,j.. 1. Choisir une variable à faire rentrer dans B (une colonne j) 2. Choisir une variable à faire sortir de B (une ligne r) 3. Effectuer le pivotage Il faut de plus * Garder l admissibilite de la base * Ameliorer la fonction objectif (au moins ne pas la dégrader).
3.4. ALGORITHME DU SIMPLEXE. 5 La valeur de la fonction objectif dans la nouvelle base après pivotage sur α r,j est z 0 = z 0 (z j c j )b r /α r,j On veut z 0 z 0. Pour maintenir l admissibilité on a choisi α r,j > 0 et on sait que b r 0, donc il faut et il suffit que : z j c j < 0 Remarque : on ne choisit evidemment jamais de pivot sur la ligne de la fonction objectif. 3.4 Algorithme du Simplexe. 3.4.1 Description. 1. Partir d une base admissible. 2. Chercher à effectuer un pivotage (a) j 0 tel que z j0 c j0 < 0, mais i = 1,...m, α i,j0 0 alors pas d optimum fini, STOP. (b) j, z j c j 0, alors la base actuelle donne l optimum qui est fini, STOP. (c) un pivot existe avec les critères de choix donnés précédemment, effectuer le pivotage et aller en 2. Remarque : rien ne garantit que l algorithme termine, et il existe des cas où il ne termine pas. Pour assurer la terminaison, il faut soit mémoriser toutes les bases pour éviter celles déjà calculées (couteux et impossible en pratique) soit utiliser des règles de choix particulière des pivots (règle de Bland par exemple, voir chapitre suivant). 3.4.2 Correction de l algorithme. A chaque étape la base est admissible et la fonction objectif ne se dégrade pas. Il suffit donc de montrer que les cas d arrêt correspondent à ce qui est dit (optimum fini atteint ou infini). Le cas pas de solution aux contraintes est éliminé car on suppose qu on part d une base admissible. On suppose j 0 tel que z j0 c j0 < 0 mais tous les α i,j0 0. Le système d équation est vrai pour toutes les valeurs x j. Prenons x j = 0 pour j j 0. On a z = z 0 + (z j0 c j0 )(x j0 ) donc > z 0 Pour une valeur x j0 quelconque. x i = b i + (z j0 c j0 )(α i,j0 ) donc 0. positive on a une base admissible et une valeur de la fonction objectif et celle ci tend vers + quand x j0 tend vers +.
6 CHAPITRE 3. ALGORITHME DU SIMPLEXE On suppose j tel que z j c j 0 pour une base B. On considere une autre base admissible B qui donne une valeur z 0 a la fonction objectif. Le tableau obtenu pour la base B définit une égalité valable pour toutes les valeurs des variables. z = z 0 + Σ j B (z j c j )( x j ) avec z j c j > 0. Les variables x j de B ont une valeur positive v j car B est admissible. Par conséquent la valeur de z pour B vaut z 0 + Σ j B (z j c j )( v j ) z 0. Donc B réalise l optimum. 3.4.3 Terminaison Règle de Bland : lors d un pivotage, la variable qui entre est celle d indice minimal parmi celles qui peuvent rentrer et la variable qui sort est celle d indice minimal parmi celles qui peuvent sortir. Proposition 1 L algorithme du simplexe termine si on applique la règle de Bland. Preuve par l absurde : on suppose qu il ne termine pas. Alors il existe un cycle B... B. Nécessairement z 0 est constante le long du cycle, on peut le supposer nul. z = z 0 + Σ j IB (z j c j )( x j ) I B indices de la base B. Pour un pivotage en r, j (x r sort, x j entre) on a : z 0 = z 0 (z j c j )(b r /α i,j ) et donc b r = 0. et si b r vaut 0, la valeur des autres b i ne change pas. Donc tous les b i pour une variable i qui sortira valent 0. On peut éliminer les équations des variables qui restent toujours dans la base. On suppose que tous les b i sont 0 ainsi que z 0. Tableau x m+1. x j. x n z 0. z j c j. x 1 0 α 1,j. =... x m 0 α m,j q indice maximal des indices des variables de B.
3.4. ALGORITHME DU SIMPLEXE. 7 T 1 tableau avant que x q rentre. x m+1. x q. x n z 0. z q c q. x 1 0 α 1,j. =... x m 0 α m,j Alors z q c q < 0 et z j c j 0 pour tout j < q z = Σ j q, IB (z j c j ) ( x j ) + (z q c q ) ( x q ) 0 0 < T 2 tableau juste avant que x q sorte (donc pour tout l q, α l,p 0. x m+1. x p. x n z z 0. z p c p. x 1 0 α 1,p 0. =. x q = 0 α q,p > 0.. x m 0 α m,p 0 B On peut choisir les valeurs de certains x i dans les équations données par les tableaux T 1, T 2 de manière à obtenir des égalités interessantes. On choisit x i = ξ i tel que : * ξ p = 1 * ξ i = 0 pour i I B, i p * ξ i donné par le tableau T 2 sinon c.a.d. * ξ i = α i,p 0 * ξ q = α q,p < 0 D après T 1 on a : z = Σ j q,j IB (z j c j ) ( ξ j ) + (z q c q ) ( ξ q ) 0 0 0 < > 0 donc z < 0 D après T 2 contradiction. z = (z p c p ) ( y p ) 0 < = 1 > 0
8 CHAPITRE 3. ALGORITHME DU SIMPLEXE 3.5 Exemples de déroulement du simplexe Cas optimum fini. Max z = 5x 1 + 8x 2 x 1 + x 2 2 x 1 2x 2 0 x 1 + 4x 2 1 x 1, x 2 0 Variables d ecart e 1, e 2, e 3 donnent une base admissible. On peut écrire la fonction objectif avec les variables hors base : z = 0 + ( 5)( x 1 ) + ( 8)( x 2 ) d où le tableau : x 1 x 2 z 0 5 8 e 1 2 1 1 e 2 = 0 1 2 e 3 1 1 4 Pivotage : on peut choisir la première ou la deuxième colonne. On choisit la seconde et on calcule min(2/1,1/4) donc pivot 4. x 1 e 3 z 2 7 2 e 1 7/4 5/4 1/4 e 2 = 1/2 1/2 1/2 x 2 1/4 1/4 1/4 On vérifie que z a bien augmenté. Nouveau pivot obligatoirement sur colonne 1 et on calcule min((7/4)/(5/4),(1/2)/(1/2)) d ou ligne 2 e 2 e 3 z 9 14 9 e 1 1/2 5/2 3/2 x 1 = 1 2 1 x 2 1/2 1/2 1/2 Tous les coefficients z j c j sont positifs ou nuls, donc arret sur l optimum donné par la base B = {e 1, x 1, x 2 }, la valeur z = 9, et les variables de base e 1 = 1/2, x 1 = 1, x 2 = 1/2, les variables hors base valant 0. Optimum infini Max z = x 1 + x 2 x 1 + x 2 2 x 2 3 x 1, x 2 0
3.5. EXEMPLES DE DÉROULEMENT DU SIMPLEXE 9 Tableau x 1 x 2 z 0 1 1 e 1 2 1 1 e 2 3 0 1 On choisit colonne 2 et min(2/1,3/1) donne la ligne 1. Colonne 1 et min(1/1) donne la ligne 2 x 1 e 1 z 2 2 1 x 2 2 1 1 e 2 1 1 1 e 2 e 1 z 4 2 1 x 2 3 1 0 x 1 1 1 1 Colonne 2 obligatoirement mais pas de pivot sur cette colonne donc optimum infini (ce qu on voyait sur la colonne 1 dès le départ). Cas dégénéré Max z = 2x 1 + x 2 x 1 + 2x 2 2 x 1 + x 2 2 x 1, x 2 0 Les variables d écart donnent une base admissible : x 1 x 2 z 0 2 1 e 1 2 1 2 e 2 2 1 1 On choisit la colonne 1 et on calcule min(2/1,2/1) les deux lignes sont possibles, on prend la première. e 1 x 2 z 4 2 3 x 1 2 1 1 e 2 0 1 1 On est à l optimum avec une base dégénérée : une des variables de base vaut 0. On pourrait refaire un pivotage (non autorisé dans le déroulement normal car le pivot serait négatif et le coefficient de x 2 dans z est positif) pour echanger e 2 et x 2 : dans ce cas la valeur de x 2 resterait 0 et celle de z resterait 4.