0% ont trouvé ce document utile (0 vote)
215 vues30 pages

Introduction à la Programmation Linéaire

Transféré par

Nadiaa Adjovi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
215 vues30 pages

Introduction à la Programmation Linéaire

Transféré par

Nadiaa Adjovi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

L3 MiaSHS 2017-2018 Optimisation Universités de Rennes 1 & 2

Chapitre 2
Programmation linéaire 12

0.1 Un exemple

Dans une raffinerie on décompose du pétrole brut en appliquant des procédés physiques
ou chimiques afin d’obtenir de nouveaux produits. Ce qu’on obtient dépend du procédé
employé. On admet qu’une raffinerie fournit trois types de composants : du pétrole lourd
(noté S comme lourd), du pétrole moyen (M), du pétrole léger (L). Elle dispose de deux
procédés différents dont les coûts (énergie, amortissement des machines, travail) et les
résultats sont les suivants (pour dix unités de pétrole brut) :
le procédé 1, fournit 3 unités de L, 2 unités de M, 1 unité de L pour un coût de 3 unités
monétaires ;
le procédé 2, fournit 1 unités de L, 2 unités de M, 4 unité de L pour un coût de 5 unités
monétaires.
La raffinerie doit satisfaire une commande de 3 unités de S, 5 unités de M et 4 unités
de L et souhaite le faire au coût le plus bas possible. On suppose que les deux procédés
fonctionnent de manière indépendante et qu’ils peuvent utiliser une quantité quelconque
de pétrole brut.
Notons x1 la quantité de pétrole brut utilisée par le procédé 1 (en dizaine d’unité, x1 = 1, 5
signifie qu’on consomme 15 unités de brut par le procédé 1). On note de même x2 la
quantité consommée par l’utilisation du procédé 2.
Supposons qu’on utilise les procédés 1 et 2 avec des quantités de brut 10x1 et 10x2 , alors
les quantités produites sont :
2x1 + x2 pour S, 2x1 + 2x2 pour M, x1 + 4x2 pour L.
Pour que la commande soit satisfaite il faut donc qu’on ait
2x1 + x2 ≥ 3, 2x1 + 2x2 ≥ 5, x1 + 4x2 ≥ 4.
1. Une partie du contenu de ces notes est repris d’un cours de Martin Grötschel (Lineare Optimierung
(ADM II)) disponible sur internet [Link]
2. Ce document est une première version appelée à évoluer. Merci de me signaler les erreurs, coquilles,...
que vous repéreriez.

1
L3 MiaSHS 2017-2018 Optimisation Universités de Rennes 1 & 2

À ces contraintes il faut bien sûr ajouter le fait que x1 et x2 ne peuvent être négatives :

x1 ≥ 0, x2 ≥ 0.

On cherche donc des valeurs de x1 et x2 qui respectent ces contraintes telles que 3x1 + 5x2
soit le plus petit possible. C’est ce qu’on appelle un problème de programmation linéaire
ou d’optimisation linéaire. On l’écrit de la façon suivante :

min 3x1 + 5x2 ,

s.c. 2x1 + x2 ≥ 3, 2x1 + 2x2 ≥ 5, x1 + 4x2 ≥ 4, x1 ≥ 0, x2 ≥ 0.


La fonction 3x1 + 5x2 s’appelle la fonction objectif. Tout vecteur (x1 , x2 ) respectant les
contraintes s’appelle une solution admissible du problème. Ici on peut résoudre graphique-
ment le problème. On considère le plan muni d’un repère et on appelle x1 et x2 l’abscisse
et l’ordonnée d’un point. Chacune des contraintes indique que le points (x1 , x2 ) est d’un
côté d’un droite (qui délimite deux demi-plans). Par exemple 2x1 + 2x2 ≥ 5 signifie que le
point (x1 , x2 ) est au-dessus de la droite d’équation 2x1 + 2x2 = 5. L’ensemble des points
respectant les cinq contraintes est représenté en vert sur la figure ci-dessous.

Les lignes de niveau de la fonction objectif sont les ensembles 3x1 + 5x2 = t. Ce sont des
droites parallèles. Trois telles droites sont représentées en rouge ci-dessus. Ce qu’on cherche
ce sont les point de l’ensemble vert de niveau minimal (pour la fonction objectif). Plus
une droite rouge est haute, plus le niveau auquel elle correspond est élevé. On cherche
donc la droite rouge le plus bas possible qui touche l’ensemble vert. Cette droite est
représentée sur le schéma : elle passe par le point de coordonnées (2, 1/2). On en déduit
que le minimum recherché est 3.2 + 5.1/2 = 17/2 atteint pour x1 = 2 et x2 = 1/2.

2
L3 MiaSHS 2017-2018 Optimisation Universités de Rennes 1 & 2

On peut dire que les dessins faits montrent que nous avons bien résolu notre problème.
Mais si le nombre de variables concernées est plus grand (par exemple 333 ce qui est
tout à fait possible) alors ce type de visualisation sera beaucoup plus difficile (car notre
intuition géométrique en dimension 333 est très limitée). Il nous faut donc développer des
méthodes systématiques valables en toute dimension qui ne reposent pas sur notre vision
en dimension 2 ou 3.
Une notion naturelle en programmation linéaire est celle de programme dual. Introduisons
trois variables positives ou nulles y1 , y2 , y3 , multiplions chacune des contraintes

2x1 + x2 ≥ 3, 2x1 + 2x2 ≥ 5, x1 + 4x2 ≥ 4.

respectivement par y1 , y2 , y3 et additionnons les. Nous obtenons

(2y1 + 2y2 + y3 )x1 + (y1 + 2y2 + 4y3 ) ≥ 3y1 + 5y2 + 4y3 .

Si on suppose en plus que

2y1 + 2y2 + y3 ≤ 3 et y1 + 2y2 + 4y3 ≤ 5,

alors le membre de gauche de cette inégalité est inférieure à la fonction objectif. La


fonction objectif est donc supérieure à 3y1 +5y2 +4y3 dans ce cas. Posons alors le problème
d’optimisation
max 3y1 + 5y2 + 4y3
s.c. 2y1 + 2y2 + y3 ≤ 3 y1 + 2y2 + 4y3 ≤ 5 y1 ≥ 0 y2 ≥ 0 y3 ≥ 0.
Le calcul que nous avons fait montre que si les contraintes des deux problèmes linéaires
sont satisfaites alors toute valeur de la fonction objectif du deuxième problème est infé-
rieure à toute valeur de la fonction objectif du premier problème. Conclusion : si on trouve
une valeur commune aux deux fonctions objectif (les contraintes étant respectées) alors
cette valeur commune est le minimum recherché du premier problème et le maximum
recherché du deuxième problème. Ce deuxième problème est appelé le problème dual du
premier.
Le langage des matrices fournit une manière concise d’écrire ces problèmes. Introduisons
les notations suivantes :

     
2 1     y1 3
x 1 3
A= 2 2  x= c= y =  y2  b =  4  .
x2 5
1 4 y3 5
Alors le premier problème s’écrit

minhc, xi s.c. Ax ≥ b, x ≥ 0,

3
L3 MiaSHS 2017-2018 Optimisation Universités de Rennes 1 & 2

où il faut comprendre qu’un vecteur est supérieur ou égal à un autre si chacune des
coordonnées du premier est supérieure à la coordonnée correspondante du deuxième. Le
deuxième problème s’écrit
maxhb, yi s.c. t Ay ≤ c, y ≥ 0.

0.2 Exemples de problèmes liés à la programmation linéaire

Séparation de points

max δ,
s.c. ∀i = 1, . . . , 7 y(qi ) ≤ ax(qi ) + b + δ, ∀i = 1, . . . , 8 y(pi ) ≥ ax(pi ) + b − δ.
On peut chercher à séparer les deux ensembles de points par autre chose que des droites
(des paraboles, des courbes de degré trois,...) ou encore résoudre ce genre de problème en
dimension plus grande.
Alternative à la droite de régression linéaire
On cherche à minimiser la quantité
n
X
|yi − axi − b|
i=1

Une solution analytique comme celle que nous utilisons pour minimiser
n
X
(yi − axi − b)2
i=1

qui mène à la droite de régression est difficile à décrire simplement. Mais donner une
solution algorithmique basée sur une présentation du problème comme programme linéaire
est possible :
min l1 + l2 + . . . + ln ,

4
L3 MiaSHS 2017-2018 Optimisation Universités de Rennes 1 & 2

s.c. ∀i = 1, . . . , n li ≥ yi − axi − b, li ≥ −yi + axi + b.

0.3 Quelques éléments d’algèbre linéaire et de géométrie affine

Les problèmes de programmation linéaire sont résolus par des opérations très classiques
sur les matrices (essentiellement la méthode du pivot de Gauss). Les contraintes et la
fonction à optimiser sont de nature linéaire. Pour bien comprendre les problèmes et leurs
résolutions l’outil matriciel (calculatoire et théorique) est essentiel. Considérons les ma-
trices suivantes :
   
x1 1
   
1 0 1 0 0  x2 
 
 2 
  4
A =  2 1 0 1 0  x =  x3  c =  0  b =  10  .
   
−1 1 0 0 1
   
 x4   0  5
x5 0

Les vecteurs de la base canonique de R5 sont


         
1 0 0 0 0
 0   1   0   0   0 
         
e1 =  0  e2 =  0  e3 =  1  e4 =  0  e5 =  0 .
         
         
 0   0   0   1   0 
0 0 0 0 1

Les vecteurs colonnes de A sont les résultats de la multiplication de A par ces vecteurs
de la base canonique. Par exemple
 
0
    
1 0 1 0 0  1  0
A.e2 = 2 1 0 1 0  0 = 1 .
     
−1 1 0 0 1
 
 0  1
0

L’image de l’application linéaire définie par la multiplication par A est le sous-espace


vectoriel engendré par ses vecteurs colonne. Le rang de la matrice A est la dimension
de cette image. Cette dimension ne peut pas excéder la dimension de l’espace d’arrivée
(i.e. le nombre de lignes de la matrice, ici 3), ni le nombre de vecteurs colonne (ici 5 ; la
dimension de l’espace d’arrivée). Le rang d’une matrice de taille m × n est donc au plus
min(m, n). On dit qu’une matrice m × n est de rang plein (ou maximal) si son rang est
min(m, n).

Définition 0.1. Soit P une partie de Rd . On appelle sous-espace affine engendré par P
le plus petit sous-espace affine contenant P .

5
L3 MiaSHS 2017-2018 Optimisation Universités de Rennes 1 & 2

Définition 0.2. Un sous-espace affine de Rd est un ensemble de la forme

x + E = {x + u ∈ Rd /u ∈ E}

où x est un point de Rd et E un sous-espace vectoriel de Rd : c’est le sous-espace affine


de direction E passant par x. On appelle dimension d’un sous-espace affine la dimension
du sous-espace vectoriel définissant sa direction (dim E).

Si y et z appartiennent tous les deux à x + E alors y − z appartiennent à E. Pour définir


complètement un sous-espace affine il suffit de se donner x et un base de E, ou encore
dim E + 1 points x0 , . . . , xdim E tels que les vecteurs xi − x0 engendrent E. On dit que de
tels points sont affinement indépendants et que x + E est l’enveloppe affine de la famille
(x0 , . . . , xdim E ).

Définition 0.3. Soit P une partie de E. On appelle enveloppe affine de P l’ensemble


l
X l
X

{ αi xi / l ∈ N , x1 , . . . , xl ∈ P, αi = 1}.
i=1 i=1

Soient u et v deux vecteurs appartenant tous les deux à Rd . On dit que u est inférieur à
v si chaque coordonnée de u est inférieure à v : pour tout i = 1, . . . , d, ui ≤ vi 3
Soit A une matrice m × m et b ∈ Rm . Notons ai,j les coefficients de A. L’ensemble
C(A, b) = {x : Ax ≤ b} est l’ensemble des x tels que, pour tout i allant de 1 à m on ait
n
X
ai,j xj ≤ bj .
j=1

Pour i allant de 1 à m, notons li le vecteur de Rn dont les coordonnées sont les ai,j :

li = (ai,1 , ai,2 , . . . , ai,n ).

Les inégalités plus haut s’écrivent


hli , xi ≤ bi .
L’ensemble {x / hli , xi ≤ bi } est un demi-espace dont le bord est l’hyperplan affine
{x / hli , xi = bi }. L’ensemble C(A, b) apparaît ainsi comme l’intersection des m demi-
espaces {x / hli , xi ≤ bi } (il faut que les m inégalités soient satisfaites c’est-à-dire que x
doit être dans les m demi-espaces à la fois).
3. Ce n’est pas une relation d’ordre totale : deux vecteurs ne sont pas forcément comparables. Par
exemple (1, 2) et (2, 1) ne sont pas comparables dans R2 au sens de cette relation ≤.

6
L3 MiaSHS 2017-2018 Optimisation Universités de Rennes 1 & 2

0.4 Formes canoniques et standard

On peut distinguer un problème primal et un problème dual. C’est le point de vue de


celui à qui se pose le problème qui détermine lequel est primal, lequel est dual.
Formes canoniques
Problème primal : minhc, xi sous contraintes Ax ≥ b, x ≥ 0.
Problème dual : maxhb, yi sous contraintes t Ay ≤ c, y ≥ 0.
Formes standard
Problème primal : maxhc, xi sous contraintes Ax ≤ b.
Problème dual : minhb, yi sous contraintes t Ay = c, y ≥ 0.
Cette dernière forme est la forme adaptée pour appliquer l’algorithme du simplexe.
A est une matrice m × n, x, c des vecteurs n × 1, y des vecteurs m × 1.
Supposons que x et y satisfont les contraintes des problèmes primal et dual sous la forme
standard. On a alors

hc, xi =t (t Ay)x =t yAx ≤t yb = hb, yi,

la première égalité est vraie car y satisfait les contraintes du programme dual, la deuxième
est un calcul de transposée de produit de matrice, l’inégalité est vraie car x satisfait les
contraintes du problème primal et car y ≥ 0.
Ce que montre le calcul précédent est que si les contraintes sont vérifiées, toutes les valeurs
de la fonction objectif hc, xi sont inférieures ou égales à celles, hb, yi, du programme dual.
On en déduit que si on trouve une valeur commune aux deux fonctions obejectif en deux
points dans les ensembles définis par les contraintes alors on a résolu les deux problèmes
en même temps.
Si l’ensemble défini par les contraintes du problème primal n’est pas vide mais que la
fonction objectif n’est pas majorée sur cet ensemble alors nécessairement l’ensemble défini
par les contraintes du problème dual est vide (et on a une affirmation symétrique).
Si aucun des deux ensembles définis par les contraintes n’est vide alors la fonction objectif
du problème primal est majorée donc a une borne supérieure, celle du problème dual est
minorée, donc a une borne inférieure. Ces bornes sont-elles atteintes ? Sont-elles égales ?
Considérons l’ensemble C(A, b) = {x : Ax ≤ b}. C’est une intersection de m demi-
espaces : on appelle un tel ensemble un polyèdre.
Pour répondre à ces questions nous allons étudier les propriétés des ensembles de contraintes
qui sont appelés des polyèdres. Ce sont des exemples de parties dites convexes d’espaces
vectoriels. Commençons par étudier les convexes en général. Ce sont des ensembles appa-
raissant souvent en optimisation.

7
L3 MiaSHS 2017-2018 Optimisation Universités de Rennes 1 & 2

0.5 Quelques propriétés des convexes fermés

Définition 0.4. Soit C une partie de Rd . On dit que C est convexe si lorsque x et y sont
deux points de C, alors le segment joignant ces deux points [x, y] = {tx + (1 − t)y / t ∈
[0, 1]} est lui aussi inclus dans C.

Des exemples en dimension 2.

La partie située au dessus da la parabole ou en-dessous du graphe de la fonction ln :

8
L3 MiaSHS 2017-2018 Optimisation Universités de Rennes 1 & 2

Des exemples en dimension 3.

En dimension quelconque, un polyèdre C(A, b) est convexe. Soient deux points x et y


tels que Ax ≤ b et Ax ≤ b, et λ appartenant à [0, 1]. Par linéarité (ou distributivité du
produit) on a
A(λx + (1 − λ)y) = λAx + (1 − λ)Ay.
Par hypothèse Ax et Ay sont inférieurs ou égaux à b, et comme λ et (1 − λ) sont positifs
ou nuls, on en déduit
A(λx + (1 − λ)y) ≤ λb + (1 − λ)b = b,
ce qui signifie que λx + (1 − λ)y appartient à C(A, b).
Soit C un ensemble convexe fermé inclus dans Rd . C’est aussi une partie convexe de
Af f (C). On appelle intérieur relatif de C son intérieur comme sous-ensemble de Af f (C).
On a
C = Intr (C),
alors que l’intérieur de C dans Rd peut-être vide. Le bord relatif de C est ∂r (C) =
C \ Intr (C).
Définition 0.5. Un point x est dit barycentre à coefficients positifs de deux points y et z
s’il existe α ∈]0, 1[ tel que x = αy + (1 − α)z.

Une face d’un convexe C de Rd est une partie F de C telle que si x ∈ F est barycentre à
coefficients positifs de deux points y et z de C alors y et z appartiennent aussi à F .
On appelle point extrémal d’un convexe fermé C une face réduite à un point c’est-à-dire
un point x de C tel que si x = αy + (1 − α)z avec α ∈]0, 1[, y et z dans C alors x = y = z.
Lorsque C est un polyèdre on appelle sommets ses points extrémaux. Comment trouver
les sommets d’un polyèdre C(A, b) ? En a-t-il ? Si le rang de A n’est pas n alors C(A, b)
contient une droite et n’a pas de sommet. En effet, dans ce cas le noyau de l’application
φA : x 7→ Ax est de dimension suprérieure ou égale à 1 car la formule du rang donne
dim KerφA + dim ImφA = n,
donc si dim ImφA < n alors dim KerφA ≥ 1. Or si x ∈ C(A, b) et z ∈ KerφA alors
A(x + z) = Ax + Az = Ax + 0 = Ax ≤ b. Cela signifie que x + z appartient à C(A, b). Si
KerφA n’est pas réduit à 0, C(A, b) contient donc une droite (à moins qu’il ne soit vide
auquel cas il n’a pas non plus de point extrémaux).

9
L3 MiaSHS 2017-2018 Optimisation Universités de Rennes 1 & 2

Théorème 0.6. (projection sur un convexe) Soit C un convexe fermé inclus dans Rd .
Pour tout x n’appartenant pas à C il existe un unique point pC (x) de C minimisant la
distance de x aux points de C c’est-à-dire tel que

d(x, pC (x)) = min{d(x, y) / y ∈ C}.

Ce point pC (x) est appelé projection de x sur C. Il est caractérisé par la propriété que
pour tout z ∈ C on a
hx − pC (x), z − pC (x)i ≤ 0.
(ce qui signifie que l’angle fait par les vecteurs x − pC (x) et z − pC (x) est obtus).

Démonstration Soient x ∈ / C et y ∈ C. L’ensemble K = C ∩ B(x, d(x, y) + 1) est un


convexe fermé borné (fermé et convexe car intersection de deux ensembles fermés et
convexes, borné car inclus dans une boule). L’ensemble {d(x, z) / z ∈ C} est inclus
dans R+ . Il admet donc une borne inférieure qui est par définition la distance de x à C. Il
existe une suite d’éléments de C telle que d(yn , x) →n→+∞ d(x, C). À partir d’un certain
rang yn appartient à K (car à partir d’un certain rang d(yn , x) < d(y, x) + 1). Comme
K est compact, on peut extraire de la suite (yn ) une sous-suite convergente. Soit y∞ la
limite de cette suite extraite. On a d(y∞ , x) = d(x, C).
Supposons qu’on ait deux points y∞ et z∞ qui vérifient tous les deux

d(y∞ , x) = d(x, C) et d(z∞ , x) = d(x, C).

10
L3 MiaSHS 2017-2018 Optimisation Universités de Rennes 1 & 2

Calculons d(x, (y∞ + z∞ )/2)


y∞ + z∞ 2
d(x, (y∞ + z∞ )/2)2 = kx − k
2
x − y∞ x − z∞ 2
= k + k
2 2
1
kx − y∞ k2 + kx − z∞ k2 + 2hx − y∞ , x − z∞ i .

=
4
L’inégalité de Cauchy-Schwarz donne

hx − y∞ , x − z∞ i ≤ kx − y∞ kkx − z∞ k

avec égalité si x − y∞ est un multiple positif de x − z∞ . On en déduit que


1
d(x, (y∞ + z∞ )/2)2 ≤ kx − y∞ k2 + kx − z∞ k2 + 2kx − y∞ kkx − z∞ k = d(x, C)2

4
avec égalité si x − y∞ est un multiple positif de x − z∞ . Mais, comme par hypothèse
kx − y∞ k = kx − z∞ k = d(x, C), la seule possibilité est que x − y∞ = x − z∞ , autrement
dit que y∞ = z∞ . Comme C est convexe, (y∞ + z∞ )/2 appartient à C. Par définition de
d(x, C) la distance d(x, (y∞ + z∞ )/2) est supérieure ou égale à d(x, C). On est donc dans
le cas d’égalité.
On a montré l’existence d’un unique point de C qui soit à distance d(x, C) de x : on peut
appeler ce point pC (x).
Expliquons maintenant comment voir que les angles entre x−pC (x) et les vecteurs z−pC (x)
pour z ∈ C dont obtus. Remarquons que comme C est convexe pour tout λ ∈ [0, 1], le
point (1 − λ)pC (x) + λz appartient à C. Cela entraîne que pour tout λ ∈ [0, 1] on a

d(x, (1 − λ)pC (x) + λz) ≥ d(x, C) = d(x, pC (x)).

En exprimant ces distances comme des normes et en prenant le carré on obtient

k(x − ((1 − λ)pC (x) + λz) k2 ≥ k(x − pC (x)k2 ,

ce qui s’écrit encore

k(x − pC (x)) + λ(pC (x) − z))k2 ≥ k(x − pC (x)k2 .

En écrivant le premier membre comme un produit scalaire et en utilisant la bilinéarité on


en déduit

kx − pC (x)k2 + λ2 kpC (x) − zk2 + 2λhx − pC (x), pC (x) − zi ≥ kx − pC (x)k2 ,

ce qui donne
λ2 kpC (x) − zk2 + 2λhx − pC (x), pC (x) − zi ≥ 0.

11
L3 MiaSHS 2017-2018 Optimisation Universités de Rennes 1 & 2

Si on suppose maintenant λ > 0 on peut diviser par λ. On obtient que pour tout λ ∈]0, 1]
on a
λkpC (x) − zk2 + 2hx − pC (x), pC (x) − zi ≥ 0.
En faisant tendre λ vers 0, on voit que ceci n’est possible que si hx − pC (x), pC (x) − zi ≥ 0,
ce qui est la même chose que hx − pC (x), z − pC (x)i ≤ 0.
Le théorème de projection fournit ce qu’on appelle des hyperplans et des demi-espaces
d’appui pour le convexe C. Si y ∈
/ C alors

H = {u ∈ Rd / hu, y − pC (y)i = hpC (y), y − pC (y)i},

l’hyperplan orthogonal à y − pC (y) passant par pC (y), sépare Rd en deux demi-espaces


dont l’un contient C :

C ⊂ {u ∈ Rd / hu, y − pC (y)i ≤ hpC (y), y − pC (y)i}.

L’application p est continue. Plus précisément, si y et z sont deux points n’appartenant


pas à C, alors
kpC (y) − pC (z)k ≤ ky − zk.
C’est une conséquence de la propriété sur l’angle donnée plus haut :

kpC (y) − pC (z)k2 = hpC (y) − pC (z), pC (y) − pC (z)i


= h(pC (y) − y) + (y − z) + (z − pC (z)), pC (y) − pC (z)i
= hpC (y) − y, pC (y) − pC (z)i + hy − z, pC (y) − pC (z)i
+hz − pC (z), pC (y) − pC (z)i
≤ hy − z, pC (y) − pC (z)i
≤ ky − zkkpC (y) − pC (z)k

La première inégalité vient du fait que les deux produits scalaires hpC (y)−y, pC (y)−pC (z)i
et hz − pC (z), pC (y) − pC (z)i sont négatifs ou nuls. La deuxième est l’inégalité de Cauchy-
Schwarz.

Théorème 0.7. (Minkowski) Soit C un convexe fermé borné inclus dans Rd . Alors C est
l’enveloppe convexe de ses points extrémaux.

Théorème 0.8. Soit C un convexe fermé inclus dans Rd ne contenant pas de droite. Alors
C est l’enveloppe convexe de ses points extrémaux et de ses demi-droites extrémales.

Démonstration Le théorème de Minkowski est une conséquence du deuxième résultat, si


l’on remarque qu’un convexe fermé ne contenant pas de demi-droite est borné. Montrons
le deuxième théorème par récurrence sur la dimension du convexe.
Les convexes fermés de dimension 1 sont les segments, les demi-droites et les droites. Si on
suppose que C est de dimension 1 et ne contient pas de droite alors c’est un segment ou

12
L3 MiaSHS 2017-2018 Optimisation Universités de Rennes 1 & 2

une demi-droite. Si c’est un segment alors il est l’enveloppe convexe de ses deux extrémités
qui sont ses deux points extrémaux. Si c’est une demi-droite alors il coïncide évidemment
avec l’enveloppe convexe de sa demi-droite extrémale.
Soit k un entier naturel. Supposons que le résultat soit vrai pour tout convexe fermé de
dimension inférieur ou égal à k. Montrons qu’il l’est alors pour tout convexe de dimension
k + 1. Soit C un convexe fermé de dimension k + 1 ne contenant pas de demi-droite. Le
convexe C est inclus dans un espace Rd qui n’est pas nécessairement Rk+1 mais quitte à
remplacer Rd par Af f (C) on peut supposer que C est inclus dans Rk+1 et d’intérieur non
vide. Soit x un point du bord de C. Il existe y ∈/ C tel que x = pC (y). L’hyperplan

H = {u ∈ Rk+1 / hu, y − pC (y)i = hpC (y), y − pC (y)i}

est un hyperplan d’appui pour C : H contient pC (y) et C est inclus dans l’un des demi-
espaces définis pas H :

C ⊂ {u ∈ Rk+1 / hu, y − pC (y)i ≤ hpC (y), y − pC (y)i}.

L’ensemble H ∩ C est donc un convexe fermé (car intersection de deux convexes fermés),
non vide (car il contient pC (y)), de dimension inférieure ou égale à k (car il est inclus dans
H). Par hypothèse de récurrence H ∩ C est l’enveloppe convexe de ses points extrémaux
et de ses demi-droites extrémales. Or les points extrémaux de H ∩ C sont extrémaux dans
C. Cela provient du fait que H est un hyperplan d’appui de C : tous les points de C sont
du même côté de H. Si x est un point extrémal de H ∩ C et barycentre à coefficients
positifs de deux points y et z de C alors y et z doivent être sur H (sinon l’un serait d’un
côté de H, l’autre de l’autre côté, ce qui est impossible). On en déduit que y et z sont
donc dans H ∩ C. Or x est extrémal dans H ∩ C donc y = z = x. Nous avons donc montré
que les points du bord de C étaient dans l’enveloppe convexe de ses points extrémaux et
de ses demi-droites extrémales... à condition d’expliquer pourquoi il existe un point y ∈ /C
tel que pC (y) = x.
Prenons une suite (yk ) de points qui ne soient pas dans C telle que lim yk = x. Alors
p(yk ) tend vers x. Notons Sk (x, 1) la sphère de rayon 1 centrée en x et zk l’intersection
de la demi-droite [x, yk ) avec Sk (x, 1). Alors (zk ) est une suite de points à distance 1 de
x qui sont projetés sur les points p(yk ) qui tendent vers x. Comme la sphère Sk (x, 1)
est compacte, on peut extraire de (zk ) une suite convergente vers une limite z. Alors
d(z, x) = 1, z ∈
/ C et (par continuité de p) p(z) = x.
Considérons maintenant un point x de l’intérieur de C. Notons Sk la sphère unité de Rk+1
(c’est-à-dire l’ensemble des vecteurs de norme 1). Pour v ∈ Sk considérons la demi-droite

Dv = {x + λv / λ ≥ 0},

et la partie de Sk définie par

E = {v ∈ Sk / Dv ⊂ C}.

13
L3 MiaSHS 2017-2018 Optimisation Universités de Rennes 1 & 2

Par hypothèse E ne contient pas deux vecteurs opposés (car C ne contient pas de droite).
Comme C est fermé, E est fermé aussi. Les deux ensembles E et −E sont donc deux
parties fermées disjointes de Sk . Ce sont donc deux parties compactes disjointes et comme
telles elles sont à distance positive l’une de l’autre. On en déduit que leur réunion ne peut
pas être égale à Sk . Prenons v0 ∈ Sk \ (E ∪ −E). Alors Dv0 6⊆ C et D−v0 6⊆ C. Cela signifie
qu’il existe λ et µ positifs tels que

x + λv0 ∈ ∂C et x − µv0 ∈ ∂C.

Autrement dit x est sur un segment joignant deux points du bord de C. Ces deux points
sont dans l’enveloppe convexe des points extrémaux et des demi-droites extrémales de C
(d’après la première partie de la démonstration), donc x aussi.

Proposition 0.9. Soit C un convexe fermé inclus dans Rd . Il est compact si et seulement
s’il ne contient pas de demi-droite.

Démonstration Une demi-droite n’est pas bornée donc si C contient une demi-droite, C
n’est pas borné. Supposons que C ne soit pas bornée. Montrons qu’il contient une demi-
droite. Comme C n’est pas borné, il existe une suite (xk )k≥0 telle que lim kxk = +∞.
Considérons alors la suite des vecteurs
xk − x0
uk = .
kxk − x0 k

Ce sont des vecteurs de norme 1 donc des éléments de Sk . Or Sk est compacte, donc on
peut extraire de (uk )k≥0 une suite convergente (ukj )j≥0 vers une limite l appartenant à
Sk . Pour tout j, xkj appartient à C, donc x0 + ukj aussi (si j est assez grand, car c’est
un point du segment [x0 , xkj ]). Comme C est fermé, on en déduit que x0 + l appartient
à C. Maintenant on peut voir que tout point de la forme x0 + λl, avec λ ≥ 0, est limite
de x0 + λukj (qui appartient à C si j est assez grand) donc est dans C. Conclusion : C
contient la demi-droite {x0 + λl / λ ∈ R+ }.

0.6 Les polyèdres

Théorème 0.10. Un polyèdre a un nombre fini de faces. En particulier il a un nombre


fini de sommets. S’il ne contient pas de droite il contient un nombre fini de demi-droites
extrémales.

Corollaire : un polyèdre compact est l’enveloppe convexe d’un nombre fini de points. Un
polyèdre ne contenant pas de droites est l’enveloppe convexe d’un nombre fini de points
et de demi-droites.
Question : Un polyèdre peut-il contenir une droite et avoir un sommet ?

14
L3 MiaSHS 2017-2018 Optimisation Universités de Rennes 1 & 2

Considérons un polyèdre du type suivant (ensemble de contraintes d’un programme li-


néaire sous forme standard)

C(A, b) = {x ∈ Rn / Ax = b, x ≥ 0},

où A est une matrice m × n. Notons r le rang de A. Si r < m alors, soit le système est
incompatible, et dans ce cas C(A, b), soit le système est équivalent à un système A0 x = b0
avec une matrice r × n de rang r (en enlevant m − r lignes superflues). Nous supposerons
maintenant que m ≤ n et que A est de rang m.
Si m = n le système Ax = b a une unique solution, C(A, b) est un point si A−1 b ≥ 0, et
vide sinon. Le cas le plus intéressant est m < n : C(A, b) est l’intersection de {x / x ≥ 0}
et d’un sous-espace affine de dimension n − m : s’il n’est pas vide, alors pour tout point
x0 de C(A, b), on a
C(A, b) = [x0 + ker φA ] ∩ {x / x ≥ 0}.

0.7 Méthode du simplexe

L’algorithme du simplexe est un algorithme de résolution des problèmes d’optimisation


linéaire. Il a été introduit par George Dantzig à partir de 1947. C’est probablement le
premier algorithme permettant de minimiser une fonction sur un ensemble défini par des
inégalités. De ce fait, il a beaucoup contribué au démarrage de l’optimisation numérique.
L’algorithme du simplexe a longtemps été la méthode la plus utilisée pour résoudre les
problèmes d’optimisation linéaire. Depuis les années 1985-90, il est concurrencé par les
méthodes de points intérieurs, mais garde une place de choix dans certaines circonstances
(en particulier si l’on a une idée des contraintes d’inégalité actives en la solution). 4
Le nom de l’algorithme est dérivé de la notion de simplexe et a été suggéré par Motz-
kin2. En réalité, l’algorithme n’utilise pas de simplexes, mais certaines interprétations de
l’ensemble admissible du problème renvoient au concept de simplexe.

0.7.1 L’algorithme

On se donne un programme linéaire sous forme standard

maxhc, xi s.c. Ax = b, x ≥ 0.

La matrice A est de taille m × n avec m ≤ n, les vecteurs c et x dans Rn , le vecteur b dans


Rm . On suppose que A est de rang maximal m. Appelons C(A, b) l’ensemble des vecteurs
x satisfaisant les contraintes

C(A, b) = {x ∈ Rn / Ax = b, x ≥ 0}.
4. Wikipédia ; https ://[Link]/wiki/Algorithme_du_simplexe

15
L3 MiaSHS 2017-2018 Optimisation Universités de Rennes 1 & 2

Pour décrire l’algorithme il est pratique d’introduire certaines notations. Les sommets de
C(A, b) sont calculés à partir de matrices m×m obtenues en choisissant m colonnes parmi
les n colonnes de A. On décrira un tel choix en indiquant quelles colonnes sont choisies
(B) et quelles colonnes ne le sont pas (N ). On se donnera deux familles d’indices B et N

B = (p1 , . . . , pm ) ∈ {1, . . . , n}m , N = (q1 , . . . , qn−m )in{1, . . . , n}n−m

telles que les pi soient tous différents des qj (et vice-versa) et telles que en prenant les pi
et les qi on obtienne tous les indices de 1 à n. On notera AB la matrice obtenue à partir de
A en ne conservant que les colonnes dont les numéros sont dans B, AN a matrice obtenue
à partir de A en ne conservant que les colonnes dont les numéros sont dans N . La matrice
AN est une matrice m × (n − m), la matrice AB est une matrice carrée m × m.
Lorsque B est donné et x ∈ Rn on note xB le vecteur de Rm dont les coordonnées sont
celles de x de numéros dans B, xN le vecteur de Rn−m dont les coordonnées sont celles
de x de numéros dans N .
Si AB est inversible on dit que c’est une matrice de base de A (la famille B elle même est
alors souvent qualifiée de base...). Dans ce cas le vecteur x défini par xB = A−1
B b, xN = 0
est dit solution de base. Si AB est une base les xj pour j dans B sont dites variables de
base, les xk pour k dans N sont dites variables hors base.
Si AB est une base, on dit que AB et la solution de base sont admissibles si A−1
B b ≥ 0.
−1
Une base admissible est dite dégénérée si certaines des coordonnées de AB b sont nulles,
non dégénérée si A−1
B b > 0.

Proposition 0.11. Le polyèdre C(A, b) ne contient pas de droites. Il est donc égal à l’en-
veloppe convexe de l’ensemble de ses points extrémaux et de ses demi-droites extrémales.

Démonstration Une droite ne peut pas être incluse dans l’ensemble {x / x ≥ 0} a fortiori
pas dans C(A, b). Montrons qu’une droite contient toujours des points dont certaines co-
ordonnées sont négatives. Soit D une droite. Elle peut être représentée paramétriquement
par un point et un vecteur directeur

D = {a + λv / λ ∈ R},

où a et v sont deux vecteurs et v un vecteur directeur de D n’est pas nul. Soit i0 tel que
vi0 ne soit pas nul. Suivant le signe de vi0 on a

lim ai0 + λvi0 = +∞ et lim ai0 + λvi0 = −∞


λ→+∞ λ→−∞

ou
lim ai0 + λvi0 = −∞ et lim ai0 + λvi0 = +∞.
λ→+∞ λ→−∞

Dans tous les cas pour certaines valeurs de λ la coordonnée numéro i0 de a + λv est
négative.

16
L3 MiaSHS 2017-2018 Optimisation Universités de Rennes 1 & 2

En particulier C(A, b) a des sommets. Soit c ∈ Rn . Supposons que hc, xi soit majorée sur
C(A, b), alors le problème a une solution et le maximum est atteint en un sommet de
C(A, b). Le convexe C(A, b) ne contient pas de droite donc est égal à l’enveloppe convexe
de ses points extrémaux et de ses demi-droites extrémales. Notons si pour i allant de 1
à r les sommets de C(A, b). Les extrémités des demi-droites sont des points extrémaux.
On peut numéroter les sommets de telle façon que les premiers soient des extrémités de
demi-droites extrémales. Si C(A, b) contient s demi-droites extrémales elles sont de la
forme
{si + λvi / λ ≥ 0}.
Soit x un élément de C(A, b). Comme C(A, b) est ’enveloppe convexe de ses points ex-
trémaux et de ses demi-droites extrémales, il existe des nombres positifs ou nuls αi , λj ,
i = 1, . . . , r, j = 1, . . . , s, tels que ri=1 αi = 1 et
P

s
X r
X
x= αj (sj + λj vj ) + αi si .
j=1 i=s+1

Or hc, vj i ≤ 0 pour tout j. En effet sinon on aurait

lim hc, si + λvj i = +∞


λ→+∞

ce qui contredirait le fait que hc, xi est majorée sur C(A, b) (nous nous sommes placé sous
cette hypothèse). Mais alors on a
s
X r
X
hc, xi = hc, αj (sj + λj vj ) + αi si i
j=1 i=s+1
s
X r
X
= αj (hc, sj i + λj hc, vj i) + αi hc, si i
j=1 i=s+1
Xs r
X
≤ αj hc, sj i + αi hc, si i
j=1 i=s+1
Xr
= αi hc, si i
i=1
r
!
X
≤ αi maxhc, si i
i
i=1
= maxhc, si i
i

ce qui montre que le maximum de la fonction hc, xi est atteint en un sommet.


Proposition 0.12. Soit A une matrice m × n avec m ≤ n de rang m. Soit B une famille
d’indices compris entre 1 et n telle que AB soit inversible. Alors sont équivalents :
– Ax = b
– xB = A−1 −1
B b − AB AN xN .

17
L3 MiaSHS 2017-2018 Optimisation Universités de Rennes 1 & 2

Démonstration L’égalité  
xB
(AB , AN ) =b
xN
s’écrit AB xB + AN xN = b. En multipliant par A−1
B on obtient

xB = A−1 −1
B b − AB AN xN .

Proposition 0.13. On se donne B = (p1 , . . . , pm ), N = (q1 , . . . , qn−m ) tels que AB soit


une matrice de base. Posons

A = A−1
B AN = (ars )r=1...,m;s=1,...n−m , b = AB −1b

Si ars 6= 0 alors, pour B 0 = (p1 , . . . , pr−1 , qs , pr+1 , . . . , pm ), AB 0 est inversible et A−1


B0 =
−1
EAB où  
1 0 . . . 0 η1 0 . . . 0 0
 0 1 ... 0 η 0 ... 0 0 
 2 
 . . . . . . . . .
 .. .. . . .. .. .. . . .. .. 

 
 0 0 ... 1 η 0 ... 0 0 
 r−1 
E =  0 0 . . . 0 ηr 0 . . . 0 0 
 
 
 0 0 . . . 0 ηr+1 1 . . . 0 0 
 . .
 . . . . . .. .. .. . . .. .. 
. . . 
 . . . . . 
 
 0 0 . . . 0 ηm−1 0 . . . 1 0 
0 0 . . . 0 ηm 0 . . . 0 1
où ηr = 1/ars et si i 6= r, ηi = −ais /ars (seule la rème colonne différencie E de l’identité).

L’élément ars s’appelle un élément pivot.


Si x et x0 sont les solutions de bases associées à B et B 0 on a
ais br
x0pi = bi − br , si i 6= r, x0qs = , x0 = 0 sinon
ars ars j
Démonstration La matrice AB 0 est obtenu à partir de AB en remplaçant sa réme colonne
par la sème colonne de AN . Notons (e1 , . . . , en ) la base canonique de Rn . Si i 6= r on a

AB epi = AB 0 epi

(ces vecteurs sont les vecteurs colonne de AB et AB 0 qui coïncident). On en déduit que
A−1
B 0 AB est l’identité sur V ect{epi / i 6= r}. D’autre part AB 0 eqs est la colonne numéro qs
de A c’est-à-dire
AB 0 eqs = AN eqs .

18
L3 MiaSHS 2017-2018 Optimisation Universités de Rennes 1 & 2

On en déduit que A−1


B AB 0 eqs vaut

AB −1AB 0 eqs = A−1


B AN eqs ,

autrement dit A−1


B AB 0 eqs est la colonne numéro s de A. Nous avons ainsi identifié les m
vecteurs colonne de AB −1AB 0 ce qui permet d’écrire la matrice :
 
1 0 ... 0 a1s 0 ... 0 0
 0 1 ... 0 a2s 0 ... 0 0 
 
 . . . . . . . . .
 .. .. . . .. .. .. . . .. .. 

 
 0 0 ... 1 a 0 ... 0 0 
 (r−1)s 
−1
AB AB 0 =  0 0 . . . 0 ars 0 ... 0 0 
 
 
 0 0 . . . 0 a(r+1)s 1 . . . 0 0 
 . .
 . . . . . .. .. .. . . .. .. 
. . . 
 . . . . . 
 
 0 0 . . . 0 a(m−1)s 0 . . . 1 0 
0 0 ... 0 ams 0 ... 0 1

La matrice E de l’énoncé est l’inverse de cette matrice. On se convaincra qu’elle a bien la


forme annoncée.

Proposition 0.14. Un sommet de C(A, b) est de la forme (xB , xN ) avec xB = A−1


B b,
−1
xN = 0 où AB b ≥ 0.

Proposition 0.15. On se donne un programme linéaire sous forme standard et AB une


matrice de base admissible. On a

hc, xi =t cB A−1 t t −1
B b + ( cN − cB AB AN )xN .

On appelle le vecteur t c =t cN −t cB A−1


B AN le vecteur des coût réduits. S’il est à coordonnées
−1
négatives ou nulles alors xB = AB b, xN = 0 fournit une solution optimale au problème.
On a une réciproque partielle : si A−1 B b est à coordonnées strictement positives et fournit
une solution optimale alors le vecteur des coûts réduits associé est à coordonnées négatives
ou nulles.

Démonstration Considérons un point y tel que Ay = b et y ≥ 0. On a vu qu’alors on a


l’égalité yB = A−1 −1
B b − AB AN yN ; en prenant le produit scalaire par c on obtient

hc, yi = hcB , yB i + hcN , yN i


= hcB , A−1 −1
B b − AB AN yN i + hcN , yN i
= hcB , A−1 −1
B bi − hcB , AB AN yN i + hcN , yN i
= hcB , A−1 t −1
B bi − h (AB AN )cB , yN i + hcN , yN i
= hcB , A−1 t −1
B bi + hcN − (AB AN )cB , yN i
= hcB , A−1
B bi + hc, yN i.

19
L3 MiaSHS 2017-2018 Optimisation Universités de Rennes 1 & 2

Si c ≤ 0 on a hc, yN i ≤ 0 car y ≥ 0 donc

hc, yN i ≤ hcB , A−1 −1


B bi = hcB , AB bi + hcN , 0N i,

où l’on noté 0N le vecteur dont les coordonnées d’indice dans N sont nulles. Or le vecteur
(AB −1b, 0N ) est un sommet de C(A, b). Nous avons montré que si c ≤ 0 alors le sommet
associé à B est un point où la fonction objectif est maximale.
Supposons maintenant que le sommet x = (AB −1b, 0N ) associé à B est un point où la
fonction objectif est maximale. De l’inégalité

hc, yi ≤ hc, xi

on tire
hcB , A−1 −1
B bi + hc, yN i ≤ hcB , AB bi + 0, donc hc, yN i ≤ 0.

Que x ne soit pas dégénéré signifie que A−1


B b > 0. Pour λ > 0 suffisamment petit on a
−1 −1
donc AB b ≥ λAB AN ei . Posons xN = λei , xλB = A−1
λ −1 λ λ λ
B b − λAB AN ei , x = (xB , xN ). On a
Axλ = b, xλ ≥ 0 et

hc, xi = hcB , A−1 −1 −1 t −1


B bi − hcB , λAB AN ei i + hcN , λei i = hcB , AB bi + hcN − (AB AN )cB , λei i

autrement écrit
hc, xi = hc, xi + hc, λei i = hc, xi + λci .
Comme hc, xλ i ≤ hc, xi cela entraîne que ci est négatif ou nul.

Proposition 0.16. On se donne un programme linéaire sous forme standard et AB une


matrice de base admissible. Introduisons des notations A = A−1 B AN , b = AB −1b, c le
vecteur des coûts réduits. On suppose qu’il existe qs ∈ N tel que cs > 0.
Si A·s ≤ 0 alors x 7→ hc, xi n’est pas majorée sur l’ensemble C(A, b).
Si A·s 6≤ 0 considérons λ0 = min{bi /ais / i = 1, . . . , m, ais > 0} et prenons r tel
que br /ars = λ0 . Alors pour B 0 = (p1 , . . . , pr−1 , qs , pr+1 , . . . , pm ), x0 = (A−1
B 0 b, 0N 0 est un
sommet où la fonction objectif est plus grande (au sens large) qu’en x = (A−1 B b, 0N . Si
−1 0
x = (AB b, 0N ) nest pas dégénéré on a hc, x i > hc, xi.

Démonstration Nous avons vu que


ais br
x0pi = bi − br , si i 6= r, x0qs = , x0j = 0 sinon.
ars ars
Comme br /ars ≤ bi /ais , on a
ais ais
x0pi = bi − br ≥ bi − bi = 0 si ais > 0,
ars ais
et
ais
x0pi = bi − br ≥ bi si ais = 0.
ars

20
L3 MiaSHS 2017-2018 Optimisation Universités de Rennes 1 & 2

Par ailleurs x0qs = br /ars et les autres coordonnées de x0 sont nulles, donc x0 est un sommet
de C(A, b).
Calculons maintenant la fonction objectif en x0 :

hc, x0 i = hcB 0 , x0B 0 i


= hcB 0 , A−1
B 0 bi
= hcB 0 , EA−1
B bi
= ht EcB 0 , A−1
B bi
= ht EcB 0 , xB i
X X
= cp i x p i + cpi ηi xpr + cqs ηr xpr
i6=r i6=r
X X
= cp i x p i − cp r x p r + cpi ηi xpr + cqs ηr xpr
i i6=r
= hcB , xB i + (hcB 0 , ηi − cpr ) xpr .

Or

0 < cs = (cN −t (A−1 AN )cB )s = cqs − hA·s , cB i


XB X
= cqs − cpi ais = cqs − cpi ais − cpr ars
i i6=r
!
X
= ars cqs /ars − cpi ais /ars − cpr
i6=r
!
X
= ars cqs ηr + cpi ηi − cpr
i6=r
= ars (hcB 0 , ηi − cpr ) .

On en déduit que hcB 0 , ηi − cpr est strictement positif, et comme xpr l’est aussi (car on
suppose que le sommet n’est pas dégénéré), on a

hc, x0 i > hcB , xB i = hc, xi.

0.7.2 Quelques exemples (sous forme de tableaux)

En pratique l’algorithme du simplexe fait partie des fonctions classiques des programmes
de calculs usuels (comme les tableurs). Pour décrire comment il fonctionne nous allons
le décrire sous la forme de tableaux successifs sur quelques exemples. Considérons le
programme linéaire suivant
max x1 + 2x2

21
L3 MiaSHS 2017-2018 Optimisation Universités de Rennes 1 & 2

sous contraintes

x1 ≤ 4, 2x1 + x2 ≤ 10, −x1 + x2 ≤ 5, x1 , x2 ≥ 0.

Nous introduisons des variables supplémentaires x3 , x4 , x5 pour mettre le programme sous


forme standard :
max x1 + 2x2
sous contraintes

x1 + x3 = 4, 2x1 + x2 + x4 = 10, −x1 + x2 + x5 = 5, x1 , x2 , x3 , x4 , x5 ≥ 0.

Sous forme matricielle ce programme linéaire s’écrit :

maxhc, xi s.c. Ax = b, x ≥ 0,

où x est dans R5 , c et b dans R3 ,


   
x1 1
   
1 0 1 0 0 
 x2 


 2 
 4
A= 2 1 0 1 0  x= x3 c = 0  b =  10  .
   
 
−1 1 0 0 1
   
 x4   0  5
x5 0

À partir de ces données nous construisons le tableau suivant que nous allons transformer
à partir des règles de pivotage définies plus haut.

1 2 0 0 0 0
1 0 1 0 0 4 x3
2 1 0 1 0 10 x4
-1 1 0 0 1 5 x5

Les traits du tableau définissent quatre zones : la ligne en haut à gauche est le vecteur des
coûts réduits, en bas à gauche on reconnaît A, en bas à droite b et des noms de variables.
Les noms de variables indiquent quel sommet du polyèdre est considéré. Ici c’est le sommet
dont les coordonnées sont (0, 0, 4, 10, 5). En ce sommet la fonction objectif est nulle : c’est
la signification du 0 figurant en haut à droite.
Pour choisir comment nous allons transformer ce tableau on considère les coordonnées
positives du vecteur des coûts réduits figurant (en rouge ci-dessous) et nous choisissons
un pivot parmi les coefficients positifs dans les colonnes correspondantes (en vert).

1 2 0 0 0 0
1 0 1 0 0 4 x3
2 1 0 1 0 10 x4
-1 1 0 0 1 5 x5

22
L3 MiaSHS 2017-2018 Optimisation Universités de Rennes 1 & 2

Ici on peut choisir l’une ou l’autre des deux premières colonnes. Si l’on choisit la première
on calcule 4/1 = 4 et 10/2 = 5 pour pivot il faut prendre le 1 (en violet ci-dessous)

1 2 0 0 0 0
1 0 1 0 0 4 x3
2 1 0 1 0 10 x4
-1 1 0 0 1 5 x5

Si l’on choisit la deuxième colonne on calcule 10/1 = 10 et 5/1 = 5 pour pivot il faut
prendre le deuxième 1 (en violet ci-dessous)

1 2 0 0 0 0
1 0 1 0 0 4 x3
2 1 0 1 0 10 x4
-1 1 0 0 1 5 x5

Supposons qu’on ait choisit la première solution. Alors on utilise le pivot pour annuler
tous les coefficients de la colonne correspondante en faisant des opérations sur les lignes
(première ligne moins la deuxième, troisième moins deux fois la deuxième, quatrième plus
la deuxième). On obtient

0 2 -1 0 0 -4
1 0 1 0 0 4 x1
0 1 -2 1 0 2 x4
0 1 1 0 1 9 x5

On indique en dernière colonne que le nouveau sommet obtenu a ses coordonnées x1 , x4 , x5


différentes de 0 et x2 x3 sont nulles (car on a pivoté sur le coefficient correspondant à x1
là où précédemment on considérait x3 ). Les coordonnées de la base considérée à une étape
de l’algorithme sont les trois pour lesquelles les trois colonnes donnent la matrice identité.
Le nombre en haut à droite est égal à l’opposé de la valeur de la fonction objectif au
sommet considéré : ici cette valeur est donc 4 (on est passé de 0 à 4). On continue de la
même façon.

0 2 -1 0 0 -4
1 0 1 0 0 4 x1
0 1 -2 1 0 2 x4
0 1 1 0 1 9 x5

0 2 -1 0 0 -4
1 0 1 0 0 4 x1
0 1 -2 1 0 2 x4
0 1 1 0 1 9 x5

23
L3 MiaSHS 2017-2018 Optimisation Universités de Rennes 1 & 2

0 0 3 -2 0 -8
1 0 1 0 0 4 x1
0 1 -2 1 0 2 x2
0 0 3 -1 1 7 x5

0 0 3 -2 0 -8
1 0 1 0 0 4 x1
0 1 -2 1 0 2 x2
0 0 3 -1 1 7 x5

0 0 0 -1 -1 -15
1 0 0 1/3 -1/3 5/3 x1
0 1 0 1/3 2/3 20/3 x2
0 0 1 -1/3 1/3 7/3 x3

Tous les coûts réduits sont négatifs. Nous avons trouvé le sommet qui maximise la fonction
objectif : (5/3, 20/3, 7/3, 0, 0), et la valeur du maximum : 15.
Si on avait choisi la deuxième colonne on aurait obtenu :

1 2 0 0 0 0
1 0 1 0 0 4 x3
2 1 0 1 0 10 x4
-1 1 0 0 1 5 x5

3 0 0 0 -2 -10
1 0 1 0 0 4 x3
3 0 0 1 -1 5 x4
-1 1 0 0 1 5 x2

3 0 0 0 -2 -10
1 0 1 0 0 4 x3
3 0 0 1 -1 5 x4
-1 1 0 0 1 5 x2

0 0 0 -1 -1 -15
1 0 1 -1/3 1/3 7/3 x3
1 0 0 1/3 -1/3 5/3 x1
0 1 0 1/3 2/3 20/3 x2

24
L3 MiaSHS 2017-2018 Optimisation Universités de Rennes 1 & 2

C’est bien la même solution que celle que nous avions trouvé en choisissant la première
colonne. Nous n’avons parcouru le même chemin de sommets pour parvenir à l’optimum
mais nous aboutissons finalement au même.
Considérons un autre exemple (celui de l’introduction) :

min 3x1 + 5x2

sous contraintes

2x1 + x2 ≥ 3, 2x1 + 2x2 ≥ 5, x1 + 4x2 ≥ 4, x1 , x2 ≥ 0.

Considérons le problème dual


max 3y1 + 5y2 + 4y3
sous contraintes

2y1 + 2y2 + y3 ≤ 3, y1 + 2y2 + 4y3 ≤ 5, y1 , y2 , y3 ≥ 0.

La version standard de ce problème sous forme canonique est

max 3y1 + 5y2 + 4y3

sous contraintes

2y1 + 2y2 + y3 + s1 = 3, y1 + 2y2 + 4y3 + s2 = 5, y1 , y2 , y3 , s1 , s2 ≥ 0.

Construisons le tableau correspondant et appliquons l’algorithme (pour chaque étape


j’indique seulement le pivot choisi puis le résultat des calculs correspondants)

3 5 4 0 0 0
2 2 1 1 0 3 s1
1 2 4 0 1 5 s2

3 5 4 0 0 0
2 2 1 1 0 3 s1
1 2 4 0 1 5 s2

2 3 0 0 -1 -5
7/4 3/2 0 1 0 7/4 s1
1/4 1/2 1 0 1/4 5/4 x3

2 3 0 0 -1 -5
7/4 3/2 0 1 0 7/4 s1
1/4 1/2 1 0 1/4 5/4 x3

25
L3 MiaSHS 2017-2018 Optimisation Universités de Rennes 1 & 2

0 9/7 0 -8/7 -1 -7
1 6/7 0 4/7 0 1 x1
0 2/7 1 -1/7 1/4 1 x3

0 9/7 0 -8/7 -1 -7
1 6/7 0 4/7 0 1 x1
0 2/7 1 -1/7 1/4 1 x3

-3/2 0 0 -14/7 -1 -17/2


7/6 1 0 2/3 0 7/6 x2
-1/3 0 1 -2/21 1/4 2/3 x3

L’algorithme est fini : la fonction objectif est maximale au sommet (0, 7/6, 2/3, 0, 0) et sa
valeur maximale est 17/2.
Dans les exemples précédents il est facile de trouver le vecteur des coût réduits car on
commence avec un sommet dont les coordonnées différentes de 0 sont artificielles. Que se
passe-t-il si on un problème est déjà donné sous forme standard ? On peut calculer un
sommet et le vecteur des coûts réduits correspondant. Une autre manière de procéder est
d’introduire là aussi des variables artificielles. Voyons comment sur un exemple :

max x1 − x2 + 2x3

sous contraintes

2x1 − 3x2 + x3 = 3, −x1 + 2x2 + x3 = −1, 3x1 − 5x2 = 4, x1 , x2 , x3 ≥ 0.

On introduit trois variables artificielles s1 , s2 , s3 et on pose le problème

max x1 − x2 + 2x3

sous contraintes

2x1 − 3x2 + x3 + s1 = 3, x1 − 2x2 − x3 + s2 = 1, 3x1 − 5x2 + s3 = 4, x1 , x2 , x3 , s1 , s2 , s3 ≥ 0.

Sous forme de tableau il s’écrit

1 -1 2 0 0 0 0
2 -3 1 1 0 0 3 s1
1 -2 -1 0 1 0 1 s2
3 -5 0 0 0 1 4 s3

0 1 3 0 -1 0 -1
0 1 3 1 -2 0 1 s1
1 -2 -1 0 1 0 1 x1
0 1 3 0 -3 1 1 s3

26
L3 MiaSHS 2017-2018 Optimisation Universités de Rennes 1 & 2

0 0 0 -1 1 0 -2
0 1/3 1 1/3 -2/3 0 1/3 x3
1 -5/3 0 1/3 1/3 0 4/3 x1
0 0 0 -1 -1 1 0 s3

0.7.3 Cyclage

max 4/5x1 − 18x2 − x3 − x4


sous contraintes

16/5x1 −84x2 −12x3 +8x4 ≤ 0, 1/5x1 −5x2 −2/3x3 +1/3x4 ≤ 0, x1 ≤ 1 x1 , x2 , x3 , x4 ≥ 0.

max 4/5x1 − 18x2 − x3 − x4


sous contraintes

16/5x1 − 84x2 − 12x3 + 8x4 + x5 = 0, 1/5x1 − 5x2 − 2/3x3 + 1/3x4 + x6 = 0, x1 + x7 = 1

x1 , x2 , x3 , x4 , x4 , x6 , x7 ≥ 0.

4/5 -18 -1 -1 0 0 0 0
16/5 -84 -12 8 1 0 0 0 x5
1/5 -5 -2/3 1/3 0 1 0 0 x6
1 0 0 0 0 0 1 1 x7

0 3 2 -3 -1/4 0 0 0
1 -105/4 -15/4 5/2 5/16 0 0 0 x1
0 1/4 1/12 -1/6 -1/16 1 0 0 x6
0 105/4 15/4 -5/2 -5/16 0 1 1 x7

0 0 1 -1 1/2 -12 0 0
1 0 5 -15 -25/4 105 0 0 x1
0 1 1/3 -2/3 -1/4 4 0 0 x2
0 0 -5 15 25/4 -105 1 1 x7

-1/5 0 0 2 7/4 -33 0 0


1/5 0 1 -3 -5/4 21 0 0 x3
-1/15 1 0 1/3 1/6 -3 0 0 x2
1 0 0 0 0 0 1 1 x7

27
L3 MiaSHS 2017-2018 Optimisation Universités de Rennes 1 & 2

1/5 -6 0 0 3/4 -15 0 0


-2/5 9 1 0 1/4 -6 0 0 x3
-1/5 3 0 1 1/2 -9 0 0 x4
1 0 0 0 0 0 1 1 x7

7/5 -33 -3 0 0 3 0 0
-8/5 36 4 0 1 -24 0 0 x5
3/5 -15 -2 1 0 3 0 0 x4
1 0 0 0 0 0 1 1 x7

4/5 -18 -1 -1 0 0 0 0
16/5 -84 -12 8 1 0 0 0 x5
1/5 -5 -2/3 1/3 0 1 0 0 x6
1 0 0 0 0 0 1 1 x7

Nous sommes revenus au tableau de départ ! Tout ça pour rien... On dit qu’il y a eu
cyclage. Cela peut se produire quand les sommets parcourus sont dégénérés.

0.8 Utilisation du solveur d’un tableur

Ce que nous avons montré est que les problèmes de programmation linéaire pouvaient
se résoudre grâce à des opérations simples sur des tableaux et que des algorithmes de
résolution existaient. La résolution de tels problèmes peut se faire grâce à un tableur.
Je recopie quelques photos d’écran qui donnent une idée de la méthode à suivre. Vous
trouverez facilement plus de détails sur internet...

28
L3 MiaSHS 2017-2018 Optimisation Universités de Rennes 1 & 2

29
L3 MiaSHS 2017-2018 Optimisation Universités de Rennes 1 & 2

30

Vous aimerez peut-être aussi