14.6 Systèmes d’inéquations linéaires

Dans cette section, nous montrons que l’on peut utiliser les méthodes pour des systèmes linéaires afin de résoudre des systèmes d’inéquations linéaires.

Soient ARm×n et bRm. Supposons que l’on cherche à déterminer si le système Axb. admet une solution, ce qui n’est le cas que si et seulement si le système suivant possède lui-même une solution : AxIms=bs0. En réécrivant x sous la forme uv, où u,vRn avec u,v0, nous obtenons le système équivalent AuAvIms=bu,v,s0. Par conséquent, nous pouvons nous concentrer sur les systèmes de la forme Ax=bx0. Nous avons donc un système d’équations linéaires pour lequel nous exigeons que les valeurs des variables soient non négatives.

On rappelle que si Ax=b admet une solution, alors il existe une solution qui a au plus m éléments non nuls puisque Col(A) est de dimension au plus $ m$. Fait surprenant, la même chose peut être dite du système (14.2).

Proposition 14.1 Si (14.2) admet une solution, alors il existe une solution qui a au plus m éléments positifs.

Démonstration. Soit x une solution de (14.2). Soit J={i:xi>0}. On choisit x de façon à ce que |J| soit aussi petit que possible.

Supposons que |J|>m. Alors les colonnes de A, indicées par les éléments de J, sont linéairement dépendantes. Il existe alors un vecteur non nul dRn tel que Ad=0 et dj=0 pour tout jJ. On peut supposer qu’au moins un des éléments de d soit négatif. (Sinon, il suffit de prendre la réciproque additive de chacun des éléments de d.) Soit λ le nombre réel maximal tel que x+λd0, et posons x=x+λd. Alors, x est une solution de (14.2) puisque x0 et Ax=Ax+λAd=b. Cependant, x a au moins une composante positive en moins que x, ce qui contredit notre choix de x.

La proposition 14.1 nous suggère un algorithme naïf afin de résoudre (14.2) : on passe simplement en revue tous les sous-ensembles de colonnes de A formant une base de Col(A) et on vérifie s’il existe une combinaison linéaire non négative qui donne b.

Exemple 14.4 Soient A=[112121] et b=[03].

Notons que chaque paire de colonnes de A forme une base de Col(A). Nous avons donc les résultats suivants :

  • l’unique combinaison linéaire de A1 et A2 donnant b est A1+A2, qui n’est pas une combinaison linéaire non négative.

  • l’unique combinaison linéaire de A1 et A3 donnant b est 2A1+A3, qui n’est pas une combinaison linéaire non négative.

  • l’unique combinaison linéaire de A2 et A3 donnant b est 2A2A3, qui n’est pas une combinaison linéaire non négative.

Donc, Ax=b,x0 n’admet pas de solution d’après la proposition 14.1.

Cette méthode est relativement inefficace. Nous aimerions au moins éliminer des choix de colonnes qui sont évidemment peu prometteurs.

Pour faciliter la discussion, supposons que le rang de A soit m. L’ensemble B{1,,n} est appelé une base de A si les colonnes de A, indicées par les éléments de B, forment une base de Rm. (« Base d’indices » serait sans doute une appellation plus appropriée, mais c’est quand même assez long à écrire. Par convention, dans la littérature sur l’optimisation, on appelle simplement un tel ensemble une base.) Pour une base B, xRn est une solution de base associée à B si Ax=b et xi=0 pour tout iB.

On peut aussi effectuer une recherche plus systématique de la façon suivante : supposons que B soit une base déterminant la solution de base x, où xr<0 pour un rB particulier. Nous pouvons créer une nouvelle base B en retirant l’indice r et en ajoutant un nouvel indice k. On continue cette approche jusqu’à l’obtention d’une solution de base ne possédant que des éléments non négatifs.

Il y a un problème potentiel : cette approche peut ne jamais se terminer. En fait, en ne choisissant pas bien les indices r et k, il est possible de se retrouver avec une base déjà rencontrée. On appelle un tel phénomène cyclage. Dans la section suivante, nous voyons qu’en choisissant les plus petits r et k à chaque reprise, l’algorithme devra nécessairement se terminer.

14.6.1 Trouver une solution de base admissible

Soient ARm×n et bRm. Supposons que A soit de rang m. L’algorithme suivant va déterminer si Ax=b,x0 admet une solution de base dont les éléments sont non négatifs que l’on appelle une une solution de base admissible.

Étapes :

  1. Obtenir le système Ax=b, où A=A1BA et b=A1Bb, et la solution de base x associée à B.

  2. Si b0, retourner B et s’arrêter. Sinon, chosir le plus petit indice r tel que xr<0.

  3. Soit aT la ligne de A telle que ar=1. Si a0, alors signaler qu’il n’y a aucune solution et s’arrêter. Sinon, choisir le plus petit indice k tel que ak<0.

  4. Retirer r de B, ajouter k à B, et retourner à l’étape 1.

Le système Ax=b de l’étape 1 est le tableau associé à B. Chaque équation de ce tableau prend la forme xi+jBˉaijxj=βi, iB. On appelle xi+jBˉaijxj=βi la rangée (du tableau) associée à xi. Ainsi, pour chaque iB, xi prend la valeur du côté droit de la rangée associée à xi.

Avant d’analyser l’algorithme, nous présentons un exemple.

Supposons que l’on cherche une solution de Ax=b,x0, où A=[111010102133212] et b=[011]. Puisque les trois premières colonnes de A sont linéairement indépendantes, nous pouvons débuter avec B={1,2,3}.

Itération 1 :

  1. Pour obtenir le tableau associé à B={1,2,3}, nous n’avons pas besoin de calculer A1B explicitement. Nous devons simplement réduire la matrice augmentée de Ax=b de sorte que les colonnes indicées par les éléments de B forment la matrice identité : [111010010211332121]L3L33L1[111010010211001111]L1L1+L2[101201010211001111]L1L1+L3[100112010211001111]L2L2[100112010211001111]L3L3[100112010211001111] La solution de base associée à B est alors x=[21100].

  2. Choisissons r=2 puisque c’est le plus petit indice i tel que xi<0.

  3. Choisissons k=4 puisque c’est le plus petit indice k tel que le coefficient de xk dans la rangée associée à x2 est négatif.

  4. La nouvelle base est alors B={1,3,4}.

Itération 2 :

  1. On obtient le tableau associé à B={1,3,4} : [100112010211001111]L212L2[100112012011212001111]L1L1L2[112001232012011212001111]L3L3L2[112001232012011212012103232]L2L3[112001232012103232012011212] Donc, la solution de base déterminé par B est x=[32032120].

  2. Choisissons r=3 puisque c’est le plus petit indice ixi<0.

  3. Choisissons k=5 puisque c’est le plus petit indice k tel que le coefficient de xk dans la rangée associée à x3 est négatif. (Notons que la rangée associée à x3 correspond à la deuxième ligne de la dernière matrice augmentée ci-dessus.)

  4. La nouvelle base est alors B={1,4,5}.

Itération 3 :

  1. On obtient le tableau associé à B={1,4,5} : [112001232012103232012011212]L223L2[11200123201323011012011212]L1L112L2[1231300101323011012011212]L3L312L2[123130010132301101313100]L2L3[123130010131310001323011] Donc, la solution de base déterminée par B est x=[10001].

  2. On s’arrête ici car le côté droit du tableau ne contient que des valeurs non négatives. On peut aussi constater que x=[10001] satisfait à Ax=b,x0.

Remarque. L’algorithme présentée ci-dessus est en fait une spécialisation de l’algorithme du simplexe dual qui utilise la règle d’anti-cyclage de Robert Bland pour programmation linéaire.

14.6.2 Analyse de la méthode

Lors de l’étape 2, on peut s’arrêter lorsque b0 car pour chaque j{1,,n}, xj est nul ou un des élément de b.

L’étape 3 jette un regard sur la rangée du tableau associée à xr : xr+jBˉarjxj=βr. Par choix de r, on sait que βr<0. Mais si ˉarj0 pour tout jB, le côté gauche de l’équation (14.3) n’est jamais négatif pour toutes les solutions de Ax=b,x0, ce qui implique que le système n’admet aucune de solution admissible.

Pour l’indice k choisit à l’étape 3, le coefficient de xk est négatif dans la rangée associée à xr . Donc, les colonnes de A, indicées par la nouvelle base B formé à l’étape 4, sont linéairement indépendantes. Puisque A=A1BA, on constate que les colonnes de A sont aussi linéairement indépendantes, ce qui implique que le nouveau B est aussi une base pour A.

Montrons maintenant que l’algorithme se termine.

Supposons, par contradiction, que l’algorithme ne se termine pas. Soit B1,B2, la suite des bases que l’algorithme rencontre. Autrement dit, Bi dénote la base au début de la i-ième itération pour chaque i=1,2,. Soit x(i) la solution de base associée à Bi pour chaque i=1,2,.

Puisqu’il n’existe qu’un nombre fini de bases différentes, on peut trouver s<t tel que Bs=Bt. Soit rp l’indice retiré de Bp pour tout p{s,,t}. Posons h=max{rs,,rt}. Puisque Bt=Bs, il doit y avoir q{s,t1} tel que h a été ajouté à la base à la q-ième itération.

Soit i l’indice choisit pour être retiré de la base lors de la q-ième itération. Puisque h fût ajouté à la base lors de l’itération q, ih. De plus, aucun indice plus élevé que h peut être retiré lors de l’itération q. Ainsi, nous avons i<h.

Puisque la rangée associée à xi est une équation du système A1BqAx=A1Bqb, elle est égale à dTAx=dTb,dT est une ligne de A1Bq.

Nous avons donc 0>x(q)i=dTb=dT(Ax(p))=(dTA)x(p)=nj=1(dTAj)x(p)j. Ainsi, il existe j tel que (dTAj)x(p)j<0, d’où jBp.

Supposons que j<h. Puisque à la p-ième itération, r=h fût le plus petit indice tel que x(p)r<0 à l’étape 2, alors x(p)j0. De plus, à la q-ième itération, k=h fût le plus petite indice à l’étape 3 ayant été ajouté à la base, nous avons dTAj0, d’où (dTAj)x(p)j0, ce qui est une contradiction. Ainsi, jh.

Supposons maintenant que j=h. Puisque on a ajouté h à la base lors de la q-ième itération, nous devons avoir dTAj<0. Mais on a retiré h lors de la p-ième itération. Ainsi, x(p)j<0, ce qui implique que (dTAj)x(p)j>0, une contradiction.

Finalement, supposons que j>h. Puisque h est le plus grand indice qui l’on a retiré d’une base lors entre la p-ième itération et la q-ième itération, j doit également se retrouver dans Bq, ce qui implique que dTAj=0 puisque i<h<j et puisque le coefficient de xj dans la rangée associée à xi est nul pour chaque élément jBp autre que i. Ceci contredit que (dTAj)x(p)j<0.

Ainsi, j n’existe pas, ce qui est une contradiction, d’où algorithme se termine.

Exercices

  1. Pour chacun des problèmes suivants, appliquez la méthode du simplexe au système Ax=b en débutant avec la base donnée B :

    1. A=[11100121], \mathbf{b} = \begin{bmatrix} -1 \\ 2 \end{bmatrix}, B = \{2,3\}.

    2. \mathbf{A}=\begin{bmatrix} 1 & -1 & 1 & 0 \\ 0 & 1 & 2 & -1 \\ \end{bmatrix}, \mathbf{b} = \begin{bmatrix} 1 \\ -1 \end{bmatrix}, B = \{1,2\}.

Solutions

    1. Itération 1 :

      1. On obtient le tableau associé à B = \{2,3\} : \begin{align*} & \left[\begin{array}{cccc|c} 1 & -1 & 1 & 0 & -1 \\ 0 & 1 & -2 & 1 & 2 \end{array}\right] \\ \xrightarrow{L_2 \leftarrow \, L_2 + 2L_1} & \left[\begin{array}{cccc|c} 1 & -1 & 1 & 0 & -1 \\ 2 & -1 & 0 & 1 & 0 \end{array}\right] \\ \xrightarrow{L_2 \leftarrow \, -L_2} & \left[\begin{array}{cccc|c} 1 & -1 & 1 & 0 & -1 \\ -2 & 1 & 0 & -1 & 0 \end{array}\right] \\ \xrightarrow{L_1 \leftarrow \, L_1 + L_2} & \left[\begin{array}{cccc|c} -1 & 0 & 1 & -1 & -1 \\ -2 & 1 & 0 & -1 & 0 \end{array}\right] \\ \xrightarrow{L_1 \leftrightarrow L_2} & \left[\begin{array}{cccc|c} -2 & 1 & 0 & -1 & 0 \\ -1 & 0 & 1 & -1 & -1 \end{array}\right] \\ \end{align*} Donc, la solution de base associée à B est \mathbf{x}' = \begin{bmatrix} 0 \\ 0 \\ -1 \\ 0 \end{bmatrix}.

      2. Choisissons r = 3 puisque c’est le plus petit indice i tel que x'_i < 0.

      3. Choisissons k = 4 puisque c’est le plus petit indice k tel que le coefficient de x_k dans la rangée associée à x_3 est négatif.

      4. La nouvelle base est alors B = \{2,4\}.

      Itération 2 :

      1. On obtient le tableau associé à B = \{2,4\} : \begin{align*} & \left[\begin{array}{cccc|c} -2 & 1 & 0 & -1 & 0 \\ -1 & 0 & 1 & -1 & -1 \end{array}\right] \\ \xrightarrow{L_2 \leftarrow \, -L_2} & \left[\begin{array}{cccc|c} -2 & 1 & 0 & -1 & 0 \\ 1 & 0 & -1 & 1 & 1 \end{array}\right] \\ \xrightarrow{L_1 \leftarrow \, L_1+L_2} & \left[\begin{array}{cccc|c} -1 & 1 & -1 & 0 & 1 \\ 1 & 0 & -1 & 1 & 1 \end{array}\right] \\ \end{align*} Donc, la solution de base déterminée par B est \mathbf{x}' = \begin{bmatrix} 0 \\ 1 \\ 0 \\ 1 \end{bmatrix}.

      2. On s’arrête ici car \mathbf{x}' est une solution de base admissible.

    2. Itération 1 :

      1. On obtient le tableau associé à B = \{1,2\} : \begin{align*} & \left[\begin{array}{cccc|c} 1 & -1 & 1 & 0 & 1 \\ 0 & 1 & 2 & -1 & -1 \end{array}\right] \\ \xrightarrow{L_1 \leftarrow \, L_1 + L_2} & \left[\begin{array}{cccc|c} 1 & 0 & 3 & -1 & 0 \\ 0 & 1 & 2 & -1 & -1 \end{array}\right] \\ \end{align*} Donc, la solution de base déterminée par B est \mathbf{x}' = \begin{bmatrix} 0 \\ -1 \\ 0 \\ 0 \end{bmatrix}.

      2. Choisissons r = 2 puisque c’est le plus petit indice i tel que x'_i < 0.

      3. Choisissons k = 4 puisque c’est le plus petit indice k tel que le coefficient de x_k dans la rangée associée à x_2 est négatif.

      4. La nouvelle base est alors B = \{1,4\}.

      Itération 2 :

      1. On obtient le tableau associé à B = \{1,4\} : \begin{align*} & \left[\begin{array}{cccc|c} 1 & 0 & 3 & -1 & 0 \\ 0 & 1 & 2 & -1 & -1 \end{array}\right] \\ \xrightarrow{L_2 \leftarrow \, -L_2} & \left[\begin{array}{cccc|c} 1 & 0 & 3 & -1 & 0 \\ 0 & -1 & -2 & 1 & 1 \end{array}\right] \\ \xrightarrow{L_1 \leftarrow \, L_1+L_2} & \left[\begin{array}{cccc|c} 1 & -1 & 1 & 0 & 1 \\ 0 & -1 & -2 & 1 & 1 \end{array}\right] \\ \end{align*} Donc, la solution de base déterminée par B est \mathbf{x}' = \begin{bmatrix} 1 \\ 0 \\ 0 \\ 1 \end{bmatrix}.

      2. On s’arrête ici car \mathbf{x}' est une solution de base admissible.