Recherche Op´erationnelle

Paul Feautrier
20 mai 2004
2
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
Table des mati`eres
1 Optimisation sans contraintes 5
1.1 Principaux concepts . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 Optimisation continue sans contrainte . . . . . . . . . . . . . . . 10
1.3 Programmation lin´eaire . . . . . . . . . . . . . . . . . . . . . . . 15
2 Optimisation sous contraintes 27
2.1 Conditions de Kuhn et Tucker . . . . . . . . . . . . . . . . . . . . 27
2.2 Une m´ethode directe . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.3 M´ethodes duales . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.4 Fonction de Lagrange, point-col . . . . . . . . . . . . . . . . . . . 32
2.5 Optimisation combinatoire . . . . . . . . . . . . . . . . . . . . . . 36
2.5.1 coque enti`ere . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.5.2 Algorithme de Gomory . . . . . . . . . . . . . . . . . . . 39
2.5.3 Techniques de codage . . . . . . . . . . . . . . . . . . . . 41
3 M´eta-heuristiques 43
3.1 S´eparation et ´evaluation ou Branch-and-Bound . . . . . . . . . . 43
3.1.1 Algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.1.2
´
Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.1.3 Strat´egie et Tactiques . . . . . . . . . . . . . . . . . . . . 46
3.2 Programmation Dynamique . . . . . . . . . . . . . . . . . . . . . 48
3.3 Exploration al´eatoire . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.3.1 Am´elioration it´erative . . . . . . . . . . . . . . . . . . . . 53
3.3.2 Recuit simul´e . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.3.3 La m´ethode Tabou . . . . . . . . . . . . . . . . . . . . . . 57
3.3.4 Algorithmes g´en´etiques . . . . . . . . . . . . . . . . . . . 58
3.4 Conclusion g´en´erale . . . . . . . . . . . . . . . . . . . . . . . . . 59
4 Table des mati`eres
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
Chapitre 1
Optimisation sans
contraintes
Plan
– Introduction et principaux concepts
– Optimisation continue sans contrainte
– Programmation lin´eaire
– Optimisation continue sous contrainte
– Optimisation combinatoire
– Programmation lin´eaire en nombres entiers.
– Exploration
– M´etaheuristiques
– Programmation dynamique

´
El´ements de Complexit´e
1.1 Principaux concepts
Qu’est ce que la recherche op´erationnelle ?
– Vocabulaire : Recherche op´erationnelle = programmation math´ematique
= optimisation (mais pas optimisation de programme).
– Recherche op´erationnelle = mod´elisation math´ematique des processus de
prise de d´ecision.
– Inconnues : les variables de d´ecision.

´
Evaluation de la d´ecision = fonction ´economique ou fonction «objectif».
– Trouver les valeurs des variables de d´ecision qui minimisent (ou maxi-
misent) la fonction objectif.
Recherche op´erationnelle
modélisation
optimisation action
6 Optimisation sans contraintes
– La mod´elisation est un art, l’optimisation est une science.
– Applications : planification du d´ebarquement de Normandie, optimisation
d’un programme de calcul intensif, investissement en bourse.
– Investissement en bourse = optimisation avec information incompl`ete
ou al´eatoire.
– Planification d’une op´eration militaire = il y a un adversaire = th´eorie
des jeux.
– Optimisation d’un programme = en principe, on a une information com-
pl`ete.
– Le cours est essentiellement consacr´e `a l’optimisation avec information
compl`ete.
Informatique ou math´ematique ?
Mathématique Informatique
Recherche Opérationelle
Complexité
Théorèmes d’existence
Convergence
Algorithmes
Preuves de terminaison Artificielle
Intelligence
Vocabulaire
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
1.1 Principaux concepts 7
courbes de niveau de
la fonction objectif
optimum
contraintes
Forme canonique :
trouver x ∈ D qui mi-
nimise f.
min f(x)
x ∈ D
Optimum local, global
– Minimum local : a est un minimum local de f s’il existe un voisinage V
de a tel que :
x ∈ V ⇒ f(x) f(a).
– Minimum global : a est un minimum global de f dans D si et seulement
si :
x ∈ D ⇒ f(x) f(a).
local
global
Convexit´e
Un ensemble S est convexe si, pour toute paire de points a, b de S, S contient
aussi le segment ab.
a, b ∈ S ⇒ (0 λ 1 ⇒ λa + (1 −λ)b ∈ S.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
8 Optimisation sans contraintes
convexe convexe convexe non convexe
Fonction convexe
– f est convexe dans un ensemble convexe S si et seulement si :
x, y ∈ S, 0 λ 1 ⇒ f(λx + (1 −λ)y) λf(x) + (1 −λ)f(y)
S
f
x
y
Int´erˆet de la convexit´e
Th´eor`eme 1.1. Si f est convexe dans un ensemble convexe S, alors tout mi-
nimum local de f est un minimum global.
D´emonstration. Soit a un minimum local, et V l’ouvert contenant a dans lequel :
x ∈ V ⇒ f(x) f(a).
Si on suppose qu’il existe un point b ∈ S tel que f(b) < f(a) alors on a :
f(λa + (1 −λ)b) λf(a) + (1 −λ)f(b).
Il est possible de trouver un λ suffisamment proche de 1 pour que x =
λa + (1 −λ)b soit dans V . Contradiction en ce point :
f(x) λf(a) + (1 −λ)f(b) f(a),

Classification
– Selon la nature des variables de d´ecision :
– Optimisation continue.
– Optimisation discr`ete ou optimisation combinatoire.
– Selon la nature des contraintes :
– Pas de contraintes ou contraintes faciles `a satisfaire (un segment de la
droite r´eelle) : optimisation sans contraintes.
– Optimisation sous contraintes : il est difficile de trouver un point satis-
faisant les contraintes.
– Propri´et´es sp´eciales des ´el´ements du probl`eme : lin´earit´e, convexit´e.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
1.1 Principaux concepts 9
Optimisation multicrit`ere
– Forme canonique : trouver x ∈ D qui minimise f
1
, f
2
, . . .
min f
1
(x)
min f
2
(x)
. . .
x ∈ D
– Le probl`eme est ´evidemment mal pos´e. Quel sens peut on lui donner ?
– Exemple : on doit concevoir un ´equipement ´electronique qui doit ex´ecuter
un algorithme donn´e le plus vite possible et pour le moindre prix.
– f
1
est le temps d’ex´ecution de l’algorithme.
– f
2
est le prix de l’´equipement.
Domination
– On se place dans le cas n = 2.
– La solution x domine la solution y si et seulement si
f
1
(x) f
1
(y), f
2
(x) f
2
(y).
– La relation de domination est un ordre partiel. On ne peut donc pas prou-
ver l’unicit´e d’un minimum s’il existe.
– L’optimum de Pareto (ou le Pareto) du probl`eme est l’ensemble des solu-
tions non domin´ees.
Pareto
prix
latence
domination
Que faire avec un Pareto ?
Pond´eration
On attribue un poids `a chaque objectif et on minimise l’objectif pond´er´e.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
10 Optimisation sans contraintes
prix
latence
optimum
pondéré
Transformation objectif/contrainte
On fixe la valeur de l’une des fonctions objectif et on optimise l’autre. Par
exemple, le marketing d´ecide du prix maximum de l’´equipement.
prix
latence
borne du prix
optimum
1.2 Optimisation continue sans contrainte
Optimisation continue sans contrainte
On consid`ere une seule variable
min f(x)
x ∈ R
– Si on connaˆıt la d´eriv´ee f

de f, le probl`eme se ram`ene `a trouver les racines
de f

, puis `a les tester une par une pour savoir si elles sont un minimum,
un maximum ou un point d’inflexion.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
1.2 Optimisation continue sans contrainte 11
– On peut utiliser pour cela des m´ethodes classiques : it´eration de Newton
(si on peut calculer la d´eriv´ee seconde), dichotomie, m´ethode de la s´ecante.
– Si on ne connaˆıt pas la d´eriv´ee, la premi`ere chose `a faire est de trouver un
encadrement du minimum. Il n’y a pas de m´ethode g´en´erale, on utilise les
renseignements que l’on peut avoir sur f.
Fonctions unimodales
– Une fonction f est unimodale dans l’intervalle [a, b] s’il existe un point
a c b tel que si x y c alors f(x) f(y) et si c x y alors
f(x) f(y).
– Il est ´evident que si f est unimodale dans [a, b], alors c est un minimum
global.
Th´eor`eme 1.2. Si f est continue convexe dans [a, b], alors f est unimodale.
D´emonstration. Soit c le minimum de f, et x et y qui violent la condition
d’unimodalit´e, par exemple c x y et f(c) < f(y) < f(x). Soit 0 λ 1 tel
que x = λc + (1 −λ)y. Par convexit´e on doit avoir f(x) λf(c) + (1 −λ)f(y)
mais aussi λf(c) + (1 −λ)f(y) f(y) < f(x) une contradiction.
M´ethode par trichotomie
a c d b
a c d b
– On divise l’intervalle [a, b] en trois parties ´egales `a l’aide des points a <
c < d < b. On calcule f(c) et f(d).
– On d´etermine le minimum de f parmi les 4 points a, c, b, d.
– Le minimum continu appartient `a l’intervalle encadrant le minimum dis-
cret.
– L’intervalle est r´eduit au moins par un facteur 2/3. On poursuit jusqu’`a
la pr´ecision voulue.
Am´eliorations
– Vitesse de convergence : la taille de l’intervalle est multipli´ee par
2
3
n/2
apr`es n ´evaluations de la fonction.
– La division en segment ´egaux n’est pas optimale. On a int´erˆet `a agrandir
les segments extrˆemes.
– On peut passer `a un d´ecoupage en 4 parties ´egales. Il faut ´evaluer f trois
fois `a chaque ´etape, mais l’intervalle est au moins divis´e par 2. La conver-
gence est en
1
2
n/3
donc plus rapide.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
12 Optimisation sans contraintes
M´ethodes par exploration
– Il est toujours indispensable de connaˆıtre une encadrement [a, b] du mini-
mum.
– On suppose toujours que f est unimodale. On choisit un pas d’explora-
tion d. On calcule f aux points x
k
= a + k.d jusqu’`a trouver soit une
configuration f(x
k
) f(x
k+1
), soit jusqu’`a atteindre le point b.
– On fait a := x
k−1
, b := x
k+1
, d := ξd et on recommence. ξ < 1 est le
facteur de convergence.
– On s’arrˆete quand d est devenu suffisamment petit.
– La m´ethode peut s’appliquer `a une fonction non unimodale. On obtient
alors un optimum local sans garantie qu’il soit global.
L’algorithme converge
– Le nombre de pas d’exploration est au plus
b−a
b
. L’exploration s’arrˆete en
un temps fini.
– Soit [a
n
, b
n
] le n
e
intervalle d’exploration et d
n
le n
e
pas d’exploration. On
a d
n
= dξ
n
et b
n
−a
n
2d
n
.
– Les [a
n
, b
n
] forment une suite d’intervalles emboˆıt´es dont la longueur tend
vers 0. Ils convergent donc vers une limite c.
Optimisation `a plusieurs variables
– Forme du probl`eme :
min f(x)
x ∈ R
n
– Les inconnues sont les n composantes du vecteur x.
– La notion de fonction unimodale ne se g´en´eralise pas.
Recherche directionnelle
– On se ram`ene au cas `a une seule variable. Pour cela on choisit un point
de d´epart a et une direction d.
– On minimise la fonction `a une variable f(a + t.d) `a l’aide de l’une des
m´ethodes vues plus haut.
– Si le d´eplacement t.d est suffisamment petit, on arrˆete.
– Sinon, on change de direction et on recommence.
– Le point important est le choix des directions.
Recherche suivant les axes
– On prend comme directions les vecteurs cano-
niques de la base. Ceci revient `a fixer n−1 va-
riables de la fonction f, et `a optimiser suivant
la n
e
. On passe ensuite `a la variable suivante.
– La m´ethode est tr`es lente et peut mˆeme ne
pas converger si les courbes de niveau sont `a
peu pr`es parall`eles aux diagonales.
– On peut l’acc´el´erer en effectuant N pas puis
en utilisant la direction a
N
−a
0
.
Gradient
– On suppose que la fonction f a une d´eriv´ee.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
1.2 Optimisation continue sans contrainte 13
– Le gradient de f au point a est le vecteur (
∂f
∂x
1
(a), . . . ,
∂f
∂x
n
(a))
T
. On le
note ∇f(a).
– On a le d´eveloppement de Taylor :
f(a +h) = f(a) +h∇f(a) +. . . .
Ceci montre que −∇f(a) est la direction dans laquelle f d´ecroˆıt le plus
rapidement (steepest descent).
– D’o` u l’algorithme :
1. Calculer le gradient ∇f(a).
2. Minimiser la fonction `a une variable f(a −x∇f(a)).
3. Si le crit`ere de convergence n’est pas v´erifi´e, recommencer en 1.
Propri´et´e
Th´eor`eme 1.3. Dans l’algorithme ci-dessus, les directions de recherche succes-
sives sont orthogonales.
a b
D´emonstration. Soit a le point de d´epart d’une re-
cherche unidimensionnelle suivant la direction ∇f(a)
et b son point d’arriv´ee. La d´eriv´ee de la fonction `a
minimiser est :
df(a −x∇f(a))
dx
= −∇f(a).∇f(x).
En b cette d´eriv´ee est nulle, d’o` u la propri´et´e.
Directions conjugu´ees
– Une matrice A de dimension n n est d´efinie positive si et seulement si :
∀x : x
T
Ax 0.
Une matrice d´efinie positive d´efinit un produit scalaire.
– Deux vecteurs u, v sont conjugu´es par rapport `a A si et seulement si :
u
T
Av = 0. C’est une g´en´eralisation de la notion d’orthogonalit´e.
– Soit n vecteurs d
1
, . . . , d
n
mutuellement conjugu´es :
i = j ⇒ d
T
i
.A.d
j
= 0.
– Soit la fonction f(x) = 1/2x
T
Ax +b
T
x +c. Si on la minimise successive-
ment suivant les directions d
1
, . . . , d
n
, on atteint le minimum exact en n
´etapes.
Notations
– Soit x
(k)
, k = 0, . . . les minima successifs.
– x
(k+1)
= x
(k)

k
d
k
.
– Le gradient de f en x est Ax +b.
– D’apr`es la propri´et´e ci-dessus et la conjugaison des d
k
, on a :
λ
k
= −
d
T
k
(Ax
(0)
+b)
d
T
k
Ad
k
.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
14 Optimisation sans contraintes
– Les coordonn´ees de x
(k)
sont donn´ees par la formule :
x
(k)
= x
(0)
+
k
¸
i=1
λ
i
d
i
.
Preuve
Lemme 1.4. En tout point x
(k)
le gradient de f est orthogonal au sous-espace
engendr´e par d
1
, . . . , d
k
.
D´emonstration. Le gradient en x
(k)
est Ax
(k)
+ b = Ax
(0)
+
¸
k−1
i=1
λ
i
AD
i
+ b.
Si on multiplie par d
i
et qu’on remplace λ
i
par sa valeur il vient :
d
i
Ax
(0)

d
T
i
(Ax
(0)
+b)
d
T
i
Ad
i
.(d
T
i
Ad
i
) +b = 0.

Th´eor`eme 1.5. Le point x
(n)
est le minimum de f.
D´emonstration. En effet, le gradient en x
(n)
doit ˆetre conjugu´e de n vecteurs
lin´eairement ind´ependants, et donc doit ˆetre nul.
Gradient conjugu´e
– C’est la transposition de la m´ethode ci-dessus au cas o` u la fonction f est
quelconque, mais o` u on sait calculer son gradient.
– On part d’un point a
0
et on pose d
0
= −∇f(a
0
).
– Supposons que l’on soit parvenu en un point a
k
avec la direction d
k
. On
minimise f(a
k
+λ.d
k
). Soit λ
k
la solution obtenue.
– On pose :
a
k+1
= a
k

k
.d
k
,
β
k
=
[[∇f(a
k+1
)[[
2
[[∇f(a
k
)[[
2
,
d
k+1
= −∇f(a
k+1
) +β
k
d
k
.
– On montre que si f est quadratique d´efinie positive, la m´ethode est iden-
tique `a celle des directions conjugu´es et converge en n ´etapes.
Recherche al´eatoire
– Au lieu de calculer la direction de recherche optimale pour une approxima-
tion quadratique de f, on peut la choisir al´eatoirement en tirant n nombres
au hasard dans l’intervalle [0, 1].
– La m´ethode ne n´ecessite pas le calcul du gradient. Elle fonctionne mˆeme
si f n’est pas d´erivable.
– Mais en g´en´eral, sa convergence est beaucoup plus lente.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
1.3 Programmation lin´eaire 15
Test d’arrˆet
– Le choix d’un test d’arrˆet est difficile.
– Si f est d´erivable, son gradient doit ˆetre nul `a l’optimum. On peut donc
utiliser [[∇f(a
k
)[[ < ε comme test d’arrˆet.
– Sinon, on peut arrˆeter les it´erations quand la solution ne change plus :
[[a
k+1
−a
k
[[ < ε.
– ε doit refl´eter la pr´ecision requise. Il ne doit pas ˆetre plus petit que la
pr´ecision des calculs sous peine de blocage.
– Il est prudent d’attendre que le test ait ´et´e satisfait plusieurs fois avant
d’arrˆeter.
– En g´en´eral, la valeur du minimum est mieux d´efinie que sa position.
1.3 Programmation lin´eaire
Programmation lin´eaire
min c.x
Ax +b 0
– x est le vecteur des inconnues, de dimension n.
– A est la matrice des contraintes, de dimension mn.
– b est le terme constant, de dimension m.
– c de dimension n est le gradient de la fonction objectif.
Autres formes d’un programme lin´eaire
– Un programme lin´eaire peut se mettre sous de multiples formes, toutes
´equivalentes.
– On peut changer le sens de l’in´egalit´e, ou passer le terme constant de
gauche `a droite.
– On peut remplacer les in´egalit´es par des ´egalit´es en introduisant des va-
riables d’´ecart toutes positives :
Ax +b 0 ≡ Ax +b −y = 0, y 0
– On peut imposer que toutes les variables soient positives, en posant
x := x
+
−x

, x
+
, x

0
– On peut enfin transposer le programme : Ax +b 0 ≡ x
T
A
t
+b
t
0
Poly`edre Convexe
– L’ensemble { = ¦x [ Ax +b 0¦ est convexe. On l’appelle un poly`edre
convexe ou simplement un poly`edre.
– La fonction c.x est trivialement convexe.
– Donc, si un programme lin´eaire a un minimum local, c’est un minimum
global.
Test de faisabilit´e
– Pour trouver un minimum, il faut que le poly`edre :
{ = ¦x [ ax = b 0¦
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
16 Optimisation sans contraintes
soit non vide, ou encore qu’il existe au moins un point x
0
qui satisfasse
toute les in´egalit´es Ax +b 0.
– On peut v´erifier cette condition `a l’aide du test de Fourier-Motzkin.
– On ´elimine successivement toutes les inconnues de x jusqu’`a trouver un
syst`eme sans inconnues, dont la faisabilit´e se teste par inspection.
– Notations : x
(n)
le vecteur x amput´e de ses n premi`eres composantes.
x
(0)
= x.
– A
(n)
x
(n)
+b
(n)
0 le syst`eme obtenu apr`es l’´elimination de n variables.
Test de Fourier-Motzkin
– Soit `a ´eliminer x
1
. On r´eparti les contraintes en trois classes :
– k ∈ I
0
ssi a
k1
= 0.
– k ∈ I
+
ssi a
k1
> 0.
– k ∈ I

ssi a
k1
< 0.
– Dans une contrainte de I
0
, l’inconnue x
1
est d´ej`a ´elimin´ee.
– Une contrainte k ∈ I
+
donne une borne inf´erieure de x
1
:
x
1

b
k
+a
k,2
x
2
+. . .
a
k1
;
– Une contrainte k ∈ I

donne une borne sup´erieure de x
1
:
x
1

b
k
+a
k,2
x
2
+. . .
−a
k1
;
– Pour ´eliminer x
1
, il suffit d’´ecrire que chaque borne inf´erieure est inf´erieure
`a chaque borne sup´erieure.
– On poursuit jusqu’`a ´elimination de toutes les variables. Au bout de n
´etapes, le syst`eme est de la forme : b
(n)
0, qu’il suffit d’inspecter.
Correction
On dit que le test r´eussit si b
(n)
0, et qu’il ´echoue dans le cas contraire.
Th´eor`eme 1.6. Si le test ´echoue, alors le syst`eme initial est infaisable.
D´emonstration. Supposons a contrario que le syst`eme initial a une solution u.
Les transformations effectu´ees sur les contraintes sont de simples manipulations
alg´ebriques valides ; on en conclu que les intervalles obtenus en comparant une
borne inf´erieure et une borne sup´erieure sont non vides, et donc que le syst`eme
A
(1)
x(1) +b(1) 0 est faisable.
En poursuivant l’´elimination, on en arrive au syst`eme d’ordre n −1, qui n’a
plus qu’une seule inconnue x
n
et qui est ´egalement faisable. Mais le fait que l’un
des b
(n)
< 0 indique que l’un des intervalles de variation de x
n
est vide, une
contradiction.
Compl´etude
Th´eor`eme 1.7. Si le test r´eussit, le syst`eme initial est faisable.
D´emonstration. On exhibe une solution du syst`eme initial en la construisant de
proche en proche `a partir de sa derni`ere composante. On part du syst`eme
A
(n−1)
x
(n−1)
+b
(n−1)
0.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
1.3 Programmation lin´eaire 17
Le fait que les b
(n)
0 garantit que l’intervalle des valeurs possibles de x
n
est non vide. On en choisit une arbitrairement et on la reporte dans le syst`eme
d’ordre n −2. Ce syst`eme n’a plus qu’une inconnue, x
n−1
, dont l’intervalle des
valeurs possibles est non vide. On poursuit ainsi jusqu’`a avoir donn´e une valeur
`a toutes les composantes de x.
Remarques
– Si on s’astreint `a choisir `a chaque pas la solution la plus petite, i.e. la
borne inf´erieure de l’intervalle de variation, on obtient le minimum lexico-
graphique de P, les inconnues ´etant prises dans l’ordre x
n
, . . . , x
1
.
– Il n’est pas obligatoire de poursuive l’´elimination jusqu’`a la fin. Si on
s’arrˆete `a l’´etape p, les variables de x
(p)
deviennent des param`etres. Les
conditions b
(p)
0 d´elimitent les valeurs des param`etres pour lesquelles
le syst`eme est faisable. Enfin, le proc´ed´e de s´election ci-dessus donne la
valeur param´etrique de la solution.
– L’algorithme peut s’ex´ecuter sans division. La combinaison de la contrainte
j ∈ I
+
et de la contrainte k ∈ I

se fait en multipliant la premi`ere par
−a
k1
> 0 et l’autre par a
j1
> 0 et en additionnant.
Complexit´e
– On ´evalue d’abord une borne du nombre de contraintes `a l’´etape p, m
p
,
soit m
p
= x
0
+x
+
x
+
.
– Comme x
0
+x
+
+x

= m
p−1
, m
p
prend sa valeur maximum pour x
0
= 0
et x
+
= x

= m
p−1
, `a condition que m
p−1
> 4.
– Pour le cas le pire, on a donc la r´ecurrence m
p
= (
m
p−1
2
)
2
dont la solution
est m
n
= (
m
2
)
2
n
. C’est aussi une borne du travail `a effectuer.
– La complexit´e est donc ´enorme sauf pour les petits syst`emes. Mais la
redondance est ´egalement ´enorme, surtout si le syst`eme est creux (a beau-
coup de coefficients nuls).
– Enfin, il est possible que l’algorithme se termine pr´ematur´ement.
– L’algorithme de Fourier-Motzkin est tr`es simple `a programmer, mais il
doit ˆetre r´eserv´e `a de petits probl`emes.
Un exemple
– Soit le code :
for(j=i+1; j<n; j++)
for(k=i+1; k<n; k++)
a[j][k] -= a[j][i]*a[i][k]/a[i][i];
– L’ex´ecution de ces deux boucles modifie-t-elle le terme a[i][i] (le pivot) ?
– R´eponse : le syst`eme :
i + 1 j < n,
i + 1 k < n,
i = j,
i = k,
est il faisable ?
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
18 Optimisation sans contraintes
+ j −i −1 0,
− n −j −1 0,
0 k −i −1 0,
0 n −k −1 0,
− i −j 0,
0 i −k 0,
+ j +k −2i 0.
+ k −i −1 0,
− n −k −1 0,
− i −k 0,
0 n −i −2 0,
0 −1 0.
Bingo !
Algorithme de Fourier-Motzkin ´etendu
– On peut au cours de l’ex´ecution du test, garder la trace des combinaisons
effectu´ees. On voit alors que chaque contrainte du syst`eme d’ordre p est
une combinaison lin´eaire `a coefficients positifs d’au plus deux contraintes
du syst`eme d’ordre p −1.
– En g´en´eralisant, toute contrainte figurant dans l’algorithme est combi-
naison lin´eaire positive de lignes de Ax + b. Soit y 0 le vecteur des
coefficients.
– Comme dans le syst`eme d’ordre n toutes les variables ont ´et´e ´elimin´ees,
on en d´eduit yA = 0.
Lemme de Farkas
Th´eor`eme 1.8.
(∃x : Ax +b 0) ⇔ (∀y : y 0, yA = 0 ⇒ yb 0).
D´emonstration. De gauche `a droite soit u tel que Au + b 0 . Soit un y quel-
conque tel que y 0 et yA = 0. On a y(Ax +b) 0. Mais
y(Ax +b) = yAx +yb = yb.
De droite `a gauche, on ex´ecute l’algorithme de Fourier-Motzkin ´etendu. On
en tire un y 0 tel que yA = 0. On en d´eduit que yb 0, ce qui veut dire que
le test a r´eussi et qu’il est possible de construire un u tel que Au +b 0.
Programmation lin´eaire
– On adjoint au syst`eme Ax + b 0 la contrainte z c.x, o` u z est une
nouvelle variable.
– On ex´ecute l’algorithme de Fourier-Motzkin en prenant soin d’´eliminer z
en dernier.
– Si l’algorithme ´echoue, le probl`eme n’est pas faisable.
– Sinon, la valeur de z dans la solution donne la valeur minimum de c.x.
– Le reste de la solution caract´erise un point ou ce minimum est atteint.
Lemme de Farkas affine
Th´eor`eme 1.9. Si le syst`eme Ax +b 0 est faisable, alors :
(∀x : Ax +b 0 ⇒ cx +d 0) ⇔ (∃λ
0
, λ 0 : (∀x : cx +d = λ
0
+λ(Ax +b))).
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
1.3 Programmation lin´eaire 19
D´emonstration. L’implication de droite `a gauche est ´evidente. De gauche `a
droite, l’hypoth`ese revient `a dire que le syst`eme Ax +b 0, cx +d < 0 n’a pas
de solution. D’apr`es le lemme de Farkas, ceci implique l’existence de y
0
, λ 0
tel que λA − y
0
c = 0 et λb − y
0
d < 0. De plus, y
0
ne peut ˆetre nul car cela
impliquerait que Ax +b 0 n’a pas de solution. On peut donc prendre y
0
= 1.
On pose λb −d = −λ
0
, λ
0
> 0 et il vient :
λ(Ax +b) −cx −d = λb −d = −λ
0
,
d’o` u la conclusion du th´eor`eme.
Cˆones
– Un cˆone ( est un poly`edre convexe dont les contraintes sont de la forme
Ax 0.
– Propri´et´e fondamentale : u, v ∈ (, λ, µ 0 ⇒ λu +µv ∈ (.
Th´eor`eme 1.10. L’objet ¦
¸
i
λ
i
u
i
[ λ
i
0¦ est un cˆone.
D´emonstration. Il suffit de consid´erer le syst`eme :
x −
¸
i
λ
i
u
i
= 0,
λ
i
0.
et d’utiliser la m´ethode de Fourier-Motzkin pour ´eliminer les λ
i
. Ce qui reste est
un syst`eme de contraintes lin´eaires en x, qui d´efinissent bien un poly`edre.
R´eciproque
Th´eor`eme 1.11. Tout cˆone ( = ¦x [ Ax 0¦ est engendr´e par un syst`eme
fini de rayons u
1
, . . . , u
p
.
D´emonstration. On consid`ere l’objet (

= ¦yA [ y 0¦. C

est un cˆone dont
on peut d´eterminer les contraintes comme ci-dessus :
(

= ¦c [ cB 0¦ .
Quelque soit y 0, yA appartient `a (

, donc yAB 0. Comme on peut
prendre pour y les m vecteurs unitaires, on en d´eduit AB 0 ce qui signifie que
les vecteurs colonnes de B appartiennent `a (.
Soit maintenant x un vecteur quelconque de (. Pour tout y 0 on a yA.x =
y.Ax 0. En d’autre termes, pour tout c tel que cB 0, on a cx 0. On peut
donc appliquer le lemme de Farkas affine : il existe λ 0 tel que x = λB. ( est
donc engendr´e par les vecteurs colonnes de B.
Th´eor`eme de Minkovsky
Th´eor`eme 1.12. Tout poly`edre { peut ˆetre mis sous la forme : { = O⊕( ⊕H,
o` u O est un polytope (poly`edre born´e), ( est un cˆone et H un sous espace lin´eaire.
D´emonstration. Soit { = ¦x [ Ax +b 0¦. On consid`ere le cˆone T = ¦x, z [ Ax +zb 0¦
o` u z est une nouvelle variable. Il est clair que { est l’ intersection de T avec
l’hyperplan ¦z = 1¦. On construit les rayons de T. Ceux dont la coordonn´ees z
n’est pas nulle engendrent O. Les rayons dont l’oppos´e est ´egalement un rayon
engendrent H. Enfin, ceux qui restent engendrent (.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
20 Optimisation sans contraintes
On peut ´ecrire :
{ =

¸
λ.u +
¸
µ.v +
¸
ν.w

¸
λ = 1, λ 0, µ 0
¸
Les u sont les sommets, les v les rayons et les w les lignes.
Programmation lin´eaire, bis
– Le minimum de c.x sous la contrainte x ∈ { = O+ ( + H est atteint en
l’un des sommets de O `a condition que H soit vide et que c ∈ (.
– En effet on peut ´ecrire :
c.x =
¸
λc.u +
¸
µc.v +
¸
νc.w.
Puisque ν n’est pas contraint, on peut faire d´ecroˆıtre c.x a volont´e s’il
existe un w. Il en est de mˆeme s’il existe un v tel que c.v < 0, puisque
µ 0. Si H est vide, le dernier terme n’existe pas, et si c ∈ (, on minimise
c.x en prenant µ = 0.
Soit u
0
un sommet o` u c.x est minimum, et u
1
un sommet o` u c.u
1
> c.u
0
.
Supposons que dans l’expression de x, u
1
ait un coefficient λ
1
non nul. Le
point x − λ
1
(u
1
− u
0
) est dans { et sa fonction objectif a diminu´e. On
en d´eduit que la solution d’un programme lin´eaire est l’un quelconque des
sommets de O o` u c.x atteint son minimum.
Critique
– La m´ethode ci-dessus est inefficace car il faut utiliser Fourier-Motzkin pour
trouver la d´ecomposition de {, et aussi parce que le nombre de sommets
peut ˆetre tr`es grand (de l’ordre de C
n
m
, le coefficient du binˆome).
– Il existe un algorithme plus efficaces que Fourier-Motzkin pour d´ecomposer
un poly`edre, l’algorithme de Chernikova, mais le nombre de sommets ne
change pas.
Dualit´e
Th´eor`eme 1.13. Si les deux ensembles ¦x [ Ax b¦ et ¦y [ y 0, yA = c¦
sont non vides, on a :
= max ¦cx [ Ax b¦ = min ¦yb [ y 0, yA = c¦ = r.
Soit par exemple x

(resp. y

) un point de l’ensemble de gauche (resp. de
droite). On a :
c.x

= y

Ax

y

.b.
Il en r´esulte que et r existent et que r.
On peut supposer que x

(resp. y

) est le point o` u le maximum (resp. le
minimum) est atteint. En tout point x tel que b−Ax 0 on sait que c.x

−c.x
0, on peut donc appliquer le lemme de Farkas affine :
∃λ
0
, λ 0 : ∀x : c.x

−c.x = λ
0
+λ(b −Ax).
On en d´eduit c.x

= λ
0
+ λb et c = λA. Il en r´esulte que λ fait partie de
l’ensemble de droite :
r λb = c.x

−λ
0
.
On en d´eduit = r.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
1.3 Programmation lin´eaire 21
Analyse de sensibilit´e
optimum
cone des
directions
admissibles
– Variation de ω(b) = max ¦cx [ Ax b¦ avec b ?
– Par dualit´e, ω(b) = min ¦yb [ y 0, yA = c¦. Or
ce poly`edre ne d´epend pas de b. Interpr´etation
g´eom´etrique : aussi longtemps que b reste dans le
cˆone des directions admissibles, l’optimum y

ne
change pas. Donc :
ω(b) = y

.b.
– Pour en savoir plus, il faut faire de la program-
mation lin´eaire param´etrique.
Compl´ementarit´e
Th´eor`eme 1.14.
∀j : y
j
.(b
j
−A
•j
.x) = 0.
D´emonstration.
y

.(b −A.x

) = y

.b −y

.A.x

=
= c.x

−y

.A.x

= (c −y

A).x

= 0.
Mais chaque terme du produit scalaire y

.(b−A.x

) est positif, donc si la somme
est nulle chaque terme est nul.
Dualit´e g´en´eralis´ee
Il existe une tr`es grande vari´et´e de th´eor`emes de dualit´e, suivant la nature
des contraintes et le signe des variables. En premi`ere approximation, on peut
utiliser le tableau suivant :
Primal Dual
objectif (Min) second membre
second membre objectif (Max)
A A
T
Contrainte i : variable u
i
0
Contrainte i : =
variable
non contrainte en signe
Variable x
j
0 contrainte j :
Variable x
j
non contrainte en signe
contrainte j : =
On trouvera dans Schrijver une formulation plus pr´ecise.
Algorithme du Simplexe
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
22 Optimisation sans contraintes
c
– «Trouver le point le plus bas d’un vase».
Fourier, 1828.
– Formalisation par Danzig, 1950.
M´ethodes externes, m´ethodes internes
c
c
optimum
– M´ethodes internes : il faut connaˆıtre un point faisable. On peut arrˆeter la
recherche avant l’optimum.
– M´ethodes externes : il n’y a pas besoin de connaˆıtre un point faisable.
Ordre lexicographique
– D´efinition :
x < y = ∃k : x
1,··· ,k−1
= y
1,··· ,k−1
, x
k
< y
k
.
– < est un ordre total.
– L’ordre par composantes n’est pas total.
– c.x < c.y n’est pas un ordre.
– D’o` u l’int´erˆet de remplacer min c.x par min

.
– On peut toujours ajouter une nouvelle variable u et la contrainte u c.x
`a condition que u soit la premi`ere inconnue.
– Cette technique ´evite les probl`emes bien connus de d´eg´en´erescence.
Algorithme du simplexe externe ou dual
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
1.3 Programmation lin´eaire 23
R´esoudre :
min

x
x 0
Ax +b 0
Tailles : x : n, A : mn, b : m.
G´en´eralisation :
min

x
y = Sz +t 0
z 0
Au commencement,
z = x, S =
¸
I
A

, t =

0
b

.
Invariants
– Les vecteurs colonnes de S sont lexicopositifs au d´emarrage et le restent
tout au long de l’algorithme.
– z est un sous-ensemble de x, y. La condition z 0 est donc toujours
v´erifi´ee.
– D’une ´etape `a l’autre, t croˆıt dans l’ordre lexicographique.
– Ces invariants sont v´erifi´es au d´ebut de l’algorithme.
Cas de base
– Si t 0, on a trouv´e la solution. Il suffit de faire z = 0, ce qui satisfait les
contraintes. On a x = t
1,··· ,n
.
– De plus, c’est le minimum lexicographique : toute autre valeur positive de
z ajoute `a x un vecteur lexicopositif.
– Soit t
i
< 0. Si ∀j : S
ij
0, le probl`eme n’a pas de solution.
Changement de variable
– Soit t
i
< 0 et S
ij
> 0 (le pivot). On ´elimine z
j
en faveur de y
i
:
z
j
= y
i
/S
ij

¸
=j
S
i
/S
ij
z

−t
i
/S
i
.
y
k
=
¸
=j
(S
k
−S
kj
S
i
/S
ij
)z

+S
kj
/S
ij
z
j
+t
k
−S
kj
t
i
/S
ij
.
– Remarquer que −t
i
/S
ij
est positif, et que S
kj
est lexicopositif. Donc, t
croˆıt selon l’ordre lexicographique.
– Comme S
ij
> 0, le vecteur colonne j reste lexicopositif.
– Il reste `a garantir que le vecteur colonne reste lexicopositif.
Choix du pivot
– Si S
i
est n´egatif, il n’y a pas de probl`eme.
– Sinon le nouveau vecteur colonne est ´egal, `a un coefficient positif pr`es, `a :
S

/S
i
−S
•j
/S
ij
.
– Il faut donc choisir j pour que S
ij
> 0 et que le «vecteur r´eduit» S
•j
/S
ij
soit le plus petit possible.
– Un tel choix est toujours possible sauf si on est dans le cas d’un syst`eme
infaisable.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
24 Optimisation sans contraintes
Convergence
– Observer que l’´etat de l’algorithme est enti`erement d´etermin´e quand on
sait quelles sont les composantes de y qui sont dans z (les variables en
base).
– Or y est de taille m+n et z de taille n, il n’y a donc que C
n
m+n
combinaisons
possibles.
– L’algorithme ne peut pas boucler, car t croˆıt dans l’ordre lexicographique.
– Comme C
n
m+n
n’est pas un polynˆome en n et m, l’algorithme n’est pas
polynomial.
– On peut construire des cas pathologiques qui demandent un temps expo-
nentiel.
– Mais en pratique (et en probabilit´e) le nombre d’op´erations est en O(n
2
(n+
m)).
Questions num´eriques
– Du point de vue num´erique, l’algorithme du Simplexe est analogue `a la
m´ethode de Gauss, avec une r`egle particuli`ere pour le choix du pivot.
– Si l’on connaˆıt la matrice des inconnues de base, l’algorithme ne fait qu’in-
verser celle-ci, tout en appliquant les mˆemes transformations aux incon-
nues hors base.
– Les r´esultats sont donc donn´es par des formules de Cramer.
– On peut faire les calculs en virgule flottante. Il y a alors accumulation d’er-
reurs d’arrondi, qui peuvent faire que la solution finale n’est pas faisable
(en particulier pour les contraintes satur´ees).
– Il faut alors d´evelopper des m´ethodes de correction. En g´en´eral la solution
est faisable, mais l’optimalit´e n’est pas garantie.
– On peut rendre la matrice des contraintes enti`eres, et essayer de mener les
calculs exactement (algorithmes «tout entiers»).
– Les nombres `a manipuler sont des d´eterminants de Cramer. On peut donc
les borner `a l’aide de l’in´egalit´e de Hadamard :
[det(A)[ [A
1
[ . . . [A
n
[,
o` u les A
i
sont les vecteurs colonnes (ou les vecteurs lignes) de A.
– Il en r´esulte que la taille des nombres `a manipuler est born´ee par n fois la
taille du plus grand ´el´ement de A. Cette borne est rarement atteinte.
– Il faut utiliser des arithm´etiques en pr´ecision arbitraire, telle la librairie
GMP.
Algorithme primal
– On prend le probl`eme sous la forme ´equivalente suivante :
min f(x) = c.x
Ax = b
x 0
– On peut supposer que les lignes de la matrice des contraintes A sont li-
n´eairement ind´ependantes : on peut ´eliminer les lignes redondantes.
– A est de dimension mn avec n´ecessairement m < n.
Dans le cas contraire, le syst`eme Ax = b aurait au plus une
solution et le probl`eme serait trivial.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
1.3 Programmation lin´eaire 25
Base
– Une «base» est une matrice carr´ee n n extraite de A inversible. On
partitionne A en deux blocs B, la base, et N le reste de la matrice. On
partitionne de mˆeme x en x
B
, x
N
et c en c
B
, c
N
.
– La solution associ´ee `a une base B est le vecteur (B
−1
b, 0)
T
. Il satisfait
´evidemment `a la contrainte Ax = b.
– La base B est r´ealisable si et seulement si la solution correspondante sa-
tisfait ´egalement `a la contrainte x 0, c’est-`a-dire si x = B
−1
b 0.
– A une base r´ealisable correspond une valeur de l’objectif, c
B
.B
−1
b.
– Est-il possible d’am´eliorer cet objectif en faisant varier x
N
?
Recherche de l’optimum
– Si x
N
n’est plus nul, on a :
x
B
= B
−1
(b −Nx
n
)
f(x) = c
B
.B
−1
b + (c
N
−c
B
.B
−1
N)x
n
Le vecteur c = c
N
−c
B
.B
−1
N est le vecteur des coˆ uts r´eduits.
– Si x
i
fait partie de x
n
, comme il est nul on ne peut que l’augmenter pour
que la solution reste faisable. Ceci fait d´ecroˆıtre f(x) `a condition que
c
i
< 0.
– Si tous les coˆ uts r´eduits sont positifs, on a trouv´e l’optimum.
– Sinon, on choisit un x
i
dont le coˆ ut r´eduit est n´egatif (par exemple celui
dont le coˆ ut r´eduit est minimum).
– Puisque on fait croˆıtre x
i
et que les autres composantes de x
N
restent
nulles, la seule contrainte sur la valeur de x
i
est B
−1
(b − Nx
n
) 0. Il y
a deux cas possibles :
– Toutes les composantes de la colonne i de B = B
−1
N sont n´egatives. Alors
x
i
n’est pas born´e, et le minimum est −∞.
– Sinon, `a chaque composante B
ik
> 0 correspond la borne x
i
x
k
/B
ik
.
Soit j l’indice de la plus petite de ces bornes.
– Le point correspondant `a x
k
= 0 sauf pour k = j : x
j
= x
j
/B
ij
est faisable
et la valeur de f(x) est inf´erieure `a celle du point de d´epart.
– La base qui correspond au nouveau point courant s’obtient en rempla¸cant
dans b le colonne i par la colonne j.
– On poursuit l’algorithme en inversant la nouvelle base et en calculant la
nouvelle solution et les nouveaux coˆ uts r´eduits.
– L’algorithme se termine si `a chaque pas la valeur de l’objectif d´ecroˆıt
strictement.
En effet il n’y a que C
m
n
bases possibles et la condition de d´e-
croissance stricte empˆeche tout bouclage.
– Cependant l’algorithme peut boucler en cas de d´eg´en´erescence (il semble
que ce soit tr`es rare).
– Comme pour l’algorithme dual, on peut mener les calculs de fa¸con incr´e-
mentale (il suffit d’un seul pivot de Gauss pour inverser la nouvelle base).
Recherche du point faisable initial
– Il s’agit de trouver un point dans le poly`edre P = ¦x [ x 0, Ax b¦.
Soit 1 le vecteur dont tous les ´el´ements sont ´egaux `a 1, et soit y un nouveau
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
26 Optimisation sans contraintes
vecteur de mˆeme taille que x. On consid`ere le probl`eme :
min 1.y
x 0
y 0
Ax +y b
– Il est facile de voir que le point x = 0, y = max(b, 0) est faisable. On peut
donc appliquer l’algorithme pr´ec´edent.
– Si y

= 0, il est facile de voir que le point x

∈ P.
– R´eciproquement, si x

∈ P, alors (0, x

) est faisable pour le probl`eme
augment´e, donc le minimum est nul. Si inversement le minimum n’est pas
nul, P est vide.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
Chapitre 2
Optimisation sous
contraintes
Optimisation sous contraintes
courbes de niveau de
la fonction objectif
optimum
contraintes
– R´esoudre :
min f(x),
g
i
(x) 0, i = 1, . . . , n
x ∈ R
n
– L’ensemble des points faisables est
¦x ∈ R
n
[ g
i
(x) 0, i = 1, . . . n¦. Les fonctions g
sont les contraintes.
– La programmation lin´eaire est le cas particulier
o` u f et les g
i
sont lin´eaires. On obtient des pro-
bl`emes plus ou moins difficiles suivant que l’un
ou l’autre ou les deux de ces ´el´ements sont non
lin´eaires (resp. non convexes).
G´en´eralisation
– Certaines contraintes peuvent ˆetre difficiles `a mettre sous la forme
g
i
(x) 0.
– Exemple : on veut que x soit entier (i.e. `a coordonn´ees enti`eres).
– On remplace la derni`ere contrainte par :
x ∈ S ⊆ R
n
.
2.1 Conditions de Kuhn et Tucker
Caract´erisation de l’optimum
– On suppose les fonctions f et g
i
continues et `a d´eriv´ees continues.
– L’optimum x

peut ˆetre `a l’int´erieur de F. Dans ce cas ∇f(x

) = 0 .
– L’optimum peut ˆetre sur les fronti`eres de F. Dans ce cas g
i
(x

) = 0 pour un
certain nombres de contraintes (les contraintes satur´ees) et ∇f(x

) n’est
pas n´ecessairement nul. On note I ⊆ ¦1, . . . , n¦ l’ensemble des indices des
contraintes satur´ees.
28 Optimisation sous contraintes
– En particulier, si les contraintes sont toutes des contraintes d’´egalit´e, l’in-
t´erieur de F est vide et l’on est toujours dans le dernier cas (dit de La-
grange).
– En programmation lin´eaire, f(x) = c.x, ∇f = c n’est jamais nul (ou bien
le probl`eme est trivial), donc l’optimum est sur la fronti`ere de F.
– Une direction d est admissible en un point x

∈ F si il existe η > 0 tel que
λ < η ⇒ x

+λd ∈ F.
– x

est un minimum si, pour toute direction admissible d,
λ < η ⇒ f(x

+λd) f(x

).
– La condition d’admissibilit´e peut s’´ecrire :
g
i
(x

+λd) = g
i
(x

) +λd.∇g
i
(x

) 0, i ∈ I,
soit encore d.∇g
i
(x

) 0, i ∈ I.
– Les directions admissibles en x

appartiennent au cˆone
C = ¦d [ d.∇g
i
(x

) 0, i ∈ I ¦ ,
avec I = ¦i [ g
i
(x

) = 0¦.
– La r´eciproque est fausse, sauf dans quelques cas particuliers :
– Les fonctions g
i
sont lin´eaires ou convexes ;
– Les gradients sont lin´eairement ind´ependants.
– Si C est l’ensemble des directions admissibles, alors une condition n´eces-
saire d’optimalit´e est :
d ∈ C ⇒ f(x

+λd) −f(x

) 0,
d ∈ C ⇒ d.∇f(x

) 0.
Conditions de Kuhn et Tucker
– D’apr`es le lemme de Farkas, il existe des λ
i
0, i ∈ I tels que :
∀d : −d.
¸
i∈I
λ
i
.∇g
i
(x) = d.∇f(x

),
∇f(x

) −
¸
i∈I
λ
i
∇g
i
(x) = 0.
– Si on pose λ
i
= 0 pour les contraintes non satur´ees, on peut ´etendre la
sommation `a toutes les valeurs de i. Une condition n´ecessaire pour que x

soit un minimum est donc :
∃λ
i
0 , i = 1, . . . , n
∇f(x

) −
n
¸
i=1
∇g
i
(x

) = 0,
λ
i
.g
i
(x

) = 0.
– Les λ
i
sont les multiplicateurs de Kuhn-Tucker.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
2.2 Une m´ethode directe 29
Conditions de Lagrange
– Un contrainte d’´egalit´e g
i
= 0 peut se repr´esenter par deux contraintes
d’in´egalit´e g
i
0 et g
i
0.
– Il lui correspond deux multiplicateurs de Kuhn-Tucker, λ
+
i
et λ

i
positifs.
– On peut les regrouper en un seul dont le signe est quelconque.
`
A une
contrainte d’´egalit´e correspond un multiplicateur non contraint en signe.
– Si toutes les contraintes sont des ´egalit´es, les multiplicateurs peuvent ˆetre
de signe arbitraire. Ils prennent le nom de multiplicateurs de Lagrange.
– Dans ce cas particulier, toutes les contraintes doivent ˆetre satur´ees.
2.2 Une m´ethode directe
M´ethode des plans s´ecants
– Soit `a calculer :
min f(x),
g
i
(x) 0, i = 1, . . . , n
x ∈ R
n
o` u on suppose que les fonctions f et g
i
sont convexes.
– On remarque que l’on peut supposer f lin´eaire. Sinon, on peut remplacer
le probl`eme ci-dessus par le probl`eme ´equivalent :
min z,
z −f(x) 0,
g
i
(x) 0, i = 1, . . . , n
x ∈ R
n
– On proc`ede de fa¸con it´erative. A l’´etape k, on suppose que l’on connaˆıt
un poly`edre convexe Q
(k)
tel que :
Q
(k)
⊆ F = ¦x [ g(x) 0¦ .
– On r´esout le programme lin´eaire :
min f(x),
x ∈ Q
(k)
.
Soit x
(k)
le point obtenu.
– Si x
(k)
∈ F, c’est le minimum cherch´e. Sinon, il existe i tel que g
i
(x
(k)
) < 0.
On forme :
Q
(k+1)
= Q
(k)
¸

x

g
i
(x
(k)
) +∇g
i
(x
(k)
)
T
.(x −x
(k)
) 0
¸
,
et on recommence.
Lemme 2.1. Si f est convexe, alors f(x) f(a) +∇f(a)
T
.(x −a).
D´emonstration. Pour simplifier on va supposer que x est un scalaire. Soit par
exemple b > a. Par d´efinition, f(x)−f(a) (x−a)
f(b)−f(a)
b−a
. En faisant tendre x
vers a on en d´eduit f

(a)
f(b)−f(a)
b−a
, ce qui n’est autre que le r´esultat cherch´e.
La d´emonstration est analogue pour b < a.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
30 Optimisation sous contraintes
Lemme 2.2. Q
(k+1)
⊆ F.
D´emonstration. Soit en effet x un point de F. Puisque g
i
est convexe, on a
g
i
(x) g
i
(x
(k)
) +∇g
i
(x
(k)
)
T
.(x −x
(k)
). Or g
i
(x) 0, donc x ∈ Q
(k+1)
.
Lemme 2.3. x
(k)
∈ Q
(k

)
, k

> k
D´emonstration. Il suffit d’observer que x
(k)
ne satisfait pas la contrainte g
i
(x
(k)
)+
∇g
i
(x
(k)
)
T
.(x −x
(k)
) 0.
Lemme 2.4. Si x
(k)
∈ F, c’est le minimum cherch´e.
D´emonstration. En effet, d’une part x
(k)
∈ F, et d’autre part,
x ∈ F ⇒ x ∈ Q
(k)
⇒ f(x) f(x
(k)
).

Th´eor`eme 2.5. Si F est born´e, tout point d’accumulation de la suite x
(k)
est
un optimum.
D´emonstration. Soit y

un point d’accumulation, et soit y
(k)
une suite extraite
de x

et convergeant vers y

. Montrons d’abord que y

∈ F. On supposera pour
fixer les id´ees que `a chaque pas, la contrainte utilis´ee pour construire une coupe
est celle qui est la moins satisfaite, c’est `a dire celle pour laquelle g
i
(x
(
k)) > 0
est maximum. Supposons que y

ne soit pas dans F, et soit g
i
la contrainte
la moins satisfaite. Puisque y
(k)
converge vers y il existe un k

suffisamment
grand pour que g
i
soit la contrainte la moins satisfaite en y
(k)
. On ajoute la
contrainte :
g
i
(y
(k)
) +∇g
i
(y
(k)
)
T
.(x −y
(k)
) 0.

D´emonstration. Il est facile de voir que la distance [[y
[k

)
−y
(k)
[[, k

> k ne peut
ˆetre inf´erieure `a
|g
i
(y
[k)
|
|∇g
i
(y
[k)
|
, ce qui contredit le fait que y

est limite des y
(k)
.
Supposons maintenant qu’il existe dans F un autre point y

tel que f(y

) <
f(y

). Comme y

∈ Q
(k)
∀k, il s’en suit que l’algorithme de programmation
lin´eaire devrait toujours construire un point x
(k)
tel que f(x
(k)
) f(y

). Par
suite de la continuit´e de f, toute limite x

de la suite x
(k)
doit ˆetre telle que
f(x

) f(y

) ce qui est contradictoire.
2.3 M´ethodes duales
M´ethodes de p´enalit´es
– Principe : au lieu d’exclure les points qui violent les contraintes, ajouter `a
la fonction ´economique une p´enalit´e d’autant plus ´elev´ee que la contrainte
est moins respect´ee. Si la fonction de p´enalit´e est r´eguli`ere, on peut utiliser
les m´ethodes d’optimisation sans contrainte.
– En g´en´eral, la p´enalit´e d´epend d’un param`etre qui permet de r´egler son
importance. Quand la p´enalit´e devient tr`es grande devant la fonction ob-
jectif, on tend vers l’optimum sous contrainte. Mais la fonction `a optimiser
devient de plus en plus mal conditionn´ee.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
2.3 M´ethodes duales 31
– Deux vari´et´es :
– La fonction de p´enalit´e est nulle dans le domaine faisable. L’optimum
p´enalis´e n’est pas faisable. C’est une m´ethode ext´erieure.
– La fonction de p´enalit´e devient infinie quand on sort du domaine fai-
sable. L’optimum est faisable, mais la m´ethode a besoin d’un point
faisable initial.
M´ethodes ext´erieures
– On consid`ere la fonction h(x) ´egale `a 0 si x 0 et `a x
2
sinon. Il est facile
de voir qu’elle est continue et `a d´eriv´e continue.
– On remplace le probl`eme :
P : min f(x),
g
i
(x) 0, i = 1, . . . , n
x ∈ R
n
par la suite de probl`emes :
P
k
: min f(x) +S
k
n
¸
i=1
h(g
i
(x)).
o` u les S
k
forment une suite croissante tendant vers l’infini.
– On note H(x) =
¸
n
i=1
h(g
i
(x)) et x
k
la solution de P
k
.
Convergence
Th´eor`eme 2.6. Si f est continue, si l’ensemble des points faisables est ferm´e
et si soit f(x) soit H(x) tend vers l’infini quand x tend vers l’infini, alors tout
point d’accumulation de la suite x
k
est une solution de P.
On note ϕ
k
= f(x
k
) +S
k
H(x
k
), et x

une solution de P.
Lemme 2.7. Les ϕ
k
forment une suite d´ecroissante.
D´emonstration. On a f(x
k+1
) + S
k+1
H(x
k+1
) > f(x
k+1
) + S
k
H(x
k+1
) parce
que S
k+1
> S
k
et f(x
k+1
) + S
k
H(x
k+1
) f(x
k
) + S
k
H(x
k
) puisque x
k
est la
solution de P
k
.
De plus, ϕ
k
f(x

) +S
k
H(x

). Mais comme x

est faisable, la p´enalit´e est
nulle. On a donc l’encadrement
f(x
k
) ϕ
k
f(x

).

Lemme 2.8. Les H(x
k
) forment une suite d´ecroissante.
D´emonstration. Comme chaque x
k
est la solution d’un probl`eme de minimum,
on a :
f(x
k
) +S
k
H(x
k
) f(x
k+1
) +S
k
H(x
k+1
),
f(x
k+1
) +S
k+1
f(x
k
) +S
k+1
H(x
k
).
En additionnant et simplifiant :
(S
k
−S
k+1
)(H(x
k+1
) −H(x
k
)) 0.
Comme le premier terme est n´egatif, l’autre l’est aussi.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
32 Optimisation sous contraintes
– Les x
k
appartiennent `a un ensemble born´e, soit parce que f(x
k
) f(x

)
et que f tend vers l’infini `a l’infini, soit parce que H(x
k
) H(1) et que
H tend vers l’infini `a l’infini. On peut donc extraire de x
k
une sous-suite
x

, ∈ L qui converge vers ˆ x.
– Par continuit´e, f(x

) tend vers f(ˆ x), et comme f(x
k
) f(x

), f(ˆ x)
f(x).
– Comme ϕ
k
f(x

), ϕ
k
a une limite phi

f(x

).
– limS

H(x

) = ϕ

−f(ˆ x). Donc H(x

) tend vers 0, et par continuit´e H(ˆ x) =
0.
– Donc ˆ x est un point faisable, donc f(ˆ x) f(x

), donc f(ˆ x) = f(x

) et ˆ x
est un optimum.
M´ethodes int´erieures
– On prend comme fonction de p´enalit´e une fonction qui tend vers l’infini
au voisinage de 0, par exemple h(x) = −1/x.
– On minimise f(x) +R
¸
n
i=1
h(g
i
(x)).
– Dans les mˆemes conditions que ci-dessus, on montre que l’optimum du
probl`eme P
R
tend vers l’optimum de P quand R tend vers 0.
– Toutes les solutions interm´ediaires sont faisables, mais il faut disposer d’un
point faisable pour commencer les calculs.
Exemple
– Le probl`eme du cas le pire de Fourier-Motzkin :
max xy +z,
x +y +z = n
– On ´elimine z `a l’aide de la derni`ere contrainte et on applique la m´ethode
des p´enalit´es :
max xy +n −x −y +S(n −x −y)
2
.
– On utilise un syst`eme de calcul alg´ebrique pour achever les calculs.
2.4 Fonction de Lagrange, point-col
Fonction de Lagrange, point-col
– Soit `a r´esoudre :
min f(x),
g
i
(x) 0, i = 1, . . . , n
x ∈ S ⊆ R
n
– La fonction de Lagrange associ´ee est :
L(x, λ) = f(x) +λ.g(x), λ 0.
– g est le vecteur dont les composantes sont les g
i
.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
2.4 Fonction de Lagrange, point-col 33
Point-col
– (x

, λ

) est un point-col si et seulement si :
x

∈ S, λ

0.
∀x ∈ S : L(x

, λ

) L(x, λ

),
∀λ 0 : L(x

, λ

) L(x

, λ).
– Caract´erisation d’un point-col :
L(x

, λ

) = min
x∈S
L(x, λ

),
g(x

) 0,
λ

.g(x) = 0.
Preuve
Soit (x

, λ

) un point-col. La premi`ere propri´et´e est une cons´equence directe
de la d´efinition.
La deuxi`eme propri´et´e entraˆıne :
f(x

) +λ

.g(x

) f(x

) +λ.g(x

),
(λ −λ

).g(x

) 0.
S’il existait un g
i
(x

) positif, il suffirait de prendre le λ
i
correspondant suffisam-
ment grand pour violer cette in´egalit´e. Donc ∀i : g
i
(x

) 0.
Pour λ = 0 on trouve :
−λ

.g(x

) 0.
Mais les deux termes du produit sont non n´egatifs, donc le produit est nul.
Preuve, r´eciproque
La premi`ere caract´eristique entraˆıne directement la premi`ere propri´et´e du
point-col.
On d´eduit de la troisi`eme caract´eristique que L(x

, λ

) = f(x

).
Enfin :
L(x

, λ) = f(x

) +λ.g(x

) f(x

) = L(x

, λ

),
puisque g(x

) 0.
Int´erˆet
Th´eor`eme 2.9. Si (x

, λ

) est un point-col, alors x

est un minimum global.
D´emonstration. D’apr`es la d´efinition, x

∈ S et g(x

) 0, donc x

est faisable.
D’autre part :
∀x ∈ S, g(x) 0 : f(x

) = L(x

, λ

) L(x, λ

) = f(x) +λ

g(x) f(x).
puisque λ

0 et g(x) 0.
x

est donc bien minimum global.
Mais il existe des probl`emes qui n’ont pas de point-col.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
34 Optimisation sous contraintes
Fonction de Lagrange et p´enalit´es
– La fonction de Lagrange est une fonction de p´enalit´e.
L(x, λ) = f(x) +λ.g(x), λ 0.
– En effet, dans la r´egion infaisable, g(x) > 0, donc le second terme augmente
la valeur de L, alors qu’on recherche un minimum.
– Toutefois, ce terme est n´egatif dans la r´egion faisable, ce qui diminuerai
artificiellement la valeur du minimum, si l’on n’avait pas la contrainte
∀i : λ
i
.g
i
(x

) = 0.
– Comme les m´ethodes de p´enalit´e, l’emploi de la fonction de Lagrange
permet de remplacer un probl`eme avec contraintes par un probl`eme sans
contrainte.
Une mauvaise id´ee
– Maximiser L(x, λ) par rapport `a λ 0 pour x fix´e. Soit g(x) le r´esultat.
Minimiser ensuite g(x) sans contraintes.
– Il est facile de trouver le maximum.
– Si g
i
(x) > 0, il suffit de faire tendre λ
i
→ ∞ pour obtenir un maximum
infini.
– Sinon, le maximum est ´egal `a f(x).
– Ceci revient donc `a ´etendre f en une fonction discontinue non d´erivable,
ce qui ne se prˆete pas `a l’optimisation.
Une bonne id´ee
– Minimiser w(λ) = min L(x, λ) sans contrainte. Maximiser w(λ) sous la
contrainte λ 0.
Lemme 2.10. w(λ) est une fonction concave.
D´emonstration. Soit λ
1
, λ
2
deux valeurs de λ, α et β deux nombres positifs tels
que α +β = 1, et x un point arbitraire. Par d´efinition des minima :
f(x) +λ
1
g(x) w(λ
1
),
f(x) +λ
2
g(x) w(λ
2
),
f(x) + (αλ
1
+βλ
2
)g(x) αw(λ
1
) +βw(λ
2
).
et cette propri´et´e vraie partout s’´etend au minimum w(αλ
1
+βλ
2
).
Application `a la programmation lin´eaire
– Il ne faut cependant pas croire que l’optimisation de w est toujours sans
contrainte. Soit par exemple le programme lin´eaire :
min c.x,
Ax −b 0,
x 0.
– La fonction de Lagrange associ´ee est :
L(x, λ) = c.x −λ(Ax −b) −µx = (c −λA−µ).x +λb.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
2.4 Fonction de Lagrange, point-col 35
– Il est facile de voir que si c−λA−µ n’est pas nul, la valeur du minimum est
−∞. Sinon, c’est λb. Comme c −λA−µ = 0 est ´equivalent `a c −λA 0,
on voit que l’on est amen´e `a r´esoudre :
max λ.b,
c −λA 0,
λ 0.
C’est le dual du probl`eme original!
Et s’il n’y a pas de point col ?
Th´eor`eme 2.11. Soit x

la solution du probl`eme avec contraintes. On a :
max
λ0
w(λ) f(x

).
D´emonstration. Comme x

est faisable, g(x

) 0. Donc
L(x

, λ) = f(x

) +λg(x

) f(x

),
w(λ) = min
x
L(x, λ) L(x

, λ) f(x

).
Cette propri´et´e vraie pour tout λ s’´etend au maximum.
– La solution du probl`eme dual fournit une borne inf´erieure de la solution
du primal.
– Il y a «saut de dualit´e» quand les deux solutions ne sont pas ´egales.
– w est d´erivable `a l’optimum, si et seulement si le saut de dualit´e est nul.
G´en´eration de colonnes
– Si l’ensemble S = ¦x
1
, . . . , x
n
¦ est fini, le probl`eme s’´ecrit :
max
λ0
n
min
i=1
f(x
i
) +λg(x
i
)
se ram`ene `a un probl`eme de programmation lin´eaire :
P(n) : max z
z f(x
i
) +λg(x
i
), i = 1, . . . , n
λ 0.
– Soit x
n
, λ
n
la solution de P(n).
– Si S est infini, on suppose que l’on a d´ej`a construit les points ¦x
1
, . . . , x
n
¦.
– On r´esout le probl`eme lin´eaire ci-dessus.
– On d´etermine le point x
n+1
comme solution de :
min
x∈S
L(x, λ
n
) = f(x) +λ
n
g(x)
par une m´ethode d’optimisation sans contraintes.
– Soit w(λ
n
) le minimum obtenu.
– On recommence avec n + 1 points, jusqu’`a convergence.
Lemme 2.12. Soit x

la solution du probl`eme avec contrainte : w(λ
n
) f(x

).
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
36 Optimisation sous contraintes
D´emonstration. Puisque x

∈ S, w(λ
n
) f(x

) + λg(x

) f(x

) puisque que
x

est faisable.
Lemme 2.13. f(x

) z
n
.
D´emonstration. Il est ´evident que 'f(x

), λ
n
` est un point faisable pour P(n).

Lemme 2.14. z
n+1
z
n
.
D´emonstration. Tout point faisable pour P(n + 1) est faisable pour P(n).
Convergence
– On a l’encadrement w(λ
n
) f(x

) z
n
.
– Comme la suite z
n
est d´ecroissante, elle converge.
– Mais la convergence de w(λ
n
) vers f(x

) impliquerait que le saut de dualit´e
est nul, ce qui n’est pas toujours le cas.
2.5 Optimisation combinatoire
Optimisation combinatoire
– Probl`eme d’optimisation sous contraintes o` u l’ensemble des points fai-
sables est non pas continu mais discret.
– Forme du probl`eme :
min f(x)
x ∈ S
– Les inconnues sont les n composantes du vecteur x. S est l’ensemble discret
des points faisables.
– En g´en´eral, S est produit cart´esien d’ensembles plus petits, et sa taille est
le produit des tailles de ces petits ensembles (d’o` u le nom : optimisation
combinatoire).
– Chaque composant de S correspond `a un choix ; il faut trouver la bonne
suite de choix, sachant que ceux-ci ne sont pas ind´ependants en g´en´eral.
Exemple
– On consid`ere un ordinateur sur lequel on doit ex´ecuter t algorithmes en-
chaˆın´es A
i
, i = 1, . . . , t. Chaque algorithme a pour donn´ees les r´esultats
de l’algorithme pr´ec´edent.
– Pour impl´ementer chaque algorithme, on doit choisir une structure pour
ses donn´ees. On suppose qu’il y a s structures possibles, S
k
, k = 1, . . . , s
et que le temps d’ex´ecution de l’algorithme d´epend de la structure choisie.
Par exemple, une matrice peut ˆetre rang´ee par ligne ou par colonne, et, par
suite des effets de cache, le temps d’ex´ecution du produit matriciel varie
suivant la structure choisie. On supposera qu’un algorithme ne modifie
pas la structure des ses donn´ees. On note T
ik
le temps d’ex´ecution de
l’algorithme i quand les donn´ees on la structure S
k
.
– On suppose qu’il est possible de modifier les structure de donn´ees (par
exemple, de transposer une matrice). On note θ
k
le temps n´ecessaire pour
passer de la structure S
k
`a la structure S

. Remarquer que θ
kk
= 0.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
2.5 Optimisation combinatoire 37
– La structure du programme est alors :
S
k
0
R
0
S
k
1
A
1
S
k
1
. . . A
t
S
k
t
R
t
S
k
t+1
– On suppose que k
0
et k
t+1
sont fix´es par le cahier des charges.
– Trouver la s´equence de restructurations donnant le temps total minimum.
Quelques m´ethodes de solution
– Une heuristique gloutonne.
– On remarque que souvent θ
kl
< T
ik
. Pour l’exemple matriciel, le temps
de transposition est O(n
2
) alors que le temps du produit est O(n
3
).
– On choisit donc S
k
j
de fa¸con que T
ik
j
soit minimum, et on rajoute des
redistributions si n´ecessaire.
– Programmation dynamique. On remarque que le probl`eme a une structure
analogue `a celle d’un probl`eme de plus court chemin.
– On note P
n
(k) le probl`eme d’optimiser le programme analogue au pro-
gramme initial, mais ou on s’arrˆete juste apr`es la redistribution R
n
avec
une structure de donn´ees S
k
. Le probl`eme initial est P
t
(k
t+1
). Soit Ω
n
(k)
le meilleur temps d’ex´ecution de P
n
(k). On a la relation de r´ecurrence :

n
(k) = min


n−1
() +T
n

k
,

0
(k) = θ
k
0
k
.
– On peut calculer toutes les valeurs de Ω
nk
`a l’aide de cette r´ecurrence, lire
la valeur de Ω
t
(k
t+1
) et reconstituer le chemin `a suivre par retour arri`ere.
– Codage en variables 0-1. On pose X
ik
= 1 si la distribution des donn´ees `a
l’´etape i est la distribution S
k
, et 0 sinon.
– A chaque ´etape, il y a une et une seule distribution :
s
¸
k=1
X
ik
= 1. (2.1)
– Le temps de calcul total est : T
c
=
¸
t
i=1
¸
s
k=1
T
ik
X
ik
.
– Le temps de redistribution de l’´etape i `a i + 1 est donn´e par θ
k
tel que
X
ik
= 1 et X
(i+1)
= 1, ce qui peut s’´ecrire :
T
r
=
t
¸
i=0
s
¸
k=1
s
¸
=1
X
ik
X
(i+1)
θ
k
.
– Il s’agit de minimiser la somme T
c
+T
r
sous les contraintes (2.1) et X
ik

¦0, 1¦. C’est un probl`eme de programmation quadratique en nombres en-
tiers.
Programmation lin´eaire en entiers
– D´efinition.
min

x,
Ax +b 0,
x ∈ N.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
38 Optimisation sous contraintes
– Noter que x ∈ N implique x 0. Il s’agit donc de l’analogue exact du
probl`eme r´esolu par l’algorithme dual, `a ceci pr`es qu’il y a une contrainte
d’int´egrit´e en plus.
– On suppose en g´en´eral que A et b ont des coefficients entiers.
2.5.1 coque enti`ere
Coque enti`ere
– Soit S un ensemble de R
n
. La coque enti`ere de S, not´ee
ˆ
S est la coque
convexe de l’ensemble des points entiers de S.
x ∈ Z
n
∩ S ⇒ x ∈
ˆ
S,
x, y ∈
ˆ
S, λ, µ 0, λ +µ = 1 ⇒ λx +µy ∈
ˆ
S.
Propri´et´es de la coque enti`ere
Lemme 2.15. Si A est convexe,
ˆ
A ⊆ A.
Lemme 2.16. A ⊆ B ⇒
ˆ
A ⊆
ˆ
B.
Lemme 2.17. Si Z
n
∩ P ⊆ S convexe, alors
ˆ
P ⊆ S.
D´emonstration. Un point de
ˆ
P est combinaison convexe d’un certains nombres
de points de Z
n
∩P, qui appartiennent par hypoth`ese `a S. Or S contient toutes
les combinaisons convexes de ses points.
Caract´erisation de la solution enti`ere
Th´eor`eme 2.18. La coque enti`ere d’un poly`edre d´efini par Ax +b 0, avec A
enti`ere, est un poly`edre.
D´emonstration. Soit P = Q+C un poly`edre, o` u Q est born´e et C un cˆone. On
peut supposer que les vecteurs g´en´erateurs v
i
de C sont entiers, et il est facile
de voir que
ˆ
C = C.
Soit B = ¦
¸
i
µ
i
v
i
[ 0 µ
i
1¦. Il est clair que B est un poly`edre born´e
inclus dans C. Admettons que
ˆ
P =

Q+B + C (ce sera montr´e par les deux
lemmes suivants). Or Q + B est born´e, et pour un poly`edre born´e le th´eor`eme
est ´evident, puisque la conque enti`ere est enveloppe convexe de ses points entiers
qui sont en nombre finis.
Lemme 2.19.
ˆ
P ⊆

Q+B +C.
D´emonstration. D’apr`es un lemme ci-dessus, il suffit de consid´erer un point x
entier de P. On peut l’´ecrire x = q+c, q ∈ Q, c ∈ C. Il en r´esulte c =
¸
i
µ
i
v
i
. On
pose c

=
¸
i
µ
i
| v
i
et b = c −c

. Il est clair que b ∈ B, donc que q +b ∈ Q+B,
que c

∈ C est entier, et que q+b = x−c

est entier, donc que q+b ∈

Q+B.
Lemme 2.20.

Q+B +C ⊆
ˆ
P.
D´emonstration. Puisque Q+B ⊆ P,

Q+B +C ⊆
ˆ
P +C =
ˆ
P +
ˆ
C =

P +C =
ˆ
P.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
2.5 Optimisation combinatoire 39
Minimum entier
Lemme 2.21. Le minimum entier d’un poly`edre est le minimum rationnel de
sa coque enti`ere.
D´emonstration. Le minimum entier x

appartient `a la coque enti`ere. Supposons
qu’il existe dans la coque enti`ere un point x

< x

. Ce point est n´ecessairement
`a coordonn´ees non enti`eres (puisque la coque enti`ere est contenue dans le po-
ly`edre). x

est donc combinaison convexe de points entiers qui lui sont tous
sup´erieurs dans l’ordre lexicographique, ce qui est impossible.
– Le probl`eme sera r´esolu si on sait construire la coque enti`ere.
– Mais la complexit´e de la coque enti`ere peut ˆetre ´enorme (Chvatal).
– Heureusement, on peut se contenter de construire quelques coupes (et non
toute la coque) : des contraintes affines qui excluent une partie de P mais
aucun point de
ˆ
P.
2.5.2 Algorithme de Gomory
Coupe de Gomory
– Construction d’une coupe : soit
a/D.x +b/D 0
une des contraintes du probl`eme. D est le d´enominateur commun des co-
efficients de x et du terme constant.
– Par construction de l’algorithme dual, la valeur de cette contrainte est
l’une des variables d’´ecart du probl`eme initial, qui doit ˆetre enti`ere. Comme
les x sont entiers :
ax +b mod D = 0,
(a mod D)x ≡ (−b mod D)(modD),
(a mod D)x = (−b mod D) +kD,
– k est n´ecessairement positif, d’o` u :
(a mod D)x −(−b mod D) 0.
Algorithme de Gomory
– On a mis le probl`eme sous la forme :
min

x
y = Sz +t 0
z 0
o` u la matrice S et le vecteur t sont entiers, ainsi que les variables y et z. z
est un extrait de y, et les n premi`eres composantes de y sont les variables
originales.
– On proc`ede comme dans l’algorithme du Simplexe jusqu’`a obtenir t 0.
Si l’algorithme ´echoue, il n’y a pas de solution enti`ere.
– Si les composantes 1 `a n de t sont enti`eres, c’est la solution.
– Sinon, on choisit le premier t
i
non entier, on construit une coupe comme
ci-dessus `a l’aide de la contrainte S
i
z +t
i
0, et on l’ajoute au tableau.
– Le nouveau tableau n’est pas faisable : le terme constant de la coupe est
n´egatif. On reprend l’algorithme jusqu’`a terminaison.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
40 Optimisation sous contraintes
Preuve
Th´eor`eme 2.22. Si l’algorithme se termine, ou bien on a trouv´e la solution
enti`ere, ou bien le probl`eme n’a pas de solution.
D´emonstration. Soit P
n
le poly`edre obtenu apr`es la n
e
coupe. Par construction,
tous les points entiers de P = P
0
sont dans P
n
. Si donc P
n
est vide, P ne
contient aucun point entier. Sinon, soit x

le minimum lexicographique de P
n
,
et supposons qu’il est entier. Si P contenait un point entier plus petit, il serait
dans P
n
ce qui serait une contradiction.
Lemme 2.23. On peut toujours supposer qu’il existe une solution.
D´emonstration. On consid`ere le probl`eme ´etendu
min

u, x
u +Ax +b 0,
u 0,
x 0
Il est clair que ce probl`eme a toujours une solution : il suffit de prendre x nul et
u tr`es grand. Si le probl`eme initial a un minimum x

, alors 0, x

est le minimum
du probl`eme ´etendu. Inversement, si le probl`eme initial n’a pas de solution, alors
u ne peut ˆetre nul dans la solution du probl`eme ´etendu. Les deux probl`emes sont
donc ´equivalents.
Lemme 2.24. Les minima successifs x
n
forment une suite croissante dans
l’ordre lexicographique.
D´emonstration.
´
Evident, puisque P
n+1
⊆ P
n
.
– A une certaine ´etape de l’algorithme, soit
¸
j
s
j
D
x
j
+
t
D
0 la ligne qui
va fournir la coupe.
– A l’´etape qui suit, l’algorithme du Simplexe ex´ecute un pivot. Soit x
j
la
variable ´elimin´ee.
– Soit :
¸
j
s

j
D
x
j
+
t

D
0 la ligne apr`es l’ex´ecution du pivot.
Lemme 2.25. Il existe un nombre entier Q tel que
t
D
< Q
t

D
.
D´emonstration. La coupe est :
¸
j
s
j
mod D
D
x
j

−t mod D
D
0
Les formules de changement de base donnent :
t

D
=
t
D
+
s
j
D
−t mod D
D
D
s
j
mod D

t
D
+
−t mod D
D
.
Soit q le quotient entier par d´efaut de t par D : t = qD +t mod D.
t

D
q +
t mod D + (−t mod D)
D
.
Le deuxi`eme terme est ´egal `a 1, il suffit donc de prendre Q = q + 1. D’autre
part t/D = (q + 1) −(D −t mod D)/D < q + 1. L’in´egalit´e est stricte puisque
t n’est pas entier.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
2.5 Optimisation combinatoire 41
– A un instant donn´e du d´eroulement de l’algorithme, on dit qu’une ligne est
active si lors d’une op´eration ult´erieure, la valeur de son second membre
changera.
Lemme 2.26. La premi`ere ligne ne peut ˆetre active qu’un nombre fini de fois.
D´emonstration. Soit τ
1
= t
1
|. On a l’encadrement τ
1
−1 < t
1
τ
1
. Consid´erons
l’´evolution de τ
1
apr`es une coupe.
Si la source de la coupe est la ligne 1, apr`es le changement de base qui suit,
τ
1
augmente au moins d’une unit´e. Si la source est une autre ligne, c’est que
t
1
est entier. Une autre ligne est source de la coupe, et si la premi`ere ligne est
active, c’est que S
1j
est non nul. La valeur de t
1
augmente. Qu’elle prenne une
valeur enti`ere ou fractionnaire, la valeur de τ
1
augmente au moins d’une unit´e.
Or t
1
donc τ
1
sont born´es par la solution optimale x

1
.
Th´eor`eme 2.27. L’algorithme des coupes de Gomory converge.
D´emonstration. Nous avons vu que la premi`ere ligne ne peut ˆetre active qu’un
nombre fini de fois. Apr`es la derni`ere modification, tout se passe comme si le
probl`eme `a r´esoudre avait une contrainte et une inconnue de moins (m´ethode
de d´eflation). On peut donc prouver que la deuxi`eme ligne n’est active qu’un
nombre fini de fois. De proche en proche, on voit que l’algorithme se termine.
Complexit´e
– Comme il faut pouvoir distinguer entre nombres entiers et nombres frac-
tionnaires, les calculs doivent ˆetre men´es en arithm´etique exacte.
– Les nombres `a manipuler sont des d´eterminants de sous-matrices nn de
la matrice des contraintes. Leur taille (nombre de bits) est donc born´ee
par n fois le nombre de bits du plus grand coefficient.
– Le nombre maximum de coupes est born´e par le nombre de coupes n´e-
cessaires pour caract´eriser la coque enti`ere de l’ensemble des solutions.
R´esultat de Chvatal.
2.5.3 Techniques de codage
Variables bool´eennes
– On peut coder un choix entre n possibilit´es `a l’aide de n variables 0-1,
X
1
, . . . , X
n
.
– Chaque variable enti`ere ne peut prendre que les valeurs 0 ou 1 : 0 x 1.
– Les choix sont exclusifs :
¸
n
i=1
X
i
= 1.
– Si `a chaque choix est associ´e une quantit´e a
i
, la quantit´e associ´ee `a un jeu
de variables est
¸
n
i=1
X
i
t
i
.
– On peut consid´erer les X
i
comme des bool´eens et coder les op´erateurs :
Z ≡ X ∨ Y :: Z X, Z Y, Z X +Y,
Z ≡ X ∧ Y :: Z X, Z Y, Z X +Y −1,
Z ≡ X :: Z = 1 −X.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
42 Optimisation sous contraintes
Probl`emes de graphe
– On peut repr´esenter un graphe de nombreuses fa¸cons : matrice d’incidence,
matrice de connexion, Z
ij
= 1 si et seulement si il existe un arc i → j.
– Chemin : X
ij
= 1 si et seulement si le chemin emprunte l’arc i → j.
Contrainte : X
ij
Z
ij
.
– Loi de Kirchoff :
¸
i
X
ij
=
¸
k
X
jk
, pour tout j except´e le d´ebut et la fin
du chemin.
– Chemin simple : ne passe qu’une fois par chaque sommet.
¸
i
X
ij
1.
– Pour le d´ebut,
¸
j
X
ij
= 1, et pour la fin
¸
i
X
ij
= 1.
– Minimiser la somme
¸
ij
X
ij
assure que le chemin n’a pas de boucles
isol´ees.
Techniques de grands nombres
– Soit P = ¦x [ Ax +b 0¦ et Q = ¦x [ Cx +d 0¦ deux poly`edres dont
on doit explorer les points entiers. Soit z une nouvelle variable 0-1.
– Si P et Q sont born´es, alors pour M suffisamment grand, le poly`edre :
P ⊕Q = ¦z, x [ Ax +b +Mz 0, Cx +d +M(1 −z) 0¦
est l’«union disjointe» de P et Q.
– On peut mener l’exploration sur P ⊕Q en une seule fois.
– M doit ˆetre choisi de telle fa¸con que x ∈ P entraˆıne Cx + d + M 0 et
r´eciproquement.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
Chapitre 3
M´eta-heuristiques
3.1 S´eparation et ´evaluation ou Branch-and-Bound
3.1.1 Algorithme
S´eparation et ´evaluation
– Plus commun´ement appel´ee branch and bound. Soit un probl`eme de la
forme :
min f(x)
g
i
(x) 0, i = 1, . . . , n
– Principe. On construit une arbre de probl`emes. Le probl`eme initial est la
racine.
– On s’arrange pour diviser le probl`eme en deux (ou plus) sous-probl`emes,
par exemple en introduisant une contrainte suppl´ementaire, qui peut ˆetre
satisfaite ou non.
– Le minimum peut appartenir `a l’un quelconque des sous-probl`emes.
– Si l’on peut prouver que l’un des sous probl`emes est infaisable, on l’´elimine.
– Si l’un des sous-probl`emes est tellement contraint que sa solution est ´evi-
dente, on note la valeur de sa solution.
– On cherche `a obtenir une borne inf´erieure de la solution d’un sous-probl`eme.
Si elle est sup´erieure `a la meilleure solution d´ej`a obtenue, on ´elimine le
sous-probl`eme.
– Dans le cas restant, on subdivise de nouveau le sous-probl`eme.
Variables bivalentes
– La m´ethode est particuli`erement bien adapt´ee `a la r´esolution de probl`emes
lin´eaires en variables bivalentes : les inconnues ne peuvent prendre que les
valeurs 0 ou 1.
– Pour s´eparer un probl`eme en deux, on choisit l’une des inconnues, par
exemple x
1
, et on impose les contraintes x
1
= 0 ou x
1
= 1.
– Pour obtenir une borne sup´erieure, on r´esout le probl`eme en continu.
– Un sous-probl`emes est r´esolu si toutes les variables sont fix´ees ou si la
solution continue est enti`ere.
44 M´eta-heuristiques
Exemple : le sac `a dos
max x
1
+ 2x
2
+ 3x
3
+ 4x
4
4x
1
+ 3x
2
+ 3x
3
+x
4
5
x
1
, x
2
, x
3
, x
4
∈ ¦0, 1¦
– On veut emporter dans un sac `a dos de contenance 5 une s´election de 4
objets de volumes respectifs 4, 3, 3, 1.
– Les utilit´es de ces objets sont respectivement de 1, 2, 3 et 4.
– Trouver la combinaison d’utilit´e maximum.
R´esolution
On value les inconnues dans l’ordre x
1
, . . . , x
4
.
x1=1
x2=1
x2=0
x3=1
x3=0
x4=1 x4=0
5
1
23/3
x1=0
x2=1
x2=0
x3=1
x3=0
7
6
7
x4=1 x4=0
13/3
x3=1
x2=1
x2=0
x1=1
x1=0
7
25/4
x3=0
Si on value les inconnues dans l’ordre x
4
, . . . , x
1
, la r´esolution est plus rapide.
M´eta-algorithme
On doit d’abord d´efinir une repr´esentation des probl`emes `a r´esoudre. Par
exemple, dans le cas du sac-`a-dos, on notera le tableau du probl`eme et celles
des inconnues qui sont d´ej`a valu´ees, dans une variable de type pb.
Fonctions de sp´ecialisation :
– is_trivial : pb → bool permet de savoir si le probl`eme peut ˆetre r´esolu
facilement (i.e. si toutes les inconnues, ou toutes les inconnues sauf une
sont valu´ees).
– trivial_solve : pb → int r´esout un probl`eme trivial. Doit rendre +∞ si
le probl`eme trivial n’est pas faisable.
– bound : pb → int donne une borne inf´erieure de la solution.
– branch : pb → (pb, pb) d´ecoupe un probl`eme en deux sous-probl`emes.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
3.1 S´eparation et ´evaluation ou Branch-and-Bound 45
best pb:= . . .
best:= MAXINT
Algorithme : BandB(pb
0
)
if is_trivial (pb
0
) then
local best := trivial_solve(pb
0
)
if local best < best then
best = local best
best pb = pb
0
else
local best := bound(pb
0
)
if local best < best then
(pb1, pb
2
) := best pb(pb0)
BandB(pb
1
)
BandB(pb
2
)
– On utilise deux variables globales, best et best pb.
– Dans cette version, l’arbre des probl`emes n’est pas repr´esent´e explicite-
ment. Il est cod´e dans la suite des appels r´ecursifs.
– La recherche se fait en profondeur d’abord. L’objectif est de trouver une
solution le plus vite possible, pour pouvoir ensuite ´elaguer l’arbre.
– Dans le cas du sac-`a-dos, on donne la priorit´e `a la valeur x = 1 pour ´eviter
la solution triviale x
i
= 0.
– La m´emoire utilis´ee par l’algorithme est proportionnelle `a la hauteur de
l’arbre, i.e. au nombres de variables, n. D’autres versions utiliseraient une
m´emoire de taille O(2
n
).
Construction de l’arbre des probl`emes
– Que faire si les variables ne sont pas bivalentes ?
– Borner chaque variable, a x b, puis ´ecrire en binaire la valeur de x−a,
avec log
2
(b −a) bits. Engendre log
2
(b −a) variables ´equivalentes.
– De fa¸con ´equivalente, partitionner `a l’aide de contraintes x < (b +a)/2 et
x (b + a)/2. M´ethode plus g´en´erale, car on peut ´ecrire des contraintes
portant sur plusieurs variables.
– Il est possible de partitionner en plus de deux sous-probl`emes. S’applique
en particulier au cas o` u les variables ne sont pas num´eris´ees.
3.1.2
´
Evaluation
– La qualit´e de la fonction d’´evaluation conditionne directement l’efficacit´e
de la m´ethode.
– Exemple du sac `a dos. On prend comme borne sup´erieure y
1
+2y
2
+3y
3
+
4y
4
o` u y
i
= x
i
si x
i
est valu´ee et y
i
= 1 sinon. Il est clair que cette fonction
donne bien une borne sup´erieure de l’utilit´e.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
46 M´eta-heuristiques
x4=1 x4=0
x3=1
x2=1
x2=0
x1=1
x1=0
7
x3=0
7
9
7
6
6
6
3
x3=1 x3=0
x2=1 x2=0
x1=1 x2=0
Relaxation continue
– Si le probl`eme est lin´eaire et en nombres entiers, on obtient une borne (in-
f´erieure ou sup´erieure) `a partir de la solution continue. La m´ethode fournit
une alternative `a la m´ethode des coupes, `a condition que le probl`eme soit
born´e.
– Relaxation Lagrangienne. On a vu plus haut que si on sait calculer :
w(λ) = min
x
L(x, λ),
f

= max
λ0
w(λ)
alors f

est une borne inf´erieure du minimum cherch´e.
– Exploitation des propri´et´es de la fonction objectif, quand il est possible
de calculer facilement son minimum en ne tenant compte que d’une partie
des contraintes.
Lin´earisation de la fonction objectif
– Si les contraintes sont lin´eaires, on peut remplacer f par une minorante
lin´eaire.
– Soit `a minimiser une fonction contenant le produit de deux inconnues x
et y dans un poly`edre (affectation quadratique).
– Si on sait d’apr`es les contraintes que x 0 et y b, on en d´eduit xy bx.
La solution du probl`eme dont la fonction objectif est bx est un minorant
de la solution du probl`eme initial.
Lin´earisation des contraintes
– On suppose la fonction objectif lin´eaire. On d´etermine un poly`edre qui
contient l’ensemble des points entiers faisables. Si le domaine des points
faisables est convexe, cette repr´esentation peut ˆetre aussi pr´ecise qu’on le
veut.
– La solution dans le poly`edre est un minorant de la solution du probl`eme
original.
– Exemple : Minimiser une fonction lin´eaire dans un disque.
3.1.3 Strat´egie et Tactiques
– L’efficacit´e de la recherche d´epend fortement :
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
3.1 S´eparation et ´evaluation ou Branch-and-Bound 47
– De la qualit´e de la fonction d’´evaluation.
– De la disponibilit´e d’une premi`ere bonne solution. Noter qu’aucun ´ela-
gage ne se produit tant qu’une solution n’est disponible.
– De l’ordre de traitement des nœuds.
– Dans le m´eta-algorithme ci-dessus :
– La fonction d’´evaluation est implant´ee dans la fonction bound.
– L’ordre de valuation des variables est implant´e dans la fonction branch.
– L’ordre de traitement des nœuds est implant´e dans l’algorithme. C’est
l’ordre en profondeur d’abord et de gauche `a droite.
– Est-ce la meilleure strat´egie ?
– La strat´egie en profondeur d’abord fournit tr`es vite (en n ´etapes) une
solution, et utilise peu de m´emoire. Mais elle peut s’´egarer dans une r´egion
peu int´eressante de l’arbre.
– Dans la strat´egie en largeur d’abord, on construit l’arbre niveau par ni-
veau.
x1=1
23/3
x1=0
x2=1
x2=0
x3=1
x3=0
7
6
7
23/3
5
M´eta-algorithme (largeur d’abord)
– Dans la strat´egie «meilleur d’abord», on se base sur l’id´ee que la valeur
de la borne inf´erieure est une estimation de l’optimum dans le sous-arbre.
– On a donc int´erˆet `a d´evelopper d’abord le nœud qui a la meilleure borne.
– Dans l’exemple du sac-`a-dos, les deux strat´egies co¨ıncident.
– Au niveau de l’impl´ementation, il suffit que les probl`emes soient ordonn´es
par valeur (borne) croissante. On modifie les proc´edures insert et pop.
– On peut utiliser une structure de donn´ees plus adapt´ee, un tas par exemple.
Impl´ementation parall`ele
– L’algorithme par s´eparation et ´evaluation se prˆete bien `a une impl´emen-
tation parall`ele, parce que le d´eveloppement de chaque probl`eme est ind´e-
pendant des autres probl`emes.
– La seule d´ependance est celle sur la meilleure solution, best. Mais on peut
accepter que cette valeur soit ajust´ee avec retard, la seule incidence ´etant
un ´elagage moins efficace.
– Paradoxe : l’´elagage peut ˆetre plus efficace si le parall´elisme permet d’at-
teindre plus vite la r´egion de l’arbre o` u se trouve le minimum.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
48 M´eta-heuristiques
best pb := . . . ; best := MAXINT
queue := ∅; insert(queue, pb
0
)
while queue = ∅ do
pb
current
:= pop(queue)
if is_trivial(pb
current
) then
local best := trivial_solve(pb
current
)
if local best < best then
best := local best
best pb := pb
current
else
local best := bound(pb
current
)
if local best < best then
(pb
left
, pb
right
) := branch(pb
current
)
insert(queue, pb
left
) ; insert(queue, pb
right
)
3.2 Programmation Dynamique
Programmation dynamique
– M´ethode invent´ee par R. Bellman en 1956.
– Con¸cue sur le mod`ele de l’algorithme du plus court chemin dans un graphe.
– On remplace la r´esolution d’un probl`eme de taille n par celle d’un certain
nombre de probl`emes de taille n −1, dont on combine les r´esultats.
– Exemple : calcul du plus court chemin entre deux points d’un DAG, i et
j.
– Si i = j, alors la longueur du plus court chemin est 0. Sinon, ce chemin
passe n´ecessairement par l’un des successeurs de i.
– Soit l
ij
la longueur du plus court chemin, et d
ij
la distance de deux som-
mets adjacents. On a la r´ecurrence :
l
ij
= min
k∈Succ(i)
d
ik
+l
kj
= min
k∈Pred(j)
l
ik
+d
kj
.
Exemple du sac-`a-dos
Soit `a r´esoudre :
min
n
¸
i=1
c
i
x
i
,
n
¸
i=1
w
i
x
i
W,
x
i
∈ ¦0, 1¦
– On suppose les w
i
entiers.
– On consid`ere la famille de probl`emes obtenue en faisant varier W et en ne
prenant en compte que les variables x
i
, i = k, . . . , n. Soit V
k
(W) la valeur
d’un tel probl`eme.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
3.2 Programmation Dynamique 49
´
Equations de r´ecurrence
– Soit `a calculer V
1
(W). Il y a deux choix possibles : x
1
= 0, x
1
= 1.
– Un fois la valeur de x
1
fix´ee, on doit r´esoudre un autre probl`eme de sac-
`a-dos.
– Si x
1
= 0, la capacit´e disponible est toujours W, on doit calculer V
2
(W).
– Si x
1
= 1, il ne reste plus que W −w
1
unit´es de capacit´e, mais on a d´ej`a
obtenu c
1
unit´es de valeur.
– Dans le cas g´en´eral, on a la r´ecurrence :
V
k
(W) = max¦V
k+1
(W), V
k+1
(W −w
k
) +c
k
¦.
Conditions aux limites
– Que vaut V
n
(W) ?
– On ne peut fixer que la valeur de x
n
, et on doit avoir w
n
W si on veut
pouvoir faire x
n
= 1. On a donc :
V
n
(W) =

c
n
si W w
n
0 sinon
– De plus, V
k
(W) = 0 si W 0.
– M´ethode de r´esolutions. On remarque que 0 W B =
¸
n
i=1
w
i
.
– Il suffit donc de calculer V
k
(W) pour les B valeurs [1, . . . B] et pour k =
n, . . . 1.
Algorithme
#define N ...
#define B ...
int w[N+1];
int c[N+1];
void main(void){
int V[N+1][B+1];
int W, k, c1, c2;
for(W=1; W <= B; W++)
if(w[N] <= W)
V[N][W] = c[N];
else V[N][W] = 0;
for(k=N-1; k >= 1; k--)
for(W = 1; W <= B; W++){
c1 = V[k+1][W];
if(W - w[k] > 0)
c2 = V[k+1][W - w[k]] + c[k];
else c2 = 0;
V[k][W] = c1 > c2 ? c1 : c2;}}
Remarques
– On lit directement la valeur du probl`eme original dans V
1W
.
– Noter que l’on a r´esolu non seulement le probl`eme original, mais le pro-
bl`eme pour toutes les valeurs possibles de W. En effet, V
k
(W) = V
k
(B) si
W > B.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
50 M´eta-heuristiques
– Dans ce cas particulier, comme V
k
(W) ne d´epend que de V
k+1
(W

) pour
W

W, on peut ne calculer les valeurs que pour les valeurs de W au
plus ´egale `a la contrainte du probl`eme original.
Exemple
max x
1
+ 2x
2
+ 3x
3
+ 4x
4
4x
1
+ 3x
2
+ 3x
3
+x
4
5
x
1
, x
2
, x
3
, x
4
∈ ¦0, 1¦
H
H
H
H
H
W
k
1 2 3 4
11 10 9 7 4
10 9 9 7 4
9 9 9 7 4
8 9 9 7 4
7 9 9 7 4
6 7 7 7 4
5 7 7 7 4
4 7 7 7 4
3 4 4 4 4
2 4 4 4 4
1 4 4 4 4
0 0 0 0 0
Complexit´e
– Il est facile de voir que la complexit´e est O(n.B).
– On dit que le probl`eme est pseudo-polynomial. En effet, n.B est bien un
polynˆome, mais B est exponentiel en la taille des w
k
(nombre de bits).
– L’ensemble [0, B] est «l’ensemble des ´etats» de l’algorithme. Il peut ˆetre
`a plusieurs dimensions. Dans ce cas, la complexit´e devient prohibitive.
Reconstituer la solution
– Il suffit d’introduire un nouveau tableau x[N][B+1].
– On modifie l’algorithme comme suit :
if(W - w[k] > 0){
c2 = V[k+1][W - w[k]] + c[k];
else c2 = 0;
if(c1 > c2){
V[k][W] = c1; X[k][W] = 1;
} else {
V[k][W] = c2; X[k][W] = 0;
}
– On reconstitue la valeur des x
i
par la r`egle :
W = W_0;
for(k=1; k<=N; k++){
x[k] = X[k][W];
W = W - x[k]*w[k];
}
´
Economiser la m´emoire
– Si l’on n’est int´eress´e que par la valeur de l’optimum, il est facile de voir
que l’on n’a besoin que de deux lignes du tableau V, V[k] et V[k+1].
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
3.2 Programmation Dynamique 51
– Il suffit donc de 2B cellules de m´emoire. Les deux lignes sont permut´ees `a
chaque it´eration.
– Ce cas se pr´esente quand la programmation dynamique est composante
d’un autre algorithme, par exemple un branch-and-bound.
– Si on souhaite reconstituer la solution, il faut soit stocker le tableau x, de
taille N.B, soit effectuer des calculs redondants.
G´en´eralisation
– Soit `a r´esoudre :
min
x∈Ω
n f
n
(x),
g
n
(x) 0.
– Il est ´evident que la m´ethode ne marche que parce que la fonction objectif
et les contraintes ont des propri´et´es sp´eciales.
– La fonction objectif doit ˆetre s´eparable. Soit x un vecteur. On note x
hd
(head) la premi`ere composante de x et x
tl
(tail) le vecteur des autres
composantes.
– Une fonction f
n
`a n variables est s´eparable s’il existe une fonction h
n
et
une fonction f
n−1
telles que :
f
n
(x) = h
n
(x
hd
, f
n−1
(x
tl
)),
∂h
n
(x, y)
∂y
0
Th´eor`eme 3.1.
min
g
n
(x)0
f
n
(x) = min
x
hd
∈Ω
h
n
(x
hd
, min
g
n
(x
hd
,x
tl
)0
f
n−1
(x
tl
))
D´emonstration. Soit x

la solution du probl`eme de droite, et soit y

(x
hd
) le
point o` u f
n−1
(y) atteint son minimum sous la contrainte g
n
(x
hd
, x
tl
) 0. Par
construction, 'x

, y

(x

)` satisfait la contrainte, donc f
n
(x

, y

) min
x∈Ω
n f
n
(x).
R´eciproquement, soit x la solution du probl`eme de gauche. On a min
g(x
hd
,x
tl
)0
f
n−1
(x
tl
)
f
n−1
(x
tl
), donc, par la monotonie de h
n
h
n
(x
hd
, min
g(x
hd
,x
tl
)0
f
n−1
(x
tl
)) h
n
(x
hd
, f
n−1
(x
tl
)),
et cette propri´et´e s’´etend au minimum.
– Cette propri´et´e ne suffit pas. Si la d´ecomposition de f
n
peut ˆetre poursui-
vie, elle fournit une r´ecurrence permettant de calculer le minimum, mais
sa complexit´e est du mˆeme ordre que celle d’une recherche exhaustive.
– Pour aller plus loin, il faut plonger le probl`eme initial dans une famille de
probl`emes o` u les contraintes d´ependent d’une variable d’´etat S ∈ o.
P
n
(S) : min f
n
(x),
g
n
(x, S) 0,
o` u g
n
a les deux propri´et´es :
– ∃T
n
g
n
(x, S) = g
n−1
(x
tl
, t
n
(x
hd
, S))
– ∀x ∈ Ω, S ∈ o : t
n
(x, S) ∈ o.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
52 M´eta-heuristiques
Algorithme
– On suppose que l’ensemble des valeurs possibles de x, Ω et celui des valeurs
possible de S, o sont finis.
for S ∈ o do V
n
(S) = min
g
n
(x,S)0
f
n
(x)
for k = n −1 downto 1 do
for S ∈ o do
V
k
(S) = min
x∈Ω
h
k
(x, V
k+1
(t
k
(x, S))
– L’efficacit´e de la m´ethode est enti`erement conditionn´ee par la taille de o
qui doit ˆetre ´enum´er´e.
– Les probl`emes d’optimisation `a une dimension sur Ω peuvent ˆetre r´esolus
par ´enum´eration (si [Ω[ est petit) ou par toute autre m´ethode.
Application au sac-`a-dos
– La fonction objectif se met bien sous la forme :
n
¸
i=1
c
i
x
i
= c
1
x
1
+
n
¸
i=2
c
i
x
i
.
– La fonction h est l’addition, qui est bien monotone croissante en son
deuxi`eme argument.
– La contrainte se met sous la forme :
n
¸
i=1
w
i
x
i
−W 0,
et on peut ´ecrire :
¸
n
i=2
w
i
x
i
−(W −w
1
x
1
) 0.
– La fonction de transition est t
k
(x, W) = W −w
k
x.
– L’espace des ´etats est o = [0, B] avec B =
¸
n
i=1
w
i
, l’espace des valeurs
est Ω = [0, 1].
Autres exemples
– On peut envisager d’autres formes de la fonction objectif, comme :
n
¸
i=1
x
c
i
i
.
– Ici la fonction de combinaison est la multiplication, qui est bien non d´e-
croissante en son deuxi`eme argument `a condition que le premier argument
soit non n´egatif.
Le voyageur de commerce
– On se donne n villes et une matrice des «distances» ¦d
ij
[ 1 i n, 1 j n¦.
Certaines distances peuvent ˆetre infinies.
– On demande de trouver une tourn´ee de longueur minimale.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
3.3 Exploration al´eatoire 53
– Une tourn´ee est un circuit hamiltonien, i.e. qui passe une fois et une seule
par chaque ville.
– Le probl`eme est tr`es difficile, parce que le nombre de circuits (hamilto-
niens) est tr`es ´elev´e.
´
Equation de r´ecurrence
– On peut choisir une ville arbitraire, par exemple la ville 1, comme point
de d´epart de la tourn´ee.
– Soit S un sous ensemble de [1, n] contenant 1. On consid`ere les chemins
hamiltoniens de S, c’est-`a-dire les chemins partant de 1 et passant une fois
et une seule par chaque ville de S.
– On note Pred(k) l’ensemble des pr´ed´ecesseurs de k, c’est-`a-dire l’ensemble :
¦i ∈ [1, n] [ d
ik
< ∞¦ .
– On note F(S, k) la longueur du plus court chemin de 1 `a k qui passe une
et une seule fois par toutes les villes de S.
– Consid´erons la ville k

qui pr´ec`ede k dans le plus court chemin cherch´e.
Cette ville fait ´evidemment partie de Pred(k) ∩ S.
– D’autre part, le chemin de 1 `a k

passe par toute les villes de S −¦k¦. Si
sa longueur est sup´erieure `a F(S −¦k¦, k

), il est possible de l’am´eliorer.
On a donc la r´ecurrence :
F(S, k) = min
k

∈Pred(k)∩S
F(S −¦k¦, k

) +d
k

k
.
– On a d’autre part la condition initiale F(¦1¦, 1) = 0.
– On peut donc r´esoudre le probl`eme en tabulant la fonction F pour tous
les ensembles ne contenant qu’une ville, puis pour tous les sous-ensembles
de villes `a 2, 3, ... ´el´ements.
– On lit le r´esultat en F([1, n], 1).
– Mais la m´ethode n’est pas tr`es efficace car il y a en tout 2
n−1
sous-
ensembles.
Relaxation
– On peut simplifier le probl`eme en demandant que le chemin passe par [S[
villes sans exiger qu’il soit hamiltonien.
– On peut alors traiter en une seule fois tous les sous-ensembles de mˆeme
cardinal.
– On obtient une borne inf´erieure de la longueur de la tourn´ee, qui peut ˆetre
utilis´ee, par exemple, dans un algorithme branch and bound.
3.3 Exploration al´eatoire
3.3.1 Am´elioration it´erative
Position du probl`eme
Soit `a r´esoudre :
max
x∈S
f(x).
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
54 M´eta-heuristiques
– L’ensemble S est l’ensemble des configurations, ou ensemble des ´etats.
On suppose qu’il est trop grand pour ˆetre ´enum´er´e, mais qu’il existe un
proc´ed´e efficace pour tirer une configuration au hasard dans S.
– f est la fonction objectif.
– On suppose que tout point x de S a un ensemble fini de voisins, V (x).
´
Etant
donn´e x, il existe un proc´ed´e efficace pour ´enum´erer V (x). Enfin, l’espace
des configurations est connexe, i.e. on peut aller de x `a y quelconque par
des d´eplacements de voisin `a voisin.
– Un maximum global de f est un point x

de S tel que ∀x ∈ S : f(x)
f(x

).
– Un maximum local est un point x tel que ∀x ∈ V (x) : f(x) f(x).
Am´elioration it´erative
Algorithme : Hill-Climbing
x best := random(S)
best := f(x best)
for i = 1 to n do
x := random(S)
repeat
z := x
foreach y ∈ V (x) do
if f(y) > f(x) then
x := y
break
until z = x
if f(x) > best then
best := f(x)
x best := x
Bassin d’attraction
– Autour de chaque maximum local a il existe un bassin d’attraction A d´efini
par :
a ∈ A,
(∀y ∈ V (x) : f(y) > f(x) ⇒ y ∈ A) ⇒ x ∈ A.
– Si le point initial est dans le bassin d’attraction du maximum global, l’al-
gorithme Hill-Climbing trouve le maximum global.
– La probabilit´e d’atteindre le minimum global tend donc vers 1 quand n →
∞.
– Mais il est impossible d’avoir une certitude.
3.3.2 Recuit simul´e
– Algorithme de M´etropolis, 1953.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
3.3 Exploration al´eatoire 55
– Voir aussi P. J. M. van Larrhoven ans E.H. Aarts, Simulated Annealing,
Theory and Applications, Kluwer, 1987.
– Analogie avec la physique statistique. Lorsqu’un objet physique pouvant
exister dans plusieurs ´etats atteint l’´equilibre thermodynamique, la popu-
lation d’un ´etat d’´energie E est donn´ee par la loi de Boltzmann :
p(E) =
1
Z
e

E
kT
,
o` u k est la constante de Boltzmann, T la temp´erature, et Z un facteur de
normalisation, la fonction de partition.
– Cet ´equilibre est dynamique. Il r´esulte de multiples transitions qui se com-
pensent. Une transition faisant varier l’´energie de ∆E a une probabilit´e
proportionnelle `a e

∆E
kT
.
– On mod´elise un probl`eme d’optimisation par un syst`eme thermodyna-
mique dont on simule l’´evolution.
– Les ´el´ements de S sont les divers ´etats possibles du syst`eme. L’«´energie»
de l’´etat x est f(x).
– Si le syst`eme est dans l’´etat x, il peut passer al´eatoirement dans l’un des
´etats de V (x).
– La probabilit´e pour le syst`eme de passer dans l’´etat y ∈ V (x) est :

1
Z
si f(y) > f(x) ;

1
Z
e
f(y)−f(x)
T
si f(y) < f(x).
– Z est le facteur de normalisation.
– T est une pseudo-temp´erature.
– Si le probl`eme a des contraintes qui ne sont pas int´egr´ees dans la d´efinition
de S, il suffit de faire f(x) = −∞ quand x n’est pas faisable.
– Au bout d’un certain temps, le syst`eme se stabilise.
– On r´eduit la valeur de la «temp´erature» et on continue.
– La motivation est de permettre au syst`eme simul´e de s’´echapper du bassin
d’attraction d’un minimum local pour atteindre le minimum global.
Algorithme : Simulated-Annealing
T := . . .
x := xbest := random(S)
best = f(x)
for i := 1 to n do
for j := 1 to m do
y := random(V (x))
if f(y) > f(x) then
x := y
if f(x) > best then
best := f(x)
xbest := x
else v = random([0, 1])
if v < e
f(y)−f(x)
T
then x := y
T := 0.99T
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
56 M´eta-heuristiques
Analyse du recuit simul´e
– Quand doit-on baisser la temp´erature (i.e., quel est la valeur de m) ?
– Combien de fois doit on baisser la temp´erature (i.e. quelle est la valeur de
n) ?
– A quelle vitesse faire baisser la temp´erature (la valeur 0.99 est elle la
bonne) ?
Chaˆıne de Markov
– Une chaˆıne de Markov uniforme, discr`ete et `a temps discret est un syst`eme
qui peut exister dans plusieurs ´etats formant un ensemble S. Soit x
n
l’´etat
du syst`eme `a l’´etat n. La chaˆıne ne change d’´etat qu’aux instants de valeur
enti`ere.
– La probabilit´e de transition de l’´etat x `a l’´etat y ne d´epend que de x et
de y. Elle ne d´epend ni du temps, ni des ´etats ant´erieurs occup´es par le
syst`eme. Soit P
xy
la probabilit´e de transition de l’´etat x `a l’´etat y.
– On doit avoir
¸
y∈S
P
xy
= 1. La matrice p
xy
est une «matrice stochas-
tique».
– Il est clair qu’un algorithme de recuit simul´e fonctionne comme une chaˆıne
de Markov.
Calcul des probabilit´es de transition
– Chaque tirage peut avoir trois r´esultats :
– On tire un point y tel que f(y) > f(x).
– On tire un point y tel que f(y) < f(x) et un nombre v tel que v <
e
f(y)−f(x)
T
.
– Dans le cas restant, on recommence le tirage.
– Fonction de partition : Z =
¸
f(y)f(x
1 +
¸
f(y)<f(x)
e
f(y)−f(x)
T
.
– Probabilit´e de la transition x → y :

1
Z
si f(y) f(x) ;

1
Z
e
f(y)−f(x)
T
sinon.
Graphe d’une chaˆıne de Markov
– Le graphe d’une chaˆıne de Markov a pour sommets les ´etats de la chaˆıne.
Il y a un arc de x vers y si et seulement si la transition x → y est de
probabilit´e non nulle.
– On peut construire les composantes fortement connexes (cfc) de ce graphe
et le graphe r´eduit.
– En vertu du principe que tout ´ev`enement de probabilit´e non nulle finit
par se produire au bout d’un temps suffisamment long, l’´etat de la chaˆıne
finit toujours par parvenir dans l’une des cfcs terminale.
– On dit que la chaˆıne est simple s’il n’y a qu’une seule cfc terminale.
– Une chaˆıne simple finit par atteindre sa cfc terminale. A partir du moment
o` u elle entre dans la cfc terminale, elle passe une infinit´e de fois par chaque
sommet de celle-ci.
Distribution limite
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
3.3 Exploration al´eatoire 57
– Si p
0
x
est la distribution de probabilit´e initiale sur la cfc terminale, la
distribution apr`es n ´etapes est ´egale `a :
p
n
= p
n−1
.P
– Le comportement de p
n
d´epend donc des valeurs propres de P
T
. On
montre :
– Que 1 est valeur propre de P
T
.
– Que les composantes de p
n
sont positives, que leur somme est ´egale `a
1, et par cons´equent, qu’elles sont comprises entre 0 et 1.
– En cons´equence, P
T
ne peut avoir de valeur propre de module > 1.
– On est dans le cas r´egulier quand 1 est valeur propre simple de P
T
. Une
condition suffisante est que tous les coefficients de P soient non nuls.
– Dans ce cas, la distribution de probabilit´e converge vers le vecteur propre
de P
T
associ´e `a 1.
Application au recuit simul´e
– Dans le cas du recuit simul´e, aucune probabilit´e de transition n’est nulle.
On est donc toujours dans le cas r´egulier.
– Quand la temp´erature d´ecroˆıt, certaines probabilit´es de transition tendent
vers 0. A la limite, chaque cfc est un ensemble contigu de minimum locaux.
La ou les cfcs terminales sont associ´ees `a l’extremum global.
– Pour arrˆeter la recherche, on peut attendre que la distribution de proba-
bilit´e soit stable (par exemple en estimant l’esp´erance math´ematique de
x, si cela `a un sens, ou celle de f(x).)
Exemple, Sac-`a-dos
– L’ensemble des ´etats est celui des suites binaires de taille n qui v´erifient
la contrainte.
– Voisinage : deux suites qui diff`erent par un seul bit.
– Sur un petit exemple, le r´esultat n’est pas tr`es satisfaisant.
Exemple, Voyageur de Commerce
– On suppose que la matrice des distances est sym´etrique.
– Ensemble des ´etats : ensemble des circuits hamiltoniens du graphe.
– Voisinage.
– On choisit deux villes a et b visit´ees dans l’ordre a → b. Soit a

la ville
qui pr´ec`ede a et b

celle qui suit b.
– On construit le circuit a

→ b → a → b

→ a

.
– Les r´esultats exp´erimentaux sont excellents.
3.3.3 La m´ethode Tabou
– On conserve les notions d’espace de configuration et de voisinage.
– Pour ´eviter de rester bloqu´e autour d’un optimum local, on conserve la
liste des derniers points visit´es, la liste tabou.
– Quand on explore un voisinage, on choisit le meilleur voisin `a l’exclusion
des points de la liste tabou.
– La liste tabou est g´er´ee comme une FIFO.
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
58 M´eta-heuristiques
– Sa longueur est un param`etre crucial. Folklore : la valeur L = 7 est presque
toujours suffisante !
Algorithme : Tabou
essais := ∅
for i := 1 to n do
tabou := ∅; x := . . .
continue:= true
while continue do
add_FIFO(tabou, x)
if V (x) tabou = ∅
then x := argmin ¦f(y) [ y ∈ V (x) tabou¦
else continue:= false
essais ∪= x
return best(essais)
´
Evaluation
– Contrairement au recuit simul´e, il n’y a pas de th´eorie de la m´ethode
Tabou.
– Elle est cependant r´eput´ee plus efficace et fiable que le recuit simul´e.
– Le choix de la longueur de la liste Tabou (NB- qui est cach´ee dans la
fonction add_FIFO) est le plus important.
– L’autre param`etre est le nombre d’essais (n ci-dessus) qui ne peut gu`ere
ˆetre choisi que de fa¸con exp´erimentale.
3.3.4 Algorithmes g´en´etiques
– Principe : on cherche `a imiter ce que l’ont sait du fonctionnement de
l’´evolution biologique.
– Chaque configuration doit pouvoir ˆetre cod´ee par une chaˆıne de caract`eres.
– Pour le sac-`a-dos, on prend la chaˆıne 0-1 des valeurs des variables.
– Pour le voyageur de commerce, on prend la liste des villes dans l’ordre
de la tourn´ee.
– On travaille non pas sur une configuration, mais sur une population de
configurations, que l’on tire au hasard au d´ebut.
– On ´evalue f pour tous les individus de la population (parall´elisme) on
classe et on retient les meilleurs 20% (par exemple).
– On compl`ete la population `a l’aide de 2 m´ecanismes :
– Mutation : on choisit un individu au hasard et on modifie (avec une
probabilit´e tr`es faible) l’une de ses lettres.
– Croisement : On choisit deux individus x et y, on s´electionne un point
de croisement x = a.b, y = c.d, et on forme les individus a.d et c.b (la
longueur de a et celle de c doivent ˆetre ´egales).
– On it`ere jusqu’`a stabilisation de la population.
Evaluation
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml
3.4 Conclusion g´en´erale 59
Algorithme : Genetic(P, N, L, Q)
for i := 1 to P do x[i] := random(S)
for k := 1 to N do
sort(x, P, f)
l := m := p/5
for q = 1 to Q do
i := random(1, m)
x[l + 1] := mutate(x[i]); l += 1
while l < P do
i = random(1, m)
j = random(1, m)
if i = j then
cut := random(2, L −1])
(u, v) := crossover(x[i], x[j], cut)
x[l] := u; x[l + 1] := v; l := l + 2
– L’originalit´e essentielle est de travailler sur une population et non sur un
individu unique. Similaire `a l’id´ee du red´emarrage al´eatoire, mais permet
une ´evaluation parall`ele si c’est possible.
– L’id´ee des mutations est similaire `a l’exploration al´eatoire d’un voisinage.
– L’id´ee de recombinaison peut avoir du sens ou non.
– Elle repose sur l’id´ee que les g`enes ont un effet cumulatif et non posi-
tionnel.
– C’est faux pour le sac-`a-dos, pour le voyageur de commerce, et peut-ˆetre
aussi dans la nature.
– La m´ethode ne s’applique donc efficacement que dans des cas particuliers.
3.4 Conclusion g´en´erale
– Tout un ensemble de m´ethodes, des plus particuli`eres (la programma-
tion lin´eaire et les m´ethodes de gradient) aux plus g´en´erales (les m´eta-
heuristiques).
– Les m´ethodes particuli`eres sont plus difficiles `a programmer, mais plus
efficaces.
– Les m´ethodes g´en´erales sont faciles `a programmer et d’un champ d’appli-
cation plus vaste.
– Donc choisir toujours la m´ethode la plus sp´ecialis´ee compatible avec la
d´efinition du probl`eme (il existe beaucoup de logiciels tout faits, libres et
commerciaux).
– La m´ethode Branch and Bound demande une ´etude pr´eliminaire du pro-
bl`eme. Elle est tr`es g´en´erale et pas trop difficile `a programmer. Elle justifie
`a elle seule le principe de Minoux : «En optimisation combinatoire, la li-
n´earit´e n’est pas importante».
Distribu´e sous license Open-Content: http://opencontent.org/opl.shtml