Exemples et définitions
Exemple
minimiser 350x1 + 300x2
sous contraintes x1 ≥ 0, x1 ≥ 0
9x1 + 6x2 ≤ 1566
12x1 + 16x2 ≤ 2880
-9-
Pourquoi c’est bien ?
- 10 -
• Dans cette partie du cours on s’intéressera aux
— Modélisation OL, y compris des exemples “instructifs” des modèles et leur “calcul”
– ensemble d’outils pour reconnaı̂tre la possibilité de formuler le problème comme
problème OL
— Théorie de l’OL – la géométrie des programmes linéaires, existence et caractéri-
sation des solutions optimales et dualité ;
— Applications de ces outils pour résoudre quelques problèmes d’optimisation linéaire
pertinentes en probabilité et statistique
- 11 -
Modèle d’optimisation linéaire
Programme OL (programme linéaire PL)
P
n
minimiser ci x i
Pi=1
n
sous contraintes ajixi ≤ bj , j = 1, ..., m
Pi=1
n
i=1 djixi = fj , j = 1, ..., p
avec
— n variables d’optimisation : x1, ..., xn (scalaires réels)
— donnees de problème (paramètres) : coefficients ci, aji, bj , dji, fj
P
— cixi est la fonction de coût ou fonction objective
P
— ajixi ≤ bj , j = 1, ..., m, contraintes d’inégalité (non-strictes)
P
— djixi = fj , j = 1, ..., p, contraintes d’égalité
- 12 -
Étapes de formulation de modèles d’OL
- 13 -
Exemple : problème de transport
• Une compagnie possède n usines de production et m clients.
— Chaque usine a la capacité mensuelle ui, i = 1, ..., n de production, et chaque
client a la demande mensuelle dj , j = 1, ..., m.
— Soit xij la quantité de produits fournis par l’usine “i” vers le client “j.”
— L’objectif est de determiner un plan de transport qui minimise le coût total
P
i,j cij xij , ou cij et le coût de transport de “i” vers “j.”
Formulation OL
Pn Pm
minimiser j=1 cij xij [cout de transport à minimiser]
Pi=1
n
sous contraintes xij ≥ dj , j = 1, ..., m [satisfaire toutes les demandes]
Pi=1
m x ≤u,
j=1 ij i i = 1, ..., n [respecter les capacités de production]
xij ≥ 0, i = 1, ..., n, [contrainte de production
j = 1, ..., m non-négative]
- 14 -
Exemple : problème de régime optimal
• Il y a n types de produits et m types d’éléments nutritionnels.
— Une unité de produit #j contient pij grammes d’élément #i et coute cj .
— La consommation journalière de l’élément #i doit être entre les limites [bi, bi].
— On cherche un “régime” (mélange de produits) le moins cher qui procure les
quantités quotidiennes nécessaires d’éléments nutritionnels.
En notant xj la quantité du j ème produit dans le régime, le modèle OL dévient
Pn
min j=1 cj xj [cout à minimiser]
x
sous contraintes
Pn
pij xj ≥ bi
bornes inf et sup du contenu
Pj=1
n
j=1 pij xj ≤ bi
d’éléments nutritionnels
dans le régime
1≤i≤m
" #
quantité de chaque produit
xj ≥ 0, 1 ≤ j ≤ n
ne peut pas etre negatif
- 15 -
• Le régime optimal est systématiquement utilisé dans les élevages de volaille et de
bétail. La nourriture des humains ne peut pas être optimisée de la même façon à cause
des facteurs du goût, de diversité, etc, difficiles à prendre en compte.
• Quoi que... Voici le regime optimal pour un humain calculé par le “solveur”
http://www.neos-guide.org/content/diet-problem-solver
(le problème est formulé en utilisant 68 produits disponibles dans le logiciel) :
- 17 -
Exemple : problème d’affectation
Formulation OL
PN
minimiser i,j=1 aij xij
PN
sous contraintes xij = 1, j = 1, ..., N
Pi=1
N x = 1, i = 1, ..., N
j=1 ij
0 ≤ xij ≤ 1, i, j = 1, ..., N
— nous avons relaxé les contraintes binaires xij ∈ {0, 1}
— on peut démontrer que dans ce cas tout point optimal satisfait xij ∈ {0, 1}
— ainsi, on peut résoudre ce problème combinatoire (très particulier) de façon effi-
cace (par OL ou des méthodes spécialisées)
- 18 -
Un peu d’histoire
— années 30-40 : Kantorovitch, Koopmans, von Neumann, Dantzig : fondations
motivées par des problèmes de l’économie et de logistique
— 1947 : (Dantzig) algorithme de simplexe
— 1948-1949 : application historique : organisation du pont aérien pour ravitaille-
ment de la zone occidentale de Berlin pendant le blocus de Berlin-ouest par les
soviétiques. Resolution numérique “à la main” (par algorithme de simplexe avec
des milliers de variables)
— 1950-1960 : des nombreuses applications dans les autres disciplines
— 1975 : prix Nobel d’économie pour Kantorovitch et Koopmans
— 1984 (Karmarkar) : premier “algorithme de point intérieur” – avènement de “l’op-
timisation moderne”
— depuis 1984 : algorithmes pour des problèmes de très grande taille, utilisation de
l’OL dans tous les domaines industriels...
- 19 -
Notations :
x1
— n-vecteurs : x = [x1; ...; xn] = [x1, ..., xn]T = ... .
xn
On note xi la i-ème composante de x
On note x = 0 si xi = 0, ∀i ; x = 1 si xi = 1, ∀i ; x = ei si xi = 1 et
xj = 0 pour j 6= i (i-ème vecteur de base canonique).
— Matrices m × n :
a11 ... a1n
... ...
A=
am1 ... amn
avec elements aij (ou [A]ij ), [A]j la j-ème colonne de A (m-vecteurs =
matrices m × 1).
On note A = 0 (matrice nulle) si aij = 0 ∀i, j ; A = I (matrice identite) si
aii = 1 et aij = 0 ∀j 6= i.
- 20 -
Operations matricielles :
— matrice transposée AT
— multiplication par un scalaire αA
— addition A + B and soustraction A − B de matrices de même taille
— produit matrice-vecteur y = Ax et y T = xT AT (de tailles compatibles)
— produit C = AB de matrices de tailles compatibles (lesquelles ?)
— produit scalaire de 2 vecteurs de même taille :
- 21 -
Notations matricielles
— In extenso
Xn Pn
aji x i ≤ b j , j = 1, ..., m
min ci x i : Pi=1
n
i=1 djixi = fj , j = 1, ..., p
i=1
— Notation vectorielle (par contrainte)
( T )
aj x ≤ bj , j = 1, ..., m
min cT x :
dT
j x = fj , j = 1, ..., p
avec les n-vecteurs c, ai et di :
Terminologie :
— x1, ..., xn variables de décision du problème,
x = [x1; ...; xn] est vecteur de decision
— x solution réalisable (admissible) ssi elle satisfait les contraintes Ax ≤ b et
Dx = f
— domaine du problème (ensemble admissible) = ensemble des solutions réalisables
— x∗ est une solution optimale ssi elle est réalisable et cT x∗ ≤ cT x pour toute
solution réalisable x
— la valeur optimale du PL est la valeur Opt = cT x∗
— on dit que PL est non-borné inférieurement si Opt = −∞
— on dit que PL est irréalisable (inadmissible) si le domaine réalisable est vide ; dans
ce cas on pose Opt = +∞. n o
T
Pour un problème de maximisation, max c x : Ax ≤ b, Dx = f , la situation est
inversée : Opt = +∞ si le problème n’est pas borné, et Opt = −∞ s’il n’est pas
réalisable.
- 23 -
Forme canonique et forme standard
On remarque que
• toute égalité/inégalité linéaire peut être réécrite avec le second membre constant
(toutes les variables “à gauche”) : 2x1 ≥ 20 − x2 ⇔ 2x1 + x2 ≥ 20
• toute inégalité non-stricte peut être réécrite comme une inégalité avec “≤” :
2x1 + x2 ≥ 20 ⇔ −2x1 − x2 ≤ −20
• toute égalité peut être représentée par (une paire d’inégalités avec les signes opposés :
2x1 − x2 ≤ 5
2x1 − x2 = 5 ⇔
−2x1 + x2 ≤ −5
• toute inégalité avec ≤, en rajoutant une variable d’écart y, peut être réécrite comme
une égalité et une inégalité “simple” y ≥ 0 :
(
2x1 + x2 + y = 20
2x1 + x2 ≤ 20 ⇔
y ≥ 0
• minimiser la fonction linéaire cT x revient exactement à maximiser la fonction linéaire
−cT x.
- 24 -
• Tout programme OL est equivalent à un programme OL en forme canonique, dans
laquelle l’objectif doit être maximisé et les contraintes sont les inégalités avec “≤ :”
nP Pn o
n
Opt = max
x j=1 cj xj : j=1 aij xj ≤ bi , 1 ≤ i ≤ m
n [notation
o “in extenso”]
⇔ Opt = max cT x : aT
i x ≤ bi , 1 ≤ i ≤ m
x
n o [notation “par contrainte”]
⇔ Opt = max cT x : Ax ≤ b
x
[notation “matricielle”]
où
c = [c1; ...; cn], b = [b1; ...; bm], ai = [ai1; ...; ain], A = [aT ;
1 2 aT ; ...; aT ]
m
• Ensemble X ⊂ Rn défini par X = {x : Ax ≤ b} – l’ensemble de solutions d’un
système fini d’inegalites lineaires non-strictes aT n
i x ≤ bi , 1 ≤ i ≤ m en x ∈ R –
s’appel ensemble polyédrique, ou un polyèdre.
[−1;5]
[1;2]
[−10;−4]
[−5;−12]
- 26 -
• Un programme OL en forme standard consiste à maximiser une forme linéaire sur
l’intersection de l’orthant non-négatif Rn n
+ = {x ∈ R : x ≥ 0} et d’un plan réalisable
{x : Ax = b} :
( Pn )
Pn j=1 aij xj = bi, 1 ≤ i ≤ m
Opt = max j=1 cj xj : x ≥ 0, j = 1, ..., n
x j
( [notation
) “ in extenso”]
T aT
i x = bi , 1 ≤ i ≤ m
⇔ Opt = max c x :
x xj ≥ 0, 1 ≤ j ≤ n
n o[notation “par contrainte”]
⇔ Opt = max cT x : Ax = b, x ≥ 0
x
[notation “matricielle”]
où
c = [c1; ...; cn], b = [b1; ...; bm], ai = [ai1; ...; ain], A = [aT T T
1 ; a2 ; ...; am ]
• Dans le programme OL standard
— toute variables sont non-négatives
— toutes contraintes linéaires “generales” sont des égalités
- 27 -
Remarque : la forme standard de PL est universelle : tout programme linéaire est
equivalent à un PL en forme standard.
En effet, il suffit de convertir un PL en forme canonique max{cT x : Ax ≤ b}. Pour
x
le faire,
— on introduit des variables d’écart (une par inégalité), et on réécrit le problem
comme
max{cT x : Ax+s = b, s ≥ 0}
x,s
— ensuite, on représente x comme x = u − v, la difference de 2 vecteurs non-
négatifs, et on arrive à
n o
T T
max c u − c v : Au − Av + s = b, [u; v; s] ≥ 0 .
u,v,s
- 28 -
Illustration :
Opt = max[2x1 + 3x2 − x3]
x
s.c.
3x1 + 4x2 + 5x3 ≤ 6
7x1 + 8x2 + 9x3 ≤ 10
⇔ Opt = max[2x1 + 3x2 − x3]
x,s
s.c.
3x1 + 4x2 + 5x6 +s1 = 6
7x1 + 8x2 + 9x3 +s2 = 10
s1 ≥ 0, s2 ≥ 0
⇔ Opt = max[2[u1 − v1] + 3[u2 − v2] − [u3 − v3]]
u,v,s
s.c.
3[u1 − v1 ] + 4[u2 − v2 ] + 5[u3 − v3 ] +s1 = 6
7[u1 − v1 ] + 8[u2 − v2 ] + 9[u3 − v3 ] +s2 = 10
s1 ≥ 0, s2 ≥ 0, u1 ≥ 0, u2 ≥ 0, u3 ≥ 0,
v1 ≥ 0, v2 ≥ 0, v3 ≥ 0,
- 29 -
Interprétation géométrique
Normes dans Rn
qP p
• Norme euclidienne (`2) : kxk2 = n 2 T
i=1 xi = x x
• Normes `1 et `∞ :
y
xT y
t̂y = yT y
y
t̂ = argmin kx
expression for −
t̂: tyk2
t
xT yx Tkxk2 cos θ
y kxk cos θ x
⇒ t̂ = t̂2== 2 =
kyk2 kyk kyk2kyk
- 31 -
Interpretation géométrique
Geometricalinterpretation
Geometrical interpretation
G= | a|TaTxT x
{x{x =b}b} H= {x || aaTTTxx ≤ b}
={x
G = {x : a x==
G=
b} H
H = {x : a x ≤ b}
a a a
2 2
u=
u=(b/kak
(b/kak)a)a u
xx
xx
GG
0 0 xx−−uu H
H
x−
x−uu
— vecteur u = b 2 a satisfait aT u = b
• the
• thevector
vectoru= ukak
=(b/kak
2(b/kak2 2
)a)asatisfies TT
satisfiesaa uu==bb
T
— x ∈ G si a (x − u) = 0 (i.e. x − u ⊥ a)
• x• isx in
is hyperplane
in hyperplane
T G Gif ifaTa(x
T − u) = 0 (x − u is orthogonal to
(x − u) = 0 (x − u is orthogonal a)
— x ∈ H si a (x − u) ≤ 0 (i.e. angle ∠(x − u, a) ≥ π/2)
• x•(⇔ isThalfspace
isx in
a ≤ aT uH=Hifb).
inx halfspace ifaTa(x
T − u) ≤ 0 (angle 6 6 (x − u, a) ≥ π/2)
(x − u) ≤ 0 (angle (x − u, a) ≥
- 32 -
Introduction
Introduction 1–22
1–22
Example
Exemple
x2 x2
aT x = 0 aT x = 10
a = (2, 1) a = (2, 1)
x1 x1
T T aT x ≤ 3
a x = −5 a x=5
- 33 -
Introduction 1–23
Polyhedron
Un polyèdre : ensemble de solutions d’un système fini d’inégalités linéaires :
solution set of a finite number of linear inequalities
aT T T
1 x ≤ b1 , a2 x ≤ b2 , ..., am x ≤ bm
aT1 x ≤ b1, aT2 x ≤ b2, ..., aTmx ≤ bm
a1 a2
a3
a5
a4
- 34 -
Example
Exemple
x1 + x2 ≥ 1, −2x1 + x2 ≤ 2, x1 ≥ 0, x2 ≥ 0
x2
−2x1 + x2 = 2
x1
x1 + x2 = 1
Introduction - 35 - 1–25
Example
Exemple
0 ≤ x1 ≤ 2, 0 ≤ x2 ≤ 2, 0 ≤ x3 ≤ 2, x1 + x2 + x3 ≤ 5
x3
(0, 0, 2) (0, 2, 2)
(1, 2, 2)
(2, 1, 2)
(2, 0, 2)
(0, 2, 0)x
2
(2, 2, 1)
(2, 0, 0) (2, 2, 0)
x1
Introduction 1–26
- 36 -
Geometrical interpretation
Interprétation géométrique of LP
de PL
T
n minimizeo c x n o
T
min c x : subject
Ax ≤ b to= Ax
− max T
≤ b −c x : Ax ≤ b
x x
−c
optimal solution
Ax ≤ b
dashed
ligneslines (hyperplanes)
(hyperplans) areéslevel
en pointill cT x = αdeforniveau
setsensembles
sont des {x : αcT x = α} de la
different
forme linéaire cT x pour les différents α
Introduction
- 37 - 1–27
Exemple
Example
2x1 + x2 ≤ 3
min −x 1 − x2 : −xx11−+
minimize x2 4x ≤ 5
2
subject to 2xx
1 + x 2 ≤ 3
1 ≥ 0, x2 ≥ 0
x1 + 4x2 ≤ 5
x1 ≥ 0, x2 ≥ 0
−x1 − x2 = −2 x2
−x1 − x2 = −1
−x1 − x2 = −5
−x1 − x2 = 0
−x1 − x2 = −4
x1
−x1 − x2 = −3
optimal solution is (1, 1)
solution optimale : x = [1; 1], cT x = −2
Introduction 1–28
- 38 -
Algorithme du simplexe
5 aT
3 x = b3
2 c aT
1 x = b1
O 1 2 3 4 5 6 7 x1
- 39 -
aT
1x ≤
b1
T aT
2x ≤ b2
max c x : Tx ≤
x∈R2
a3 b3
x≥0
x(1) : x1 = 0, aT
3 x = b3 .
x2
6
4
c
3
2
x(1)
1
cT x = cT x(1)
O 1 2 3 4 5 6 7 x1
T
a1 x ≤ b1
aT x ≤ b
max cT x : 2
T
2
x∈R2
a3 x ≤ b3
x≥0
x(2) : aT
1 x = b 1 , a Tx = b .
3 3
x2
6
c
5
3
x(2)
2
x(1)
1
cT x = cT x(2)
O 1 2 3 4 5 6 7 x1
T
a1 x ≤ b1
a2 x ≤ b2
T
max cT x :
x∈R2
aT
3 x ≤ b3
x≥0
x(3) : aT T
1 x = b 1 , a 2 x = b2 .
x2
6
5
c
4
3
x(2)
x(3)
2
x(1) cT x = cT x(3)
1
O 1 2 3 4 5 6 7 x1
- 40 -
Algorithme du simplexe – explication
x1 = x2 = 0, z = x1 + x2 = 0, s1 = 4, s2 = 3
Peut on accroı̂tre z ?
Règle I Si toutes les variables en 1ère ligne ont des coefficients non négatifs, la solution
basique est optimale. Sinon, on choisit une variable non basique dont le coefficient est
négatif et on l’augment tant que le système reste admissible.
- 42 -
z − x1 −x2 =0
2x1 +x2 +s1 =4
x1 +2x2 +s2 =3
x1 ≥ 0, x2 ≥ 0, s1 ≥ 0, s2 ≥ 0
On choisit, par exemple, x1. Quel pivot d’algorithme de Gauss choisir ?
second membre
Règle II Choisir la ligne qui correspond au plus petit rapport coefficient de la variable
(on suppose que coefficient de la variable est strictement positif)
s1 = x2 = 0, x1 = 2, s2 = 3, z = 2
- 43 -
z − 12 x2 + 12 s1 =2
x1 + 12 x2 + 12 s1 =2
3 1
2
x2 − s
2 1
+s2 = 1
x1 ≥ 0, x2 ≥ 0, s1 ≥ 0, s2 ≥ 0
s1 = s2 = 0, x1 = 35 , x2 = 32 , z = 7
3
- 44 -
On récapitule :
z − x1 −x2 =0
2x1 +x2 +s1 =4
x1 +2x2 +s2 =3
x1 ≥ 0, x2 ≥ 0, s1 ≥ 0, s2 ≥ 0
On commence avec x(0) = [0; 0], contraintes “actives” :
x1 = 0, x2 = 0
⇓
z − 21 x2 + 12 s1 =2
x1 + 12 x2 + 12 s1 =2
3
x
2 2
− 12 s1 +s2 = 1
x1 ≥ 0, x2 ≥ 0, s1 ≥ 0, s2 ≥ 0
Solution actuelle x(1) = [2; 0], contraintes “actives” :
x2 = 0, 2x1 + |{z} x2 = 4
=0
- 45 -
⇓
z + 13 s1 + 13 s2 = 7
3
x1 + 23 s1 − 13 s2 = 5
3
x2 − 13 s1 + 23 s2 = 2
3
x1 ≥ 0, x2 ≥ 0, s1 ≥ 0, s2 ≥ 0
- 46 -
x2
4 2x1 + x2 = 4
2
c = [1; 1]
1
x(2)
x1 + 2x2 = 3
1 2 3 4 x1
Interprétation géométrique
- 47 -
• Écriture sous forme de tableau :
- 48 -
Cycles
• Soit
2x1 + x2 ≤ 4,
max x1 + 21 x2 : x1 + 2x2 ≤ 3
x1 ,x2
x1 ≥ 0, x2 ≥ 0
Maintenant, Règle I implique que [x1; x2] = [2; 0] est une solution optimale.
- 49 -
Néanmoins, on peut essayer d’augmenter x2 pour obtenir une solution basique avec
x2 6= 0. Cela donne :
z x1 x2 s1 s2 RHS Solution basique
1 5 2
1 0 0 2
0 2 basique x 1 = 3
, x 2 = 3
2 1 5
0 1 0 3
−3 3
non basique s1 = s2 = 0
0 0 1 − 13 2
3
2
3
z=2
- 50 -
Problème dégénéré
• On considère le programme
3x1 + x2 ≤ 6,
x1 − x2 ≤ 2
max 2x1 + x2 :
x1 ,x2
x2 ≤ 3
x1 ≥ 0, x2 ≥ 0
L’application de l’algorithme du simplex résulte en
z x1 x2 s1 s2 s3 RHS Solution basique
1 −2 −1 0 0 0 0 basique s1 = 6, s2 = 2, s3 = 3
0 3 1 1 0 0 6 non basique x1 = x2 = 0
0 1 −1 0 1 0 2 z=0
0 0 1 0 0 1 3
1 0 −3 0 2 0 4 basique x1 = 2, s1 = 0, s3 = 3
0 0 4 1 −3 0 0 non basique x2 = s2 = 0
0 1 −1 0 1 0 2 z=4
0 0 1 0 0 1 3
On note qu’une des variables basiques – x3 – est nulle.
- 51 -
Maintenant, Règle I suggère de choisir x2 comme nouvelle variable basique, et Règle II
implique le pivot de la 2ème ligne :
z x1 x2 s1 s2 s3 RHS Solution basique
3
1 0 0 4
− 14 0 4 basique x1 = 2, x2 = 0, s3 = 3
1
0 0 1 4
− 34 0 0 non basique s1 = s2 = 0
1 1
0 1 0 4 4
0 2 z=4
0 0 0 − 14 3
4
1 3
C’est la même solution, sauf que la variable basique dégénérée est x2. Si on continue
par s2, avec le pivot de la 4ème ligne,
z x1 x2 s1 s2 s3 RHS Solution basique
2 1
1 0 0 3
0 3
5 basique x1 = 1, x2 = 3, s2 = 4
0 0 1 0 0 1 3 non basique s1 = s3 = 0
1
0 1 0 3
0 − 13 1 z = 5
0 0 0 − 13 1 4
3
4
La dégénérescence n’a pas empêchée la convergence vers la solution optimale, mais dans
certains cas elle peut conduire au cycles.
- 52 -
Problème non borné
• Exemple :
−x1 + x2 ≤ 1,
max 2x1 + x2 : x1 − 2x2 ≤ 2
x1 ,x2
x1 ≥ 0, x2 ≥ 0
La resolution par l’algorithme du simplex donne
z x1 x2 s1 s2 RHS Solution basique
1 −2 −1 0 0 0 basique s1 = 1, s2 = 2
0 −1 1 1 0 1 non basique x1 = x2 = 0
0 1 −2 0 1 2 z = 0
1 0 −5 0 2 4 basique x1 = 2, s1 = 3
0 0 −1 1 1 3 non basique x2 = s2 = 0
0 1 −2 0 1 2 z = 4
A ce stade Règle I choisit x2, mais il n’y a pas de pivot positif dans la colonne corres-
pondante.
⇒ En augmentant x2, on va jamais attendre une contrainte ⇒ Il n’y a pas de limite
pour la valeur du problème – problème non borné
- 53 -
Dualité linéaire
Dualité pour les systèmes d’inégalités linéaires
Comment repondre aux questions suivantes :
• Comment savoir si l’ensemble polyédrique
X = {x ∈ R : Ax ≤ b}
est/n’est pas vide ?
• Comment savoir si l’ensemble polyédrique
X = {x ∈ R : Ax ≤ b}
est/n’est pas bornée ?
• Comment comprendre si les deux polyèdres
X = {x ∈ R : Ax ≤ b}, X 0 = {x ∈ R : A0x ≤ b0}
coincident/ne coincident pas ?
• Comment savoir si le programme OL réalisable/irréalisable ?
Notre objectif actuel sera d’étudier les réponses donnés par le théorème de dualité en
programmation linéaire.
- 54 -
Théorème sur alternative linéaire
• Soit le système de m inégalités linéaires strictes et non-strictes en x ∈ Rn :
(
aT
i x< bi , i ∈ I (S)
aT
i x≤ bi , i ∈ I
où ai ∈ Rn, bi ∈ R, 1 ≤ i ≤ m, avec I ⊂ {1, ..., m}, et I = {1, ..., m}\I.
(S) est un système “universel” d’inégalités linéaires.
Questions importantes (opérationnelles) :
— Comment trouver une solution de (S) quand elle existe ?
— Comment comprendre que (S) est incompatible ?
Questions importantes (descriptives) :
— Comment certifier que (S) est soluble ?
— Comment certifier que (S) est incompatible ?
- 55 -
aTi x< bi , i ∈ I
(S)
aTi x≤ bi , i ∈ I
• Il est facile de certifier que le système est réalisable : il suffit de produire le certificat
– une solution candidate qui satisfait le système.
Exemple : Le vecteur x̄ = [10; 10; 10] est un certificat d’admissibilité du système
−x1 −x2 −x3 < −29
x1 +x2 ≤ 20
x2 +x3 ≤ 20
x1 +x3 ≤ 20
• Mais comment certifier que (S) n’a pas de solution ? E.g., comment prouver que le
système
−x1 −x2 −x3 < −30
x1 +x2 ≤ 20
x2 +x3 ≤ 20
x1 +x3 ≤ 20
est incompatible ?
- 56 -
aTi x< bi , i ∈ I
(S)
aTi x≤ bi , i ∈ I
• Une idée simple : si on fait une somme pondérée d’inégalités de (S) avec des
coefficients non-négatifs, on obtient une inégalité linéaire qui est une conséquence du
système – il est satisfaite sur toute solution de (S). Si cette inégalité n’a pas de solutions,
alors (S), non plus, n’a pas de solutions.
Exemple : Pour le système
2× −x1 −x2 −x3 < −30
1× x1 +x2 ≤ 20
1× x2 +x3 ≤ 20
1× x1 +x3 ≤ 20
il suffit de sommer les inégalités avec des poids en rouge pour obtenir l’inégalité contra-
dictoire
0 · x1 + 0 · x2 + 0 · x3 < 0.
⇒ le vecteur λ = [2; 1; 1; 1] certifie que ce système n’est pas réalisable.
- 57 -
aTi x< bi , i ∈ I
(S)
aTi x≤ bi , i ∈ I
• Pour certifier l’absence de solution, faire la somme d’inégalités avec des poids λi ≥ 0,
pour arriver à l’inégalité
Pm T Pm
[ i=1 λiai] x ? i=1 λibi
" P # (!)
? = ” < ” quand i∈I λi > 0
P
? = ” ≤ ” quand i∈I λi = 0
• Si (!) n’a pas de solutions, (S) est inadmissible.
Remarque : inégalité ( !) n’a pas de solution ssi
m
X
λiai = 0
i=1
et, de plus,
Pm P
i=1 λi bi ≤0 quand i∈I λi > 0
Pm P
i=1 λi bi <0 quand i∈I λi = 0
- 58 -
aTi x< bi , i ∈ I
(S)
aTi x≤ bi , i ∈ I
Proposition. On
associe avec (S) deux systèmes d’in
égalités linéaires en λ1, ..., λm :
λi ≥ 0 ∀i
λi ≥ 0 ∀i
P m λa =0
Pm λ a = 0
(I) : Pm i=1 i i , (II) : Pi=1 i i
λibi ≤ 0 m
P i=1
i=1 λi bi < 0
i∈I λi > 0 λi = 0, i ∈ I
| {z } | {z }
0T x<0 0T x≤−1
Si un des systèmes (I), (II) a une solution, alors (S) n’a pas de solutions.
- 59 -
aTi x< bi , i ∈ I
(S)
aTi x≤ bi , i ∈ I
Nous avons le résultat bien plus fort :
Théorème sur alternative linéaire. On associe avec le système (S) deux systèmes
d’inégalités linéaires
en λ1, ..., λm :
λi ≥ 0 ∀i
λi ≥ 0 ∀i
P m λa =0
Pm λ a = 0
(I) : Pi=1 i i , (II) : Pi=1 i i
m λibi ≤ 0 m
P i=1
i=1 λi bi < 0
i∈I λi > 0 λi = 0, i ∈ I
Système (S) n’a pas de solutions si et seulement si un des systèmes (I), (II) a une
solution.
Remarque : une solution de (I) ou (II) peut être vue comme un certificat d’incompati-
bilité de (S) : (S) est irréalisable si et seulement si un tel certificat existe.
Remarque : les inegalites strictes de (S) ne participent pas dans (II) ⇒ (II) a une
solution ssi le sous-système “nonstricte”
aT
i x ≤ bi , i ∈ I
de (S) n’a pas de solution.
- 60 -
Le théorème peut être reformuler de façon suivante :
Un système fini d’inégalités linéaires n’a pas de solution ssi il est possible, en faisant
une somme d’inégalités de système avec des poids admissibles (i.e., compatibles avec
les operations de base avec des inégalités), obtenir une inégalité contradictoire – soit
l’inégalité 0T x ≤ −1, ou 0T x < 0.
L’avantage de cette formulation c’est que nous n’avons pas besoin de convertir le système
en forme canonique.
Exemple : le système
x1 +2x2 < 5
2x1 +3x2 ≥ 3
3x1 +4x2 = 1
n’a pas de solution – il suffit de faire la somme d’inégalités avec les poids [−1; 2; −1]
pour obtenir
0 · x1 + 0 · x2 > 0
- 61 -
Remarque : le théorème sur alternative est toujours vrais dans une direction – en
faisant les sommes d’inégalités d’un système (S), linéaire ou non linéaire, avec des
inégalités triviales (toujours vraies), on obtient toujours une conséquence de (S).
Cependant, “l’autre direction” dans le théorème sur alternative linéaire exploite fortement
le fait que les inégalités du système original et une conséquence que nous recherchons
sont linéaires.
Par exemple, l’inégalité quadratique
x2 ≤ 1 (!)
est une conséquence du système d’inégalités linéaires (et, donc, quadratiques aussi)
−1 ≤ x ≤ 1 (∗)
Par contre, ( !) ne peut pas être représenté comme une somme d’inégalités de (∗) et
d’inégalités linéaires et quadratiques triviales, telles que
0 · x ≤ 1, x2 ≥ 0, x2 − 2x + 1 ≥ 0, ...
- 62 -
Réponses aux questions
• Comment certifier que l’ensemble
X = {x ∈ Rn : Ax ≤ b}
est vide/non-vide ?
λ ≥ 0, AT λ = 0, bT λ < 0.
Dans les deux cas, X possède la propriété en question ssi on peut le certifier par le
“schema de certification” (“le schema de certification est complet”).
Comme dans toutes les réponses qui suivent...
- 63 -
Exemples :
• Le vecteur x = [1; ...; 1] ∈ Rn certifie que l’ensemble polyédrique
X = {x ∈ Rn : x1 + x2 ≤ 2, x2 + x3 ≤ 2, ..., xn + x1 ≤ 2,
−x1 − ... − xn ≤ −n}
n’est pas vide.
• Le vecteur λ = [1; 1; ...; 1; 2] ∈ Rn+1 ≥ 0 certifie que l’ensemble polyédrique
X = {x ∈ Rn : x1 + x2 ≤ 2, x2 + x3 ≤ 2, ..., xn + x1 ≤ 2,
−x1 − ... − xn ≤ −n−0.01}
est vide. En effet, en sommant les n + 1 inégalités qui définissent X = {x : Ax ≤ b}
avec les poids λi, on obtient l’inégalité contradictoire
0 ≡ 2 (x1 + ... + xn{z) − 2 [x1 + ... + xn}] ≤ |2n − 2(n + 0.01)
| {z
= −0.02}
[AT λ]T x≡0 bT λ=−0.02<0
- 64 -
Comment certifier que l’inégalité cT x ≤ d est satisfaite pour tout x dans
X = {x ∈ Rn : Ax ≤ b},
⇔ l’inégalité est une conséquence du système Ax ≤ b ?
cT x = dg
c
- 65 -
Il y a deux cas de figure :
A X est vide, l’inégalité en question est quelconque
B X n’est pas vide, l’inégalité est une conséquence du système Ax ≤ b
Ainsi, on doit
— soit certifier que X est vide, le certificat étant λ tel que
λ ≥ 0, AT λ = 0, bT λ < 0,
— soit certifier que X n’est pas vide (il suffit de produire une solution x̄ du système
Ax ≤ b) et de certifier que cT x ≤ d est une conséquence du system soluble
Ax ≤ b en présentant un λ qui satisfait le système
λ ≥ 0, AT λ = c, bT λ ≤ d.
Remarque : dans le deuxième cas nous n’avons pas besoin de verifier que X 6= ∅. En
effet, l’existence de la solution du système λ ≥ 0, AT λ = c, bT λ ≤ d est toujours
une condition suffisante pour que cT x ≤ d soit une conséquence de Ax ≤ b (mais
alors, pourquoi ?).
- 66 -
Exemple :
• Pour certifier que l’inégalité
cT x := x1 + ... + xn ≤ d := n − 0.01
n’est pas satisfait pour tout x dans
X = {x ∈ Rn : x1 + x2 ≤ 2, x2 + x3 ≤ 2, ..., xn + x1 ≤ 2} = {x : Ax ≤ b}
il suffit de verifier que pour x = [1; ...; 1] ∈ X n = cT x > d = n − 0.01
• Pour certifier que l’inégalité
cT x := x1 + ... + xn ≤ d := n
est satisfait pour tout x ∈ X, it suffit de noter qu’on obtient cette inégalité en faisant
la somme avec les poids 1/2 d’inégalités définissant X.
Autrement dit, pour λ = [1/2; ...; 1/2] ∈ Rn,
λ ≥ 0, AT λ = [1; ...; 1] = c, bT λ = n≤ d
- 67 -
Certificats en OL
Soit (P) le programme OL suivant :
Px ≤ p (`)
Opt = max cT x : Qx ≥ q (g) (P )
x
Rx = r (e)
• Comment certifier que (P ) est réalisable/irréalisable ?
— Pour certifier que (P ) est réalisable, il suffit de presenter une solution x̄ realisable.
— Pour certifier que (P ) n’est pas réalisable, il suffit de presenter trois vecteur de
poids λ`, λg , λe tels que
λ` ≥ 0, λg ≤ 0
P T λ` + QT λg + RT λe = 0
pT λ` + q T λg + rT λe < 0
- 68 -
Px ≤ p (`)
T
Opt = max c x : Qx ≥ q (g) (P )
x Rx = r (e)
(a) (b)
z }| { z {}|
T T T
λ` ≥ 0, λg ≤ 0 & P λ` + Q λg + R λe = c
& pT λ` + q T λg + rT λe = cT x̄
| {z }
(c)
• Si on multiplient (b) par x̄T des deux côtés et soustrait le résultat de (c), on obtient
≥0 ≤0 =0
z }| { z }| { {z }|
T T T
λ` [p − P x̄] + λg [q − Qx̄] +λe [r − Rx̄] = 0,
|{z} |{z}
≥0 ≤0
ce qui est possible si et seulement si
(λ`)i[pi − (P x̄)i] = 0 ∀i
(λg )j [qj − (Qx̄)j ] = 0 ∀j.
- 70 -
Px ≤ p (`)
T
Opt = max c x : Qx ≥ q (g) (P )
x Rx = r (e)
- 71 -
Exemple. Pour certifier que la solution réalisable
x̄ = [1; ...; 1] ∈ Rn
du programme OL
x1 + x2 ≤ 2, x2 + x3 ≤ 2 , ..., xn + x1 ≤ 2
max x1 + ... + xn : x1 + x2 ≥ −2, x2 + x3 ≥ −2 , ..., xn + x1 ≥ −2
x
est optimale, il suffit d’affecter les multiplicateurs de Lagrange λ` = [1/2; 1/2; ...; 1/2]
et λg = [0; ...; 0] aux contraintes et de noter que
λ` ≥ 0, λg ≤ 0
1 1
1 1
T T
1 1 T
P λ` + Q λg = λ = c := [1; ...; 1]
1 ... `
... 1
1 1
et nous avons la complémentarité.
- 72 -
Dualité en OL On considère le problème OL
n o
Opt(P ) = max cT x : Ax ≤ b (P )
x
Problème dual permet de borner supérieurement la valeur optimal du problème primal
(P). Pour le faire, on “agrège” le problème (P) :
— on attribue aux contraintes aT i x ≤ bi des coefficients non-négatifs λi (“multipli-
cateurs de Lagrange”) et on fait la somme des contraintes avec ces coefficients,
pour obtenir
[AT λ]T x ≤ bT λ (!)
Observation : par construction, cette inégalité est une conséquence du système
Ax ≤ b, et est ainsi satisfaite sur toute solution realisable de (P).
— Si AT λ = c, alors ( !) dit que that bT λ est une borne supérieure sur cT x sur
tout domaine realisable de (P), et donc
bT λ ≥ Opt(P ).
- 73 -
n o
Opt(P ) = max cT x : Ax ≤ b (P )
x
n o
T T
Opt(D) = min b λ : A λ = c, λ ≥ 0 , (D)
λ
appelé problème dual de (P).
- 74 -
Observation : la construction de la borne pour la valeur optimale peut être appliquée à
tout programme OL, quelque soit le format. Par exemple, en l’appliquant au programme
primal
≤ p
P x |{z} (`)
λ`
≥ q
Qx |{z} (g)
Opt(P ) = max cT x : (P )
x
λg
= r
Rx |{z} (e)
λe
on obtient le problème dual
(
Opt(D) = min pT λ` + q T λg + rT λe :
[λ` ;λg ,λe ] ) (D)
λ` ≥ 0, λg ≤ 0
P T λ` + QT λg + RT λe = c
• Attention aux notations : les types ≤, ≥, = des contraintes de (P) sont préservés par
les vecteurs de coefficients de Lagrange affectés λ`, λg , λe.
- 75 -
En résumé :
- 76 -
T
Opt(P ) = max c x : P x ≤ p (`), Qx ≥ q (g), Rx = r (e) (P )
x
λ` ≥ 0, λg ≤ 0
Opt(D) = min pT λ` + q T λg + rT λe : (D)
[λ` ;λg ,λe ] P T λ` + QT λg + RT λe = c
Théorème de dualité en OL : soit (P) le problème OL primal avec sont dual (D).
Alors
[Symétrie primal-dual] Dualité est symétrique : (D) est un programme OL, est le dual de
(D) est (équivalent à) (P).
[Dualité faible] Nous avons toujours Opt(D) ≥ Opt(P ).
Attention : cette inégalité correspond au problème primal de maximisation. Plus géné-
ralement, dualité faible dit que dans le couple primal-dual, la valeur optimale du problème
de minimisation est ≥ la valeur optimal du problème de maximisation.
[Dualité forte] Les propriétés suivantes sont équivalentes :
— un des problèmes est réalisable et borné
— deux problèmes sont solubles
— deux problèmes sont réalisables
et quand une (et, donc, toutes) de ces propriétés a lieu, nous avons
Opt(P ) = Opt(D).
- 77 -
Opt(P ) = max cT x : P x ≤ p (`), Qx ≥ q (g), Rx = r (e) (P )
x
λ` ≥ 0, λg ≤ 0
Opt(D) = min pT λ` + q T λg + rT λe : (D)
[λ` ;λg ,λe ] P T λ` + QT λg + RT λe = c
Verification de la symétrie primal-dual. On réécrit (D) comme un problème de
maximisation :
( )
λg ≤ 0, λ` ≥ 0
−Opt(D) = max − pT λ` − q T λg − rT λe :
[λ` ;λg ,λe ] P T λ` + QT λg + RT λe = c
et, en appliquant les règles de construction de dual, on obtient
P xe + xg = −p
min cT xe : x` ≥ 0, xg ≤ 0, Qxe + x` = −q .
[x` ;xg ;xe ]
Rxe = −r
En posant xe = −x et en éliminant xg et xe, le problème dual du (D) devient
n o
T
min −c x : P x ≤ p, Qx ≥ q, Rx = r ,
x
qui est équivalent à (P).
- 78 -
Opt(P ) = max cT x : P x ≤ p (`), Qx ≥ q (g), Rx = r (e) (P )
x
λ` ≥ 0, λg ≤ 0
Opt(D) = min pT λ` + q T λg + rT λe : (D)
[λ` ;λg ,λe ] P T λ` + QT λg + RT λe = c
Consequences immédiates.
— Théorème Si au moins un des problemes (P), (D) est réalisable, nous avons
Opt(P ) = Opt(D). [pourquoi ça ?]
— Conditions d’optimalité en OL Soit x et λ = [λ`; λg ; λe] une paire des
solutions réalisables de (P ) et (D). Elle est comprise des solutions optimales
• [saut de dualité nul] si et seulement si le saut de dualité (duality gap) évalué sur cette
paire de solutions, est nul :
DualityGap(x, λ) := [pT λ` + q T λg + rT λe] − cT x = 0
• [complémentarité] si et seulement si les produits de tous les multiplicateurs de Lagrange
λiet des résidus de la contrainte correspondante primale sont nuls :
∀i : [λ`]i[p − P x]i = 0 & ∀j : [λg ]j [q − Qx]j = 0.
- 79 -
Verification Nous sommes dans le cas quand les deux problemes sont réalisables et
donc solubles avec les mêmes valeurs optimales. Alors
h i
DualityGap(x, λ) := [pT λ` + q T λg + rT λe] − Opt(D)
h i
+ Opt(P ) − c xT
Pour toute paire de solutions primal-dual réalisables, les expressions entre les crochets
sont non-négatives ⇒ le saut de dualité, évalué sur une paire primal-dual realisable est
≥ 0 et est nul ssi les deux expressions sont nulles ⇔ ssi x est une solution primale
optimale et λ est duale optimale.
• On remarque que
DualityGap(x, λ) = [pT λ` + q T λg + rT λe] − cT x
= [pT λ` + q T λg + rT λe] − [P T λ` + QT λg + RT λe]T x
= λT
` [p − P x] + λT g [q − Qx] + λT e [r − Rx]
P P
= i [λ` ]i [p − P x]i + j [λg ]j [q − Qx]j
⇒ tous les termes dans la sommes sont non-négatifs
⇒ le saut de dualité est nul ssi la complémentarité a lieu.
- 80 -
Fonction de coût d’un programme linéaire I
n o
T
Opt(c) = max c x : Ax ≤ b . (P [c])
x
Maintenant on suppose que A, b sont fixes, et que c varie, et on s’intéresse aux propriétés
Opt(c) comme fonction de c.
Hypothèse : (P [·]) est realisable (ce fait est indépendant de la valeur de c).
Théorème Soit c̄ tel que Opt(c̄) < ∞, et soit x̄ une solution optimale de (P [c̄]).
Alors,
∀c : Opt(c) ≥ Opt(c̄) + x̄T [c − c̄]. (!)
En effet, nous avons
- 81 -
Fonction de coût d’un programme linéaire II
- 82 -
n o
T
Opt(b) = max c x : Ax ≤ b . (P [b])
x
L’information supplémentaire sur Opt(b) peut être obtenue par dualité. Le problème
duale de (P [b]) est
n o
T T
min b λ : λ ≥ 0, A λ = c . (D[b])
λ
Par le théorème de dualité en OL, sous l’hypothèse, (D[b]) est realisable pour tout b,
et
n o
T T
Opt(b) = min b λ : λ ≥ 0, A λ = c . (∗)
λ
Observation : Soit b̄ tel que Opt(b̄) > −∞, et donc (D[b̄]) est soluble, et soit λ̄
une solution optimale de (D[b̄]). Alors nous avons
- 83 -
Loi de décroissance des rendement marginaux
On considère la fonction de β définie par
n o
Opt(β) = max cT x : P x ≤ p, q T x ≤ β (Pβ )
x
Interprétation : x est un plan de production, q T x est le prix des ressources utilisées
par x, β est l’investissement dans les ressources, Opt(β) est le retour maximal sur
l’investissement β.
Comme ci-dessus, pour β tel que (Pβ ) est réalisable, indépendamment de la valeur de β,
le problème est soit toujours borné, soit toujours non-borné. Supposons que le problème
est borne dans notre cas, alors
• Le domaine Dom Opt(·) de la fonction Opt(·) est un rayon non vide β ≤ β < ∞
avec β ≥ −∞, et
• Opt(β) est non-décroissante et concave. Monotonie et concavité impliquent que si
β ≤ β1 < β2 < β3,
alors
Opt(β2) − Opt(β1) Opt(β3) − Opt(β2)
≥ .
β2 − β1 β3 − β2
- 84 -
Autrement dit
le retour pour 1e d’investissement décroı̂t (ne change pas dans le meilleur
cas) quand l’investissement β augmente.
⇔ Loi de décroissance des rendements marginaux en économie.
β̄ β
- 85 -
Autre interprétation : accroissement des prix marginaux
On considère la fonction de β définie par
n o
Opt(β) = min cT x : P x ≥ p, q T x ≥ β (Pβ0 )
x
Interprétation : x est un plan de production, q T x la quantité du produit fabriqué, β
est la demande en produit, Opt(β) est le coût de fabrication des produit pour satisfaire
la demande β.
• Comme dans le cas précèdent, le domaine Dom Opt(·) de la fonction Opt(·) est un
rayon non vide β ≥ β > −∞ avec β ≤ ∞, et
• Opt(β) est non-croissante et convexe. Ainsi, si
β1 < β2 < β3 ≤ β,
alors
Opt(β2) − Opt(β1) Opt(β3) − Opt(β2)
≤ .
β2 − β1 β3 − β2
- 86 -
Ce qui peut-être exprimée en PL
Exemple : problème d’ordonnancement
On doit planifier n taches sur la grappe de m serveurs de calcul homogènes. Chaque
tache a la durée fixe ti, i = 1, ..., n, et peut être traitée par tout serveur. On veut
distribuer des taches sur les serveurs de façon à minimiser la durée totale du traitement.
Formulation MinMax
P
minimiser max1≤j≤m n i ti xij
Pm
sous contraintes j=1 xij = 1, i = 1, ..., n
xij ∈ {0, 1}, i = 1, ..., n, j = 1, ..., m.
— variable xij = 1 si la tache i est traitée par le serveur j ; xij = 0 sinon –
problème combinatoire (difficile)
— l’objectif du programme n’est pas linéaire. La fonction non-linéaire “max” peut
être facilement réduite à un objectif avec des contraintes linéaires :
on pose les contraintes
n
X
z≥ tixij , j = 1, ..., m,
i
et le nouvel objectif : minimiser z.
- 87 -
Remarque : dans un programme linéaire, l’objectif est une fonction linéaire de la variable
de decision x et les contraintes sont les equations ou les inégalités linéaires non-strictes.
La propriété d’un problème PM d’etre un programme OL est une propriété de la repré-
sentation. Les programmes seront classifiés selon leur présentation, pas selon ce à quoi
ils sont equivalents/peuvent être réduits.
Ainsi, le problème de programmation mathématique
x1 + x2 ≤ 20
min x1 : x1 − x2 = 5 (1)
x
x1 , x 2 ≥ 0
est un programme OL.
Mais le problème
x1 + x2 ≤ 20
min |x1 − 2x2| : x1 − x2 = 5 (10)
x
x1 , x 2 ≥ 0
n’est pas un programme OL, car l’objectif de (10) est non-linéaire.
- 88 -
Optimisation “linéaire par morceaux”
• Fonction linéaire : une fonction f : Rn → R est linéairePiecewise-linear
si function
f (αx + βy) = αf (x) + βf (y) ∀x, y ∈ Rn, ∀α, β ∈ R
f : RTn → R is (convex)npiecewise-linear if it can be expressed
Caractérisation : f est linéaire ssi f = a x pour un a ∈ R .
• Fonction affine : une fonction f : Rn → R est affine si f(x) = max (aT x + b )
i i
i=1,...,m
f (αx + (1 − α)y) = αf (x) + (1 − α)f (y) ∀x, y ∈ Rn, ∀α ∈ R
f is parameterized by m n-vectors a and m scalars bi
Caractérisation : f est affine ssi f = aT x + b pour a ∈ Rn, b ∈ R. i
f (x)
• Fonction linéaire par morceau :
f : Rn → R est (convexe) linéaire par
morceau si
aTi x + bi
f (x) = max (aT
i x + bi ).
i=1,..,m
x
f est paramétrée par m n-vecteurs ai et m scalaires bi.
(the term piecewise-affine is more accurate but less common)
- 89 -
Piecewise-linear optimization
Minimisation linéaire par morceaux
( )
min f (x) = max aT
i x + bi
i=1,...,m
• Modèle OL équivalent avec la variable x et la variable auxiliaire t :
min{t : aT
i x + bi ≤ t ∀i}
• PL en forme canonique (notation matricielle) :
- 90 -
Minimisation de la somme des fonctions linéaires par morceaux
min maxi=1,...,m (aTi x + bi ) +maxj=1,...,p (cTj x
+ dj ) ⇔
min max T
(ai + cj ) x + (bi + dj )
i = 1, ..., m
j = 1, ..., p
- 91 -
Approximation de Tchebychev `∞ : min {kAx − bk∞} .
• PL équivalent après la discrétisation (avec la variable x et variable auxiliaire t) :
- 92 -
• Le même problème peu être formulé comme un PL different en introduisant des va-
riables auxiliaires
u ≥ 0, v ≥ 0, u − v = Ax − b.
On obtiens ainsi le programme
Xm
min (ui + vi) : Ax − b = u − v, u ≥ 0, v ≥ 0
i=1
- 93 -
Application statistique : régression robuste
Étant données les observations {xi ∈ Rn, yi ∈ R}m
i=1 dans le modèle
des sorties observées par les sorties du modèle z = θT x, appliqué aux régresseurs
observés x1, ..., xm.
• En notant X = [xT 1 ; xT ; ...; xT ] la matrice de régresseurs, la procédure d’estimation
2 m
s’écrit
θb ∈ Argmin φ(y, Xθ) [y = [y1; ...; ym]]
θ
(notation Argminx f ⇔ ensemble de minimiseurs de f en x).
- 94 -
• Le choix de la perte φ(·, ·) dépend de la distribution de bruit ξ.
La perte couramment utilisées est la perte quadratique φ(u, v) = ku − vk2, corres-
pondant au cas du bruit blanc normal (ξi ∼ N (0, σ 2) sont indépendants) ou, plus
généralement, au cas e ξi i.i.d. avec la moyenne nulle et la variance finie
P
⇒ méthode de moindres carres min m T 2
i=1 (yi − xi θ) .
θ
- 95 -
Comment ça Comparison
marche – comparaison avec les moindres
with least-squares carrés
solution
Soit A ∈ R200×80, b ∈ R200 matrices aléatoires, et soit
histograms of residuals Ax − b, with randomly generated A ∈ R200×80, for
x`s ∈ Argmin kAx − bk2, x`1 ∈ Argmin kAx − bk1.
x x
xls = argmin kAx − bk, xℓ1 = argmin kAx − bk1
10
0
1.5 1.0 0.5 0.0 0.5 1.0 1.5
(Axls − b)k
100
80
60
40
20
0
1.5 1.0 0.5 0.0 0.5 1.0 1.5
(Axℓ1 − b)k
ℓ1-norm distribution is wider with a high peak at zero
- 96 -
Piecewise-linear optimization 2–11
Comment ça marche – Robust curve
régression fitting
simple
• fit affine function f (t) = α + βt to m points (ti, yi)
—
• anmapproximation
observations bruit ées (t
problem Axi, y
≈i)b de la fonction affine f (t) = α + βt
with
— Problème à résoudre : min
kAx − bk avec
1 t1 y1
α
A = .. ".. ,# x = 1 ,t1 b = ".. #
α β y
x1=tm , A = ... ... , b =ym .. 1 .
β .ym
1 tm
25
20
15 • •dashed:
en pointillé : min
minimize x kAx
kAx − bk− bk2
10 • en continu : minx kAx − bk1
5 • solid: minimize kAx − bk1
f (t)
10 robust
15
20 10 5 0 5 10
- 97 -
Application statistique : acquisition compressée (Compressed Sensing)
Nous avons une observation m-dimensionnel
y = [y1; ...; ym] = Xθ∗ + ξ
[X ∈ Rm×n : matrice d’acquisition, ξ : bruit d’observation]
d’un “signal” inconnu θ∗ ∈ Rn avec m n, et on cherche à estimer θ∗.
On s’interesse ici au cas m n, quand le système soluble
Xθ = y
en variables θ possède l’infinité de solutions
⇒ Même sans bruit d’observation, on ne peut pas identifier θ∗ sans hypothèses supplé-
mentaires.
• En Compressed Sensing (acquisition compressée) on suppose que θ∗ est creux — ait
au plus s m coefficients non-nuls.
- 98 -
Remarque : soit ξ = 0, et soit toute sous-matrice m × 2s de X de rang 2s (ce
qui est souvent le cas quand m 2s). Alors θ∗ est la solution optimal du problème
d’optimisation
θb = argmin {kθk1 : Xθ = y}
θ
X
⇔ min zj : Xθ = y, −zj ≤ θj ≤ zj ∀j ≤ n .
θ,z j
- 99 -
Comment ça marche – acquisition compressée
Example
Example
• signal exacte x∗ ∈ R1000, 2
2
1
10 coefficients non-nuls
1000
exact •signal x̂ ∈ R
exact signal x̂ ∈ R1000
1
x̂k
0
x̂k
• matrice A ∈ R100×1000 aléatoire,
0
10 nonzero components
• 10 nonzero components −1 −1
2 2
minimum ℓ2-norm solution minimum ℓ1-norm solution
1 1
2 2
xk
xk
0 0
1 1
−1 −1
xk
xk
0 −2 −2 0
0 200 400 600 800 1000 0 200 400 600 800 1000
−1 k −1 k
−2
ℓ1-norm estimate is exact - 100 - −2
Piecewise-linear
0 200 optimization
400 600 800 1000 0 200 400 600 800 2–14 1000
k k
• Quand l’observation est bruitée, c.-à-d. que
y = Xθ∗ + ξ,
et on connaı̂t une borne δ de norme kξk du bruit, l’estimateur de θ∗ par minimisation
de la norme `1 devient
- 101 -
Comment ça marche – Dantzig Selector
• matrice A ∈ R200×500 aléatoire, σ = 0.25
true x observation
1.0
0.8
0.5
0.0
x0
y
0.4
−0.5
0.0
j j
1.2
0.1 0.2 0.3
0.8
x
0.4
0.0
−0.1
0 100 200 300 400 500 0 100 200 300 400 500
j j
- 102 -
Application statistique : classification linéaire
— Étant donné un ensemble de points v1, ..., vm avec les etiquettes si ∈ {−1, 1}
— trouver un hyperplan αT x + β tels que les points avec les etiquettes “+1” et “-1”
se trouvent dans les deux demi-espaces différents
3 αT vi + β > 0 si si = 1, αT vi + β < 0 si si = −1
3
2
2
X2
X2
1
1
0
0
−1
−1
−1 0 1 2 3 −1 0 1 2 3
X1 X1
- 104 -
• PL équivalent en variables α ∈ Rn, β ∈ R et variable auxiliaire u ∈ Rm :
Xm
1 − si(viT α + β) ≤ ui i = 1, ..., m
min ui :
0 ≤ ui, i = 1, ..., m
i=1
- 105 -
Logiciels
Les logiciels d’optimisation peuvent être classés en 2 groupes :
• “Solveurs” – moteurs d’optimisation, commerciaux (Mosek, CPLEX, Gurobi, ...)
ou libres (GLPK, LP Solve, SDPT3, ...) – ce sont eux qui, proprement dit, résolvent
des problèmes d’optimisation.
Un solveur accepte en entrée un problème d’optimisation dans un format special (propre
à chaque solveur), pour rendre à la sortie une solution, si le problème en question est
soluble, ou décide que le problème n’est pas soluble et produit un certificat pour justifier
cette décision.
Certains moteurs d’optimisation sont interfacé avec R. Dans ce cours nous allons utiliser
RMosek – l’interface R du moteur Mosek (logiciel commercial, disponible gratuitement
pour les universitaires) https ://www.mosek.com/
- 106 -
• Outils de modélisation – “modeleurs”, dont le but est de simplifier la formulation et
analyse d’un problème d’optimisation. En ce qui concerne les problèmes équivalents aux
programmes OL, ces outils peuvent
— accepter le problème dans une forme standard simplifiée
(e.g., avec les max, k · k1, k · k∞, etc)
— reconnaı̂tre les problèmes qui peuvent être convertis en OL
— transformer le problème dans le format accepté par le moteur d’optimisation utilisé
Les outils de modélisations sont disponibles sous différentes formes et en différents lan-
gages de programmation :
— AMPL, GAMS (outils autonomes)
— CVX, YALMIP (MATLAB)
— CVXPY, CVXOpt, Pyomo (Python)
— CVXR (R)
- 107 -
CVXR exemple
> library(mvtnorm)
> n=500; p=50; sig=0.01;epsn=0.01;s=2;
> r=qnorm(1-epsn/n)*sig;
> S=0.5^toeplitz(1:p)
> A=rmvnorm(n, sigma = S)
> b=apply(A[,1:5], 1, sum) + sig*rnorm(n)
# CVXR proprement dit
> library(CVXR)
> x=Variable(p)
> constraints=list(p_norm(x, Inf)<=s, p_norm(b-A%*%x, Inf)<=r)
> prob=Problem(Minimize(p_norm(x,1)), constraints)
> result=solve(prob)
> x=result$getValue(x)
> plot(x)
- 108 -
RMosek Moteur “commercial” (accès gratuit pour les etudiants)
• Format standard RMosek :
— variable x ∈ Rn,
— matrice de contraintes A ∈ Rm×n
— objectif c ∈ Rn,
— bornes inférieure `c et supérieure uc de contraintes
— bornes inférieure `x et supérieure ux de x
minimize cT x
subject to `c ≤ Ax ≤ uc,
`x ≤ x ≤ ux
La page du projet : https ://cran.r-project.org/web/packages/Rmosek/index.html
Documentation RMosek : https ://docs.mosek.com/9.0/rmosek/index.html
- 109 -
Utilisation de RMosek
Ou encore :
min{cT x : b ≤ Ax ≤ b, x ≥ 0},
ou A ∈ Rm×n est la matrice avec les éléments [A]ij = pij , 1 ≤ i ≤ m, 1 ≤ j ≤ n.
- 110 -
> foods=read.table("food.dat", header=T) #Lecture des donnees
> foods[1:4,]
Food Cal CalFat Fat SatFat Chol Sodium Carbo Protein Vi
1 1%_Low_Fat_Milk_Jug 1_carton_(236_ml) 100 20 2 1 10 125 12 8
2 Apple_Slices 1.2_oz_(34_g) 15 0 0 0 0 0 4 0
3 BBQ_Ranch_Burger 4.1_oz_(116_g) 350 140 16 6 45 680 37 16
4 Bacon,_Egg_&_Cheese_Bagel 7_oz_(199_g) 630 290 32 11 275 1490 57 30
>
> fnames=foods[,1]
> nutr.norm=read.table("nutr_ideal.dat", header=T)
> names(nutr.norm)
[1] "Cal" "CalFat" "Fat" "SatFat" "Chol" "Sodium" "Carbo" "Protein" "VitA"
[11] "Calcium" "Iron"
>
> diet1 = list() # creation du probleme
> diet1$sense = "min" # definir le sens d'optimisation
> diet1$c = as.matrix(foods[,2]) # definir l'objectif: la valeur calorique
> A = t(as.matrix(foods[,3:13])) # definir la matrice des contraintes
> diet1$A = Matrix(A,sparse=TRUE)
> b = as.matrix(nutr.norm[2:12]) # definir les bornes admissibles
> blc = 0.8*b; buc=1.2*b; # pour les nutriments
> diet1$bc = rbind(blc, buc);
> blx = rep(0,305); bux <- rep(Inf,305); # contraintes de non-negativite
> diet1$bx = rbind(blx, bux);
> r = mosek(diet1)
Computer
Platform : Windows/64-X86
Cores : 1
Problem
Name :
Objective sense : min
Type : LO (linear optimization problem)
Constraints : 11
Cones : 0
Scalar variables : 305
Matrix variables : 0
Integer variables : 0
Optimizer started.
Interior-point optimizer started.
Presolve started.
...
...
> x=r$sol$itr$xx # extraire la solution x
> t(diet1$c)%*%r$sol$itr$xx #valeur optimale c^Tx --la valeur calorique du regime
[,1]
[1,] 1334.856
>
...
> mydiet # impression du contenu de regime
[1] "Chocolate_Chip_Cookie 1_cookie_(33_g): 0.699908803471238"
[2] "EQUAL_0_Calorie_Sweetener 1_pkg_(1.0_g): 84.2645722693934"
[3] "Fat_Free_Chocolate_Milk_Jug 1_carton_(236_ml): 0.898566545455502"
[4] "Hamburger 3.5_oz_(100_g): 2.14750840210163"
[5] "Sausage_Burrito 3.9_oz_(111_g): 1.35453792177156"
[6] "Side_Salad 3.1_oz_(87_g): 1.98962488832494"
>
On peut ajouter des contraintes pour rendre le menu “mangeable,” par exemple
et ainsi de suite...
Definitions
Programmation en nombres entiers
integer linear program (ILP)
• Définitions
— (PLE) – programme linéaire en nombres entiers
T (Integer Linear program, ILP)
minimize c x
min{csubject to ≤Ax
T x : Ax ≤ ∈b Zn}
b, x
x
x ∈ Zn
— mixed
(PLEM)integer
– programme
linearlin éaire d’entiers
program: only mixte
some (Mixed Integer Linear
of the variables program) :
are integer
certaines variables (mais pas toutes) sont des entiers
— 0-1
(PLB)(Boolean)
– programme linear program:
lineaire booléenvariables take Linear
(0-1, Boolean values program)
0 or 1 : variables à
valeurs dans {0, 1}
Integer linear programming - 111 - 18–2
Exemples
• Probleme d’emplacement
— n emplacement possibles pour les installation industrielles avec coût d’emplace-
ment cj
— m clients
— dij le coût de service du client i de l’emplacement j
Variables yj , xij :
— yj = 1 si l’emplacement j est sélectionné et 0 sinon
— xij = 1 si l’emplacement j sert le client i et 0 sinon
Formulation booléenne :
Pn
Xn m X
X n j=1 xij = 1, i = 1, ..., m
min cj yj + dij xij : xij ≤ yj , i = 1, ..., m, j = 1, ..., n
j=1
i=1 j=1 xij , yj ∈ {0, 1}
- 112 -
• L’exemple le plus connu d’un problème difficile – problème du voyageur de commerce :
– étant donnés n sites, déterminer l’ordre dans lequel les visiter pour minimiser la distance
totale parcourue
- 114 -
Relaxation par PL
Probleme general de programmation en nombres entiers :
Linear programming
T
relaxation
min{c x : Ax ≤ b, x est un entier}
x
⇒ (relaxation) n
relaxation: remove the constraints
T
x ∈ Z
min{c x : Ax ≤ b, x est un entier}
x
• provides a lower
— Permet bound
d’obtenir on the
une borne intéoptimal value
rieure sur la valeurof the integer
optimale du PLE LP
— Si la solution est en nombres entiers, c’est aussi la solution du PLE
• if solution of relaxation is integer, then it solves the integer LP
— Attention : on peut avoir des formulations relaxées différentes pour le même PLE
c c
- 115 -
equivalent ILP formulations can have different LP relaxations
minimize −2x1 − 3x2
subject to (x1, x2) ∈ P
Exemple
where
2 1 1
P = {x ∈ Z2+ | x1 + x2 ≤ 1, x1 +
9 4 7
x2 −c
2x + 1x ≤ 1
9 1 4 2
1 1
x1 + x2 ≤ 1
min −2x1 − 3x2 :
x
|7 3
{z }
optima
x∈X
x1, x2 ∈ Z+
x1
- 116 -
Methode de séparation
tree of subproblems and et d’évaluation
results progressive (Brunch and Bound)
of LP relaxations
x∗ Opt
x1 ≤ 2
P0
x1 ≥ 3
P0 [2.17x;⋆ 2.07] p⋆
-10.56
P1P0 (2.17,
[2.00 ;2.07)
2.14] −10.56
-10.43
P1 P2
P2P1 (2.00,
[3.00 ;2.14)
1.33] −10.43
-10.00
x2 ≤ 2 x2 ≥ 3 x2 ≤ 1 x2 ≥ 2 P3P2 (3.00,
[2.00 ;1.33)
2.00] −10.00
-10.00
−10.00
P3 P4 P5 P6 P4P3 (2.00, 2.00)
[0.00 ; 3.00] -9.00
P4 (0.00, 3.00) −9.00
x1 = 3 x1 ≥ 4
P5P [3.38 ; 1.00]
(3.38, 1.00)
-9.75
−9.75
5
P6P6 +∞
+∞
P7 P8
P7P7 [3.00 ;1.00)
(3.00, 1.00] -9.00
−9.00
x2 = 0 x2 = 1 P8P8 [4.00 ;0.44)
(4.00, 0.44] -9.33
−9.33
P9 P10 P9P9 (4.50,
[4.50 ;0.00)
0.00] −9.00
-9.00
x1 = 4 x1 ≥ 5
PP10
10 +∞
+∞
PP11
11 (4.00,
[4.00 ;0.00)
0.00] −8.00
-8.00
PP12 +∞
P11 P12 12
+∞
- 117 -
Séparation et évaluation
⇒ P2 : min cT x sous contrainte x ∈ X et x1 ≥ 3
valeur optimale ≥ −10.00
⇒ P3 : min cT x sous contrainte x ∈ X, x1 ≤ 2, et x2 ≤ 2
solution x = [2; 2], valeur optimale Opt = −10
...
⇒ P6 : min cT x sous contrainte x ∈ X, x1 ≥ 3, x2 ≥ 2
problème irréalisable
...
Apres avoir résolu les relaxations pour P0, P1, P2, P3, P4 on peut déduire que [2; 2]
est la solution optimale du PLE
- 118 -
Utilisation du solveur d’entiers mixte (MIP) de Mosek
• il suffit de déclarer pour RMosek des variables entières :
— le vecteur intsub doit contenir les indices des variables entières
— variables booléennes, x ∈ {0, 1}, doivent être déclarer comme entières et satis-
faisant la contrainte 0 ≤ x ≤ 1
Par exemple, dans le problème de regime McDonald’s, pour convertir les variables en
entiers, il suffit de faire
> diet4=diet3
> diet4$intsub=c(1:305)
> r = mosek(diet4)
Computer
Platform : Windows/64-X86
Cores : 1
Problem
Name :
Objective sense : min
Type : LO (linear optimization problem)
Constraints : 12
- 119 -
Cones : 0
Scalar variables : 305
Matrix variables : 0
Integer variables : 305
Optimizer started.
Mixed integer optimizer started.
Optimizer - threads : 1
0 1 0 NA 1.5106771305e+003 NA 0.0
0 2 0 NA 1.5222410122e+003 NA 0.0
...
405 366 10 1.5950000000e+003 1.5800000000e+003 0.94 0.2
415 371 0 1.5950000000e+003 1.5950000000e+003 0.00e+000 0.2
An optimal solution satisfying the absolute gap tolerance of 0.00e+000 has been located.
The absolute gap is 0.00e+000.
...
> t(diet4$c)%*%r$sol$int$xx
[,1]
[1,] 1595
> mydiet
[1] "Chocolate_Chip_Cookie 1_cookie_(33_g): 4"
[2] "Coffee_(Large) 16_fl_oz_cup: 10"
[3] "Coffee_(Medium) 16_fl_oz_cup: 10"
[4] "Coffee_(Small) 12_fl_oz_cup: 10"
[5] "Diet_Coke_(Medium) 21_fl_oz_cup: 10"
[6] "EQUAL_0_Calorie_Sweetener 1_pkg_(1.0_g): 10"
[7] "Egg_McMuffin 4.8_oz_(135_g): 1"
[8] "Fat_Free_Chocolate_Milk_Jug 1_carton_(236_ml): 1"
[9] "Hamburger 3.5_oz_(100_g): 1"
[10] "Newman's_Own_Low_Fat_Balsamic_Vinaigrette 1.5_fl_oz_(44_ml): 1"
[11] "SPLENDA_No_Calorie_Sweetener 1_pkg_(1.0_g): 10"
[12] "Side_Salad 3.1_oz_(87_g): 2"
[13] "Strawberry_Banana_Smoothie_(Small) 12_fl_oz_cup: 1"