Upload
trinhdang
View
218
Download
0
Embed Size (px)
Citation preview
Graphes et RO – TELECOM Nancy 2A
Chapitre 2 : Methode du Simplexe
J.-F. Scheid
v2.1
1
Plan du chapitre
1 Introduction
2 Progression de l’algorithme du simplexe (phase 2)
3 Methode des dictionnaires
4 Finitude du simplexe
5 Initialisation du simplexe (phase 1)
6 Complexite
7 Quelques solveurs de PL
2
I. Introduction
On a vu que pour resoudre un PL, il suffit de se restreindre aux solutionsde bases realisables.
Methode du simplexe due a G. Dantzig (1947).
G. Dantzig, 1914-2005
3
Les deux phases de la methode du simplexe :
1 Phase 1 – Initialisation : Trouver une solution de base realisable(ou bien detecter l’impossibilite).
2 Phase 2 – Progression : On passe d’un sommet a un sommet voisinpour augmenter la fonction objectif
Remarque : On appelle n-simplexe ou simplement simplexe, l’enveloppeconvexe d’un ensemble de n + 1 points (n = 1 : un segment, n = 2 : untriangle, n = 3 : un tetraedre)
4
II. L’algorithme du simplexe proprement dit : Phase 2
PL sous forme standard
maxx∈Rn
[F (x) = c>x
]{
Ax = bx ≥ 0
On dispose d’une base B et d’une solution de base realisable x avec (a unepermutation pres des colonnes de A)
A = (AB | AH) et x =
(xBxH
)ou AB matrice m ×m, inversible (variables de base)
AH matrice m × (n −m) (variables hors-base)
But : on veut trouver une autre base B∗ et une solution de base realisablex∗ telles que x∗ est meilleur que x c-a-d
F (x∗) > F (x)
5
Principe de la methode du simplexe : faire rentrer une variablehors-base dans la nouvelle base (variable entrante) et faire sortir a la placeune variable de base (variable sortante).
1) Variable entrante - calcul des couts reduits
Fonction objectif F exprimee en fonction des variables hors-base.
Ensemble des solutions realisables DR = {x ∈ Rn|Ax = b, x ≥ 0}.
Proposition (Couts reduits)
Pour tout x ∈ DR , on a
F (x) = F (x) + L>HxH
ouL>H = c>H − c>BA
−1B AH
est le vecteur des couts reduits.
6
Demonstration.
On a b = Ax = ABxB + AHxH avec AB inversible doncxB = A−1B (b− AHxH). On obtient donc
F (x) = c>x = c>BxB + c>HxH avec c =
(cBcH
)= c>BA
−1B (b− AHxH) + c>HxH
= c>BA−1B b + (c>H − c>BA
−1B AH)xH
Or xB = A−1B b (car xH = 0) et c>BA−1B b = c>x = F (x) donc
F (x) = F (x) + (c>H − c>BA−1B AH)xH .
�
7
Variable entrante
Si les couts reduits sont tous negatifs i.e. L>H ≤ 0, il n’est alors paspossible d’augmenter la fonction objectif F : l’algorithme se terminenormalement c’est-a-dire qu’on a trouve une solution de baserealisable x optimale.
Dans le cas contraire (i.e. ∃(LH)i > 0), on a interet a faire entrerdans la base, la variable hors-base qui a le cout reduitpositif le plus grand possible.
On note e /∈ B l’indice de la variable entrante. On choisit e tel que
(LH)e = maxj
{(LH)j , (LH)j > 0
}ce qu’on note par
e = argmaxj
{(LH)j , (LH)j > 0
}8
Remarque. Si on traite d’un probleme de minimisation c’est-a-dire avec
minF (x),
alors la variable entrante xe est determinee par l’indice
e = argminj
{(LH)j , (LH)j < 0
}
9
2) Variable sortante
Une fois l’indice e choisi, il faut determiner la variable qui doit quitter labase. En maintenant la relation Ax = b avec x ≥ 0, on augmente lavariable entrante xe jusqu’a annuler une des variables de base. Cettevariable sera alors la variable sortante.
Ax = b ⇔ ABxB + Aexe = b ou Ae designe la e-ieme colonne de A
⇔ xB = A−1B (b− Aexe)
⇔ xB = xB − A−1B Aexe
⇔ xB = xB − zxe
avecz = A−1B Ae ∈ Rm.
10
On doit avoir : xB = xB − zxe ≥ 0
Si z ≤ 0, on peut augmenter xe autant qu’on veut, on aura toujoursla positivite de la variable de base xB . La fonction objectif n’est pasmajoree sur DR (maxF = +∞) ⇒ arret de l’algorithme.
Sinon (i.e. il existe zi > 0), pour avoir la positivite (xB)i − zixe ≥ 0pour tout i , on choisit la variable sortante xs pour laquelle le rapport(xB)i/zi pour i = 1, · · · ,m avec zi > 0, est le plus petit possible :
Variable sortante (indice) :
s = argmini
{(xB)izi
, zi > 0}
On a, dans ce cas, xs = 0 et xB ≥ 0.
11
Remarque. La valeur de la variable entrante est donnee par
xe = mini
{(xB)izi
, zi > 0}
12
Methode du simplexe en phase 2 (progression)
1 Calcul des variables de base realisables :Etant donne A = (AB | AH), on calcule xB = A−1B b ≥ 0.
Calcul des couts reduits :L>H = c>H − c>BA
−1B AH
(F (x) = F (x) + L>H xH
)Si LH ≤ 0 alors xB est une solution optimale (→ arret de l’algo.).
2 variable entrante : e = argmaxj
{(LH)j , (LH)j > 0
}3 variable sortante : • Calcul de z = A−1B Ae puis
• s = argmini
{(xB)izi
, zi > 0}
.
4 On obtient une nouvelle base B et une nouvelle matrice AB
dans
laquelle la colonne Ae remplace la colonne As . Calcul de A−1B
etretour en 1.
13
III. Methode des dictionnaires
PL sous forme standard maxx F (x) = c>x{Ax = bx ≥ 0
Principe: on exprime les variables de base xB ainsi que F en fonction desvariables hors-base xH . On obtient un systeme lineaire qu’on appelledictionnaire.
Exemple du probleme de production.Forme standard (variables d’ecart e1, e2, e3)
maxF (x1, x2) = 6x1 + 4x23x1 + 9x2 + e1 = 814x1 + 5x2 + e2 = 552x1 + x2 + e3 = 20x1, x2 ≥ 0, e1, e2, e3 ≥ 0
14
? Etape 1.Solution de base realisable initiale :
x1 = 0, x2 = 0, e1 = 81, e2 = 55, e3 = 20 avec F = 0.
Dictionnaire: On exprime les variables de base e1, e2, e3 en fonctiondes variables hors-base x1, x2.
e1 = 81− 3x1 − 9x2e2 = 55− 4x1 − 5x2e3 = 20− 2x1 − x2F = 6x1 + 4x2
Variable entrante xe : max>0{6, 4} = 6⇒ xe = x1 .
Variable sortante xs : on maintient e1 ≥ 0, e2 ≥ 0, e3 ≥ 0
⇒ x1 = min>0{81
3,
55
4,
20
2} = 10⇒ xs = e3 .
Nouvelle Solution de base realisable :x1 = 10, x2 = 0, e1 = 51, e2 = 15, e3 = 0 avec F = 60.
15
? Etape 2.Dictionnaire: On exprime la nouvelle variable de base x1 en fonctionde x2 et e3 (nouvelle variable hors-base). On utilise la 3eme equationdu dictionnaire de l’etape 1 et on substitue x1 dans les autresrelations.
x1 = 10− 12x2 −
12e3
e1 = 81− 3(10− 12x2 −
12e3)− 9x2
e2 = 55− 4(10− 12x2 −
12e3)− 5x2
F = 6(10− 12x2 −
12e3) + 4x2
16
On obtient ainsi le dictionnaire (etape 2)
x1 = 10− 12x2 −
12e3
e1 = 51− 152 x2 + 3
2e3
e2 = 15− 3x2 + 2e3
F = 60 + x2 − 3e3
Variable entrante xe : max>0{1, −3} = 1⇒ xe = x2 .
Variable sortante xs : on maintient x1 ≥ 0, e1 ≥ 0, e2 ≥ 0
⇒ x2 = min>0{ 10
1/2,
51
15/2,
15
3} = 5⇒ xs = e2 .
Nouvelle Solution de base realisable (etape 2) :
x1 =15
2, x2 = 5, e1 =
27
2, e2 = 0, e3 = 0 avec F = 65.
17
? Etape 3.Dictionnaire: On exprime la nouvelle variable de base x2 en fonctiondes variables hors-base e2 et e3. On utilise la 3eme equation dudictionnaire de l’etape 2 et on substitue x2 dans les autres relations.
x2 = 5− 13e2 + 2
3e3
x1 = 152 + 1
6e2 −56e3
e1 = 272 + 5
2e2 −72e3
F = 65−13e2−
73e3
Tous les couts reduits sont ≤ 0 donc on ne peut plus augmenter F :l’optimum est atteint et la solution optimale est
x∗1 =15
2, x∗2 = 5, e∗1 =
27
2, e∗2 = 0, e∗3 = 0 avec maxF = 65.
18
IV. Finitude du simplexe
A chaque etape de l’algorithme du simplexe (en phase 2), il y a des casremarquables qui conduisent tous a l’arret de l’algorithme.
1 Si les couts reduits LH < 0, alors la solution de base realisablecourante est l’unique optimum.
����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
DR
F(x) = Fmax
optimum unique
19
2 Si les couts reduits LH ≤ 0, alors il y a deux cas remarquables :
i) si (LH)e = 0 et xe > 0, alors l’optimum n’est pas unique.
����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
DR
maxF(x) = F
optimums
20
ii) si (LH)e = 0 et xe = 0, alors l’optimum est unique (a priori). Dans cecas, la base est dite degeneree c’est-a-dire qu’il existe une variablede base nulle.
����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
DR
F(x) = Fmax
optimum unique dégénéré
3 Si (LH)e > 0 et xe est non borne alors la fonction objectifF n’est pas majoree.
21
Finitude du simplexe
Une solution de base realisable est dite degeneree si au moins une desvariables de base est nulle.
Theoreme
Si au cours de l’algorithme du simplexe, aucune base rencontree n’estdegeneree, alors l’algorithme se termine en un nombre fini d’iterations.
Demonstration. A une iteration donnee de l’algorithme :
soit on detecte une fonction objectif non majoree (→ arret de l’algo.),
soit elle est strictement croissante car Fopt − Fopt = (LH)exe > 0puisque (LH)e > 0 et xe > 0 (par hypothese, aucune base rencontreen’est degeneree).
Par consequent, on ne rencontre jamais une base deja rencontree a uneiteration precedente. Le nombre de solution de base realisable etant fini(≤ Cm
n ), l’algorithme s’arrete necessairement en un nombre finid’iterations. �
22
Remarque: S’il existe une base degeneree, alors on peut rencontrer uneventuel cyclage de l’algorithme : on retrouve une base deja rencontree eton boucle indefiniment. Pour traiter les cas de degenerescence, on peutappliquer la regle de Bland (1977) qui assure l’arret de l’algorithme en unnombre fini d’iterations.
Regle de Bland
Lorsque plusieurs variables sont susceptibles d’entrer ou de sortir de labase, on choisit toujours celle qui a l’indice le plus petit.
23
V. Initialisation du simplexe (phase 1)
1) IntroductionPour un PL sous forme canonique pure avec les contraintes
Ax ≤ b, x ≥ 0,
on peut determiner facilement une solution de base realisable dans le casou b ≥ 0. En effet, sous forme standard les contraintes deviennentAx + e = b, avec x, e ≥ 0 ou e sont les variables d’ecarts.
Une solution de base realisable evidente dans ce cas, est
x = 0, e = b ≥ 0.
Mais pour un PL sous forme standard, il n’y a pas toujours de solution debase realisable evidente.
Construction des solutions de base realisable = phase d’initialisation dusimplexe (phase 1).
24
2) Variables auxiliaires
PL sous forme standard
(PL)
max
x
[F (x) = c>x
]Ax = bx ≥ 0
On ne suppose pas que la matrice A ∈Mm×n est de rang plein, ni qu’ilexiste bien des solutions realisables.
Pour obtenir une solution de base realisable ou bien pour detecterl’impossibilite, on introduit un probleme de programmation lineaireauxiliaire pour des variables supplementaires appelees variablesartificielles.
25
Programme auxiliaire
Le programme auxiliaire associe a (PL) s’ecrit
(PLA)
min(x,a)
m∑i=1
ai
Ax + a = bx ≥ 0a ≥ 0
ou a = (a1, · · · , am) sont appelees variables artificielles.
26
On a la propriete (evidente) suivante.
Proposition
Un (PL) admet une solution realisable si et seulement si le problemeauxiliaire (PLA) admet une solution de base optimale avec a = 0.
Determination d’une solution de base realisable via le problemeauxiliaire : On applique l’algorithme du simplexe au probleme auxiliaire(PLA). A la fin du simplexe, le cout minimal est nul sinon on a detectel’impossibilite pour (PL) (i.e. DR = ∅). Si tout s’est deroule normalement(cout nul), on cherche a eliminer de la base toutes les variables artificielles.
Deux cas possibles :
1 On a reussi a faire sortir toutes les variables artificielles. On passe a laphase 2 du simplexe.
2 S’il reste des variables artificielles dans la base (base degeneree) alorsles lignes associees a ces variables sont des contraintes redondantesqu’on elimine.
27
Resume de la phase d’initialisation du simplexe (phase 1)
On note Faux la valeur de la fonction objectif du probleme auxiliaire (PLA)
a la fin du simplexe, c’est-a-dire Faux = min(x,a)
m∑i=1
ai .
1 Si Faux = 0 et @aj ∈ XB ou XB designe l’ensemble des variables debase pour (PLA), alors fin normale de la phase 1. On passe a la phase2 du simplexe.
2 Si Faux = 0 et ∃aj ∈ XB avec aj = 0, alors on supprime les lignes etcolonnes associees aux aj et on passe a la phase 2.
3 Si Faux > 0 alors pas de solution realisable (DR = ∅).
28
VI. Complexite du simplexe
Complexite = nombre d’iteration dans le simplexe (phase2).
On peut construire des exemples avec une complexite exponentielleen O(2n) iterations (Klee-Minty, 1972).
Mais dans la pratique la complexite du simplexe croıt peu avec lenombre n de variables. En pratique, le nombre d’iterations estproportionnel au nombre m de contraintes (de m a 3m iterations).
Si on tient compte de la resolution des systemes lineaires avec uneformule de mise a jour de l’inverse (Shermann-Morrison), on a O(m2)operations pour l’inverse.
29
VII. Quelques solveurs de PL
GLPK (GNU Linear Programming Kit). Donnees au formatMPS/CPLEX (standards de l’industrie).
COIN-OR (COmputational INfrastructure for Operations Research)Optimization Suite, logiciel OpenSource.
GUROBI Code commercial, licence education gratuite.
CPLEX (IBM ILOG). Code commercial, licence education gratuite.
FICO Xpress Optimization Suite
AMPL (Automatic Mathematical Programming Language).Plateforme commerciale, version ’bridee’ gratuite (limitation du nb devariables).
Mais aussi ...MATLAB (fonction linprog, interface pour GUROBI, CPLEX,GLPK, ...)
EXCEL
PyGLPK interface GLPK pour Python.30
Exemples d’utilisation de solveurs.
Probleme de production (cf. Exercice 1, TD1)
maxF (x) = 1700x1 + 3200x23x2 ≤ 391.5x1 + 4x2 ≤ 602x1 + 3x2 ≤ 573x1 ≤ 57x1, x2 ≥ 0
1 GLPK avec format de donnees CPLEX
2 MATLAB avec la fonction linprog
31
1 GLPK avec format de donnees CPLEX : le fichier exo1.lp
maximize
F : 1700 x1 + 3200 x2
subject to
M1 : 3 x2 <= 39
M2 : 1.5 x1 + 4 x2 <= 60
M3 : 2 x1 + 3 x2 <= 57
M4 : 3 x1 <= 57
general
x1
x2
end
Commande d’execution (linux) :
>>glpsol --lp exo1.lp --nomip -o resultats.txt
32
Fichier des resultats resultats.txt
Problem:
Rows: 4
Columns: 2
Non-zeros: 6
Status: OPTIMAL
Objective: F = 54857.14286 (MAXimum)
No. Row name St Activity Lower bound Upper bound Marginal
------ ------------ -- ------------- ------------- ------------- -------------
1 M1 B 29.5714 39
2 M2 NU 60 60 371.429
3 M3 NU 57 57 571.429
4 M4 B 41.1429 57
No. Column name St Activity Lower bound Upper bound Marginal
------ ------------ -- ------------- ------------- ------------- -------------
1 x1 B 13.7143 0
2 x2 B 9.85714 0
33
2 MATLAB avec la fonction linprog :
[x, fval] = linprog(c,A,b,Aeq,beq,lb,ub,x0)
resout le PL :minx c>x
Ax ≤ bAeqx = beq
lb ≤ x ≤ ub
lb et ub sont des vecteurs. Mettre ub=[] s’il n’y a pas de contraintede bornes superieures.
En option, x0 est une solution realisable initiale.
Par default, linprog utilise une methode de points interieurs. Pour lesimplexe :
options = optimset(’Algorithm’, ’simplex’);
x = linprog(..., options);
34
Le fichier exo1.m
A = [0, 3;
1.5, 4;
2, 3;
3, 0];
b = [39; 60; 57; 57];
c= -[1700; 3200]; % Attention, linprog cherche un min !
options = optimset(’Algorithm’,’simplex’);
Aeq=[]; beq=[]; % pas de contraintes d’egalites
lb=zeros(2,1); % bornes inferieures = 0
ub=[]; % pas de borne superieure
x0=[]; % on ne fournit pas de solution realisable au depart
[X,fval]=linprog(c,A,b,Aeq,beq,lb,ub,x0,options)
35
Dans MATLAB :
>> exo1
Optimization terminated.
X =
13.7143
9.8571
fval =
-5.4857e+04
36