Vous êtes sur la page 1sur 59

Recherche Operationnelle

Paul Feautrier
20 mai 2004
2
Distribue 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 lineaire . . . . . . . . . . . . . . . . . . . . . . . 15
2 Optimisation sous contraintes 27
2.1 Conditions de Kuhn et Tucker . . . . . . . . . . . . . . . . . . . . 27
2.2 Une methode directe . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.3 Methodes 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 Meta-heuristiques 43
3.1 Separation et evaluation ou Branch-and-Bound . . . . . . . . . . 43
3.1.1 Algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.1.2

Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.1.3 Strategie et Tactiques . . . . . . . . . . . . . . . . . . . . 46
3.2 Programmation Dynamique . . . . . . . . . . . . . . . . . . . . . 48
3.3 Exploration aleatoire . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.3.1 Amelioration iterative . . . . . . . . . . . . . . . . . . . . 53
3.3.2 Recuit simule . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.3.3 La methode Tabou . . . . . . . . . . . . . . . . . . . . . . 57
3.3.4 Algorithmes genetiques . . . . . . . . . . . . . . . . . . . 58
3.4 Conclusion generale . . . . . . . . . . . . . . . . . . . . . . . . . 59
4 Table des mati`eres
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
Chapitre 1
Optimisation sans
contraintes
Plan
Introduction et principaux concepts
Optimisation continue sans contrainte
Programmation lineaire
Optimisation continue sous contrainte
Optimisation combinatoire
Programmation lineaire en nombres entiers.
Exploration
Metaheuristiques
Programmation dynamique


Elements de Complexite
1.1 Principaux concepts
Quest ce que la recherche operationnelle ?
Vocabulaire : Recherche operationnelle = programmation mathematique
= optimisation (mais pas optimisation de programme).
Recherche operationnelle = modelisation mathematique des processus de
prise de decision.
Inconnues : les variables de decision.


Evaluation de la decision = fonction economique ou fonction objectif.
Trouver les valeurs des variables de decision qui minimisent (ou maxi-
misent) la fonction objectif.
Recherche operationnelle
modlisation
optimisation action
6 Optimisation sans contraintes
La modelisation est un art, loptimisation est une science.
Applications : planication du debarquement de Normandie, optimisation
dun programme de calcul intensif, investissement en bourse.
Investissement en bourse = optimisation avec information incompl`ete
ou aleatoire.
Planication dune operation militaire = il y a un adversaire = theorie
des jeux.
Optimisation dun programme = en principe, on a une information com-
pl`ete.
Le cours est essentiellement consacre `a loptimisation avec information
compl`ete.
Informatique ou mathematique ?
Mathmatique Informatique
Recherche Oprationelle
Complexit
Thormes dexistence
Convergence
Algorithmes
Preuves de terminaison Artificielle
Intelligence
Vocabulaire
Distribue 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 sil 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
Convexite
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.
Distribue 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
Interet de la convexite
Theor`eme 1.1. Si f est convexe dans un ensemble convexe S, alors tout mi-
nimum local de f est un minimum global.
Demonstration. Soit a un minimum local, et V louvert contenant a dans lequel :
x V f(x) f(a).
Si on suppose quil 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 susamment 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),

Classication
Selon la nature des variables de decision :
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 reelle) : optimisation sans contraintes.
Optimisation sous contraintes : il est dicile de trouver un point satis-
faisant les contraintes.
Proprietes speciales des elements du probl`eme : linearite, convexite.
Distribue 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 pose. Quel sens peut on lui donner ?
Exemple : on doit concevoir un equipement electronique qui doit executer
un algorithme donne le plus vite possible et pour le moindre prix.
f
1
est le temps dexecution de lalgorithme.
f
2
est le prix de lequipement.
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 lunicite dun minimum sil existe.
Loptimum de Pareto (ou le Pareto) du probl`eme est lensemble des solu-
tions non dominees.
Pareto
prix
latence
domination
Que faire avec un Pareto ?
Ponderation
On attribue un poids `a chaque objectif et on minimise lobjectif pondere.
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
10 Optimisation sans contraintes
prix
latence
optimum
pondr
Transformation objectif/contrainte
On xe la valeur de lune des fonctions objectif et on optimise lautre. Par
exemple, le marketing decide du prix maximum de lequipement.
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 connat la derivee 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 dinexion.
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
1.2 Optimisation continue sans contrainte 11
On peut utiliser pour cela des methodes classiques : iteration de Newton
(si on peut calculer la derivee seconde), dichotomie, methode de la secante.
Si on ne connat pas la derivee, la premi`ere chose `a faire est de trouver un
encadrement du minimum. Il ny a pas de methode generale, on utilise les
renseignements que lon peut avoir sur f.
Fonctions unimodales
Une fonction f est unimodale dans lintervalle [a, b] sil 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.
Theor`eme 1.2. Si f est continue convexe dans [a, b], alors f est unimodale.
Demonstration. Soit c le minimum de f, et x et y qui violent la condition
dunimodalite, par exemple c x y et f(c) < f(y) < f(x). Soit 0 1 tel
que x = c + (1 )y. Par convexite on doit avoir f(x) f(c) + (1 )f(y)
mais aussi f(c) + (1 )f(y) f(y) < f(x) une contradiction.
Methode par trichotomie
a c d b
a c d b
On divise lintervalle [a, b] en trois parties egales `a laide des points a <
c < d < b. On calcule f(c) et f(d).
On determine le minimum de f parmi les 4 points a, c, b, d.
Le minimum continu appartient `a lintervalle encadrant le minimum dis-
cret.
Lintervalle est reduit au moins par un facteur 2/3. On poursuit jusqu`a
la precision voulue.
Ameliorations
Vitesse de convergence : la taille de lintervalle est multipliee par
2
3
n/2
apr`es n evaluations de la fonction.
La division en segment egaux nest pas optimale. On a interet `a agrandir
les segments extremes.
On peut passer `a un decoupage en 4 parties egales. Il faut evaluer f trois
fois `a chaque etape, mais lintervalle est au moins divise par 2. La conver-
gence est en
1
2
n/3
donc plus rapide.
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
12 Optimisation sans contraintes
Methodes par exploration
Il est toujours indispensable de connatre une encadrement [a, b] du mini-
mum.
On suppose toujours que f est unimodale. On choisit un pas dexplora-
tion d. On calcule f aux points x
k
= a + k.d jusqu`a trouver soit une
conguration f(x
k
) f(x
k+1
), soit jusqu`a atteindre le point b.
On fait a := x
k1
, b := x
k+1
, d := d et on recommence. < 1 est le
facteur de convergence.
On sarrete quand d est devenu susamment petit.
La methode peut sappliquer `a une fonction non unimodale. On obtient
alors un optimum local sans garantie quil soit global.
Lalgorithme converge
Le nombre de pas dexploration est au plus
ba
b
. Lexploration sarrete en
un temps ni.
Soit [a
n
, b
n
] le n
e
intervalle dexploration et d
n
le n
e
pas dexploration. On
a d
n
= d
n
et b
n
a
n
2d
n
.
Les [a
n
, b
n
] forment une suite dintervalles embotes 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 generalise pas.
Recherche directionnelle
On se ram`ene au cas `a une seule variable. Pour cela on choisit un point
de depart a et une direction d.
On minimise la fonction `a une variable f(a + t.d) `a laide de lune des
methodes vues plus haut.
Si le deplacement t.d est susamment petit, on arrete.
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 xer n1 va-
riables de la fonction f, et `a optimiser suivant
la n
e
. On passe ensuite `a la variable suivante.
La methode est tr`es lente et peut meme ne
pas converger si les courbes de niveau sont `a
peu pr`es parall`eles aux diagonales.
On peut laccelerer en eectuant N pas puis
en utilisant la direction a
N
a
0
.
Gradient
On suppose que la fonction f a une derivee.
Distribue 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 developpement de Taylor :
f(a +h) = f(a) +hf(a) +. . . .
Ceci montre que f(a) est la direction dans laquelle f decrot le plus
rapidement (steepest descent).
Do` u lalgorithme :
1. Calculer le gradient f(a).
2. Minimiser la fonction `a une variable f(a xf(a)).
3. Si le crit`ere de convergence nest pas verie, recommencer en 1.
Propriete
Theor`eme 1.3. Dans lalgorithme ci-dessus, les directions de recherche succes-
sives sont orthogonales.
a b
Demonstration. Soit a le point de depart dune re-
cherche unidimensionnelle suivant la direction f(a)
et b son point darrivee. La derivee de la fonction `a
minimiser est :
df(a xf(a))
dx
= f(a).f(x).
En b cette derivee est nulle, do` u la propriete.
Directions conjuguees
Une matrice A de dimension n n est denie positive si et seulement si :
x : x
T
Ax 0.
Une matrice denie positive denit un produit scalaire.
Deux vecteurs u, v sont conjugues par rapport `a A si et seulement si :
u
T
Av = 0. Cest une generalisation de la notion dorthogonalite.
Soit n vecteurs d
1
, . . . , d
n
mutuellement conjugues :
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.
Dapr`es la propriete ci-dessus et la conjugaison des d
k
, on a :

k
=
d
T
k
(Ax
(0)
+b)
d
T
k
Ad
k
.
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
14 Optimisation sans contraintes
Les coordonnees de x
(k)
sont donnees 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
engendre par d
1
, . . . , d
k
.
Demonstration. Le gradient en x
(k)
est Ax
(k)
+ b = Ax
(0)
+

k1
i=1

i
AD
i
+ b.
Si on multiplie par d
i
et quon 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.

Theor`eme 1.5. Le point x


(n)
est le minimum de f.
Demonstration. En eet, le gradient en x
(n)
doit etre conjugue de n vecteurs
lineairement independants, et donc doit etre nul.
Gradient conjugue
Cest la transposition de la methode ci-dessus au cas o` u la fonction f est
quelconque, mais o` u on sait calculer son gradient.
On part dun point a
0
et on pose d
0
= f(a
0
).
Supposons que lon 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 denie positive, la methode est iden-
tique `a celle des directions conjugues et converge en n etapes.
Recherche aleatoire
Au lieu de calculer la direction de recherche optimale pour une approxima-
tion quadratique de f, on peut la choisir aleatoirement en tirant n nombres
au hasard dans lintervalle [0, 1].
La methode ne necessite pas le calcul du gradient. Elle fonctionne meme
si f nest pas derivable.
Mais en general, sa convergence est beaucoup plus lente.
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
1.3 Programmation lineaire 15
Test darret
Le choix dun test darret est dicile.
Si f est derivable, son gradient doit etre nul `a loptimum. On peut donc
utiliser [[f(a
k
)[[ < comme test darret.
Sinon, on peut arreter les iterations quand la solution ne change plus :
[[a
k+1
a
k
[[ < .
doit reeter la precision requise. Il ne doit pas etre plus petit que la
precision des calculs sous peine de blocage.
Il est prudent dattendre que le test ait ete satisfait plusieurs fois avant
darreter.
En general, la valeur du minimum est mieux denie que sa position.
1.3 Programmation lineaire
Programmation lineaire
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 dun programme lineaire
Un programme lineaire peut se mettre sous de multiples formes, toutes
equivalentes.
On peut changer le sens de linegalite, ou passer le terme constant de
gauche `a droite.
On peut remplacer les inegalites par des egalites en introduisant des va-
riables decart 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 enn transposer le programme : Ax +b 0 x
T
A
t
+b
t
0
Poly`edre Convexe
Lensemble T = x [ Ax +b 0 est convexe. On lappelle un poly`edre
convexe ou simplement un poly`edre.
La fonction c.x est trivialement convexe.
Donc, si un programme lineaire a un minimum local, cest un minimum
global.
Test de faisabilite
Pour trouver un minimum, il faut que le poly`edre :
T = x [ ax = b 0
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
16 Optimisation sans contraintes
soit non vide, ou encore quil existe au moins un point x
0
qui satisfasse
toute les inegalites Ax +b 0.
On peut verier cette condition `a laide du test de Fourier-Motzkin.
On elimine successivement toutes les inconnues de x jusqu`a trouver un
syst`eme sans inconnues, dont la faisabilite se teste par inspection.
Notations : x
(n)
le vecteur x ampute de ses n premi`eres composantes.
x
(0)
= x.
A
(n)
x
(n)
+b
(n)
0 le syst`eme obtenu apr`es lelimination de n variables.
Test de Fourier-Motzkin
Soit `a eliminer x
1
. On reparti 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
, linconnue x
1
est dej`a eliminee.
Une contrainte k I
+
donne une borne inferieure de x
1
:
x
1

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

donne une borne superieure de x


1
:
x
1

b
k
+a
k,2
x
2
+. . .
a
k1
;
Pour eliminer x
1
, il sut decrire que chaque borne inferieure est inferieure
`a chaque borne superieure.
On poursuit jusqu`a elimination de toutes les variables. Au bout de n
etapes, le syst`eme est de la forme : b
(n)
0, quil sut dinspecter.
Correction
On dit que le test reussit si b
(n)
0, et quil echoue dans le cas contraire.
Theor`eme 1.6. Si le test echoue, alors le syst`eme initial est infaisable.
Demonstration. Supposons a contrario que le syst`eme initial a une solution u.
Les transformations eectuees sur les contraintes sont de simples manipulations
algebriques valides ; on en conclu que les intervalles obtenus en comparant une
borne inferieure et une borne superieure sont non vides, et donc que le syst`eme
A
(1)
x(1) +b(1) 0 est faisable.
En poursuivant lelimination, on en arrive au syst`eme dordre n 1, qui na
plus quune seule inconnue x
n
et qui est egalement faisable. Mais le fait que lun
des b
(n)
< 0 indique que lun des intervalles de variation de x
n
est vide, une
contradiction.
Completude
Theor`eme 1.7. Si le test reussit, le syst`eme initial est faisable.
Demonstration. 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
(n1)
x
(n1)
+b
(n1)
0.
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
1.3 Programmation lineaire 17
Le fait que les b
(n)
0 garantit que lintervalle des valeurs possibles de x
n
est non vide. On en choisit une arbitrairement et on la reporte dans le syst`eme
dordre n 2. Ce syst`eme na plus quune inconnue, x
n1
, dont lintervalle des
valeurs possibles est non vide. On poursuit ainsi jusqu`a avoir donne une valeur
`a toutes les composantes de x.
Remarques
Si on sastreint `a choisir `a chaque pas la solution la plus petite, i.e. la
borne inferieure de lintervalle de variation, on obtient le minimum lexico-
graphique de P, les inconnues etant prises dans lordre x
n
, . . . , x
1
.
Il nest pas obligatoire de poursuive lelimination jusqu`a la n. Si on
sarrete `a letape p, les variables de x
(p)
deviennent des param`etres. Les
conditions b
(p)
0 delimitent les valeurs des param`etres pour lesquelles
le syst`eme est faisable. Enn, le procede de selection ci-dessus donne la
valeur parametrique de la solution.
Lalgorithme peut sexecuter 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 lautre par a
j1
> 0 et en additionnant.
Complexite
On evalue dabord une borne du nombre de contraintes `a letape p, m
p
,
soit m
p
= x
0
+x
+
x
+
.
Comme x
0
+x
+
+x

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

= m
p1
, `a condition que m
p1
> 4.
Pour le cas le pire, on a donc la recurrence m
p
= (
m
p1
2
)
2
dont la solution
est m
n
= (
m
2
)
2
n
. Cest aussi une borne du travail `a eectuer.
La complexite 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 coecients nuls).
Enn, il est possible que lalgorithme se termine prematurement.
Lalgorithme de Fourier-Motzkin est tr`es simple `a programmer, mais il
doit etre reserve `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];
Lexecution de ces deux boucles modie-t-elle le terme a[i][i] (le pivot) ?
Reponse : le syst`eme :
i + 1 j < n,
i + 1 k < n,
i = j,
i = k,
est il faisable ?
Distribue 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 lexecution du test, garder la trace des combinaisons
eectuees. On voit alors que chaque contrainte du syst`eme dordre p est
une combinaison lineaire `a coecients positifs dau plus deux contraintes
du syst`eme dordre p 1.
En generalisant, toute contrainte gurant dans lalgorithme est combi-
naison lineaire positive de lignes de Ax + b. Soit y 0 le vecteur des
coecients.
Comme dans le syst`eme dordre n toutes les variables ont ete eliminees,
on en deduit yA = 0.
Lemme de Farkas
Theor`eme 1.8.
(x : Ax +b 0) (y : y 0, yA = 0 yb 0).
Demonstration. 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 execute lalgorithme de Fourier-Motzkin etendu. On
en tire un y 0 tel que yA = 0. On en deduit que yb 0, ce qui veut dire que
le test a reussi et quil est possible de construire un u tel que Au +b 0.
Programmation lineaire
On adjoint au syst`eme Ax + b 0 la contrainte z c.x, o` u z est une
nouvelle variable.
On execute lalgorithme de Fourier-Motzkin en prenant soin deliminer z
en dernier.
Si lalgorithme echoue, le probl`eme nest pas faisable.
Sinon, la valeur de z dans la solution donne la valeur minimum de c.x.
Le reste de la solution caracterise un point ou ce minimum est atteint.
Lemme de Farkas ane
Theor`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))).
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
1.3 Programmation lineaire 19
Demonstration. Limplication de droite `a gauche est evidente. De gauche `a
droite, lhypoth`ese revient `a dire que le syst`eme Ax +b 0, cx +d < 0 na pas
de solution. Dapr`es le lemme de Farkas, ceci implique lexistence 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 na 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
,
do` u la conclusion du theor`eme.
Cones
Un cone ( est un poly`edre convexe dont les contraintes sont de la forme
Ax 0.
Propriete fondamentale : u, v (, , 0 u +v (.
Theor`eme 1.10. Lobjet

i
u
i
[
i
0 est un cone.
Demonstration. Il sut de considerer le syst`eme :
x

i
u
i
= 0,

i
0.
et dutiliser la methode de Fourier-Motzkin pour eliminer les
i
. Ce qui reste est
un syst`eme de contraintes lineaires en x, qui denissent bien un poly`edre.
Reciproque
Theor`eme 1.11. Tout cone ( = x [ Ax 0 est engendre par un syst`eme
ni de rayons u
1
, . . . , u
p
.
Demonstration. On consid`ere lobjet (

= yA [ y 0. C

est un cone dont


on peut determiner 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 deduit AB 0 ce qui signie 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 dautre termes, pour tout c tel que cB 0, on a cx 0. On peut
donc appliquer le lemme de Farkas ane : il existe 0 tel que x = B. ( est
donc engendre par les vecteurs colonnes de B.
Theor`eme de Minkovsky
Theor`eme 1.12. Tout poly`edre T peut etre mis sous la forme : T = Q( H,
o` u Q est un polytope (poly`edre borne), ( est un cone et H un sous espace lineaire.
Demonstration. Soit T = x [ Ax +b 0. On consid`ere le cone T = x, z [ Ax +zb 0
o` u z est une nouvelle variable. Il est clair que T est l intersection de T avec
lhyperplan z = 1. On construit les rayons de T. Ceux dont la coordonnees z
nest pas nulle engendrent Q. Les rayons dont loppose est egalement un rayon
engendrent H. Enn, ceux qui restent engendrent (.
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
20 Optimisation sans contraintes
On peut ecrire :
T =
_

.u +

.v +

.w

= 1, 0, 0
_
Les u sont les sommets, les v les rayons et les w les lignes.
Programmation lineaire, bis
Le minimum de c.x sous la contrainte x T = Q+ ( + H est atteint en
lun des sommets de Q `a condition que H soit vide et que c (.
En eet on peut ecrire :
c.x =

c.u +

c.v +

c.w.
Puisque nest pas contraint, on peut faire decrotre c.x a volonte sil
existe un w. Il en est de meme sil existe un v tel que c.v < 0, puisque
0. Si H est vide, le dernier terme nexiste 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 lexpression de x, u
1
ait un coecient
1
non nul. Le
point x
1
(u
1
u
0
) est dans T et sa fonction objectif a diminue. On
en deduit que la solution dun programme lineaire est lun quelconque des
sommets de Q o` u c.x atteint son minimum.
Critique
La methode ci-dessus est inecace car il faut utiliser Fourier-Motzkin pour
trouver la decomposition de T, et aussi parce que le nombre de sommets
peut etre tr`es grand (de lordre de C
n
m
, le coecient du binome).
Il existe un algorithme plus ecaces que Fourier-Motzkin pour decomposer
un poly`edre, lalgorithme de Chernikova, mais le nombre de sommets ne
change pas.
Dualite
Theor`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 lensemble de gauche (resp. de


droite). On a :
c.x

= y

Ax

.b.
Il en resulte 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 bAx 0 on sait que c.x

c.x
0, on peut donc appliquer le lemme de Farkas ane :

0
, 0 : x : c.x

c.x =
0
+(b Ax).
On en deduit c.x

=
0
+ b et c = A. Il en resulte que fait partie de
lensemble de droite :
r b = c.x


0
.
On en deduit = r.
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
1.3 Programmation lineaire 21
Analyse de sensibilite
optimum
cone des
directions
admissibles
Variation de (b) = max cx [ Ax b avec b ?
Par dualite, (b) = min yb [ y 0, yA = c. Or
ce poly`edre ne depend pas de b. Interpretation
geometrique : aussi longtemps que b reste dans le
cone des directions admissibles, loptimum y

ne
change pas. Donc :
(b) = y

.b.
Pour en savoir plus, il faut faire de la program-
mation lineaire parametrique.
Complementarite
Theor`eme 1.14.
j : y
j
.(b
j
A
j
.x) = 0.
Demonstration.
y

.(b A.x

) = y

.b y

.A.x

=
= c.x

.A.x

= (c y

A).x

= 0.
Mais chaque terme du produit scalaire y

.(bA.x

) est positif, donc si la somme


est nulle chaque terme est nul.
Dualite generalisee
Il existe une tr`es grande variete de theor`emes de dualite, 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 precise.
Algorithme du Simplexe
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
22 Optimisation sans contraintes
c
Trouver le point le plus bas dun vase.
Fourier, 1828.
Formalisation par Danzig, 1950.
Methodes externes, methodes internes
c
c
optimum
Methodes internes : il faut connatre un point faisable. On peut arreter la
recherche avant loptimum.
Methodes externes : il ny a pas besoin de connatre un point faisable.
Ordre lexicographique
Denition :
x y = k : x
1, ,k1
= y
1, ,k1
, x
k
< y
k
.
est un ordre total.
Lordre par composantes nest pas total.
c.x < c.y nest pas un ordre.
Do` u linteret 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 degenerescence.
Algorithme du simplexe externe ou dual
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
1.3 Programmation lineaire 23
Resoudre :
min

x
x 0
Ax +b 0
Tailles : x : n, A : mn, b : m.
Generalisation :
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 demarrage et le restent
tout au long de lalgorithme.
z est un sous-ensemble de x, y. La condition z 0 est donc toujours
veriee.
Dune etape `a lautre, t crot dans lordre lexicographique.
Ces invariants sont veries au debut de lalgorithme.
Cas de base
Si t 0, on a trouve la solution. Il sut de faire z = 0, ce qui satisfait les
contraintes. On a x = t
1, ,n
.
De plus, cest 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 na 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
crot selon lordre 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 negatif, il ny a pas de probl`eme.
Sinon le nouveau vecteur colonne est egal, `a un coecient 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 reduit S
j
/S
ij
soit le plus petit possible.
Un tel choix est toujours possible sauf si on est dans le cas dun syst`eme
infaisable.
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
24 Optimisation sans contraintes
Convergence
Observer que letat de lalgorithme est enti`erement determine 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 ny a donc que C
n
m+n
combinaisons
possibles.
Lalgorithme ne peut pas boucler, car t crot dans lordre lexicographique.
Comme C
n
m+n
nest pas un polynome en n et m, lalgorithme nest pas
polynomial.
On peut construire des cas pathologiques qui demandent un temps expo-
nentiel.
Mais en pratique (et en probabilite) le nombre doperations est en O(n
2
(n+
m)).
Questions numeriques
Du point de vue numerique, lalgorithme du Simplexe est analogue `a la
methode de Gauss, avec une r`egle particuli`ere pour le choix du pivot.
Si lon connat la matrice des inconnues de base, lalgorithme ne fait quin-
verser celle-ci, tout en appliquant les memes transformations aux incon-
nues hors base.
Les resultats sont donc donnes par des formules de Cramer.
On peut faire les calculs en virgule ottante. Il y a alors accumulation der-
reurs darrondi, qui peuvent faire que la solution nale nest pas faisable
(en particulier pour les contraintes saturees).
Il faut alors developper des methodes de correction. En general la solution
est faisable, mais loptimalite nest 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 determinants de Cramer. On peut donc
les borner `a laide de linegalite 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 resulte que la taille des nombres `a manipuler est bornee par n fois la
taille du plus grand element de A. Cette borne est rarement atteinte.
Il faut utiliser des arithmetiques en precision 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-
neairement independantes : on peut eliminer les lignes redondantes.
A est de dimension mn avec necessairement m < n.
Dans le cas contraire, le syst`eme Ax = b aurait au plus une
solution et le probl`eme serait trivial.
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
1.3 Programmation lineaire 25
Base
Une base est une matrice carree 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 meme x en x
B
, x
N
et c en c
B
, c
N
.
La solution associee `a une base B est le vecteur (B
1
b, 0)
T
. Il satisfait
evidemment `a la contrainte Ax = b.
La base B est realisable si et seulement si la solution correspondante sa-
tisfait egalement `a la contrainte x 0, cest-`a-dire si x = B
1
b 0.
A une base realisable correspond une valeur de lobjectif, c
B
.B
1
b.
Est-il possible dameliorer cet objectif en faisant varier x
N
?
Recherche de loptimum
Si x
N
nest 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 reduits.
Si x
i
fait partie de x
n
, comme il est nul on ne peut que laugmenter pour
que la solution reste faisable. Ceci fait decrotre f(x) `a condition que
c
i
< 0.
Si tous les co uts reduits sont positifs, on a trouve loptimum.
Sinon, on choisit un x
i
dont le co ut reduit est negatif (par exemple celui
dont le co ut reduit est minimum).
Puisque on fait crotre 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 negatives. Alors
x
i
nest pas borne, et le minimum est .
Sinon, `a chaque composante B
ik
> 0 correspond la borne x
i
x
k
/B
ik
.
Soit j lindice 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 inferieure `a celle du point de depart.
La base qui correspond au nouveau point courant sobtient en remplacant
dans b le colonne i par la colonne j.
On poursuit lalgorithme en inversant la nouvelle base et en calculant la
nouvelle solution et les nouveaux co uts reduits.
Lalgorithme se termine si `a chaque pas la valeur de lobjectif decrot
strictement.
En eet il ny a que C
m
n
bases possibles et la condition de de-
croissance stricte empeche tout bouclage.
Cependant lalgorithme peut boucler en cas de degenerescence (il semble
que ce soit tr`es rare).
Comme pour lalgorithme dual, on peut mener les calculs de facon incre-
mentale (il sut dun seul pivot de Gauss pour inverser la nouvelle base).
Recherche du point faisable initial
Il sagit de trouver un point dans le poly`edre P = x [ x 0, Ax b.
Soit 1 le vecteur dont tous les elements sont egaux `a 1, et soit y un nouveau
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
26 Optimisation sans contraintes
vecteur de meme 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 lalgorithme precedent.
Si y

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

P.
Reciproquement, si x

P, alors (0, x

) est faisable pour le probl`eme


augmente, donc le minimum est nul. Si inversement le minimum nest pas
nul, P est vide.
Distribue 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
Resoudre :
min f(x),
g
i
(x) 0, i = 1, . . . , n
x R
n
Lensemble des points faisables est
x R
n
[ g
i
(x) 0, i = 1, . . . n. Les fonctions g
sont les contraintes.
La programmation lineaire est le cas particulier
o` u f et les g
i
sont lineaires. On obtient des pro-
bl`emes plus ou moins diciles suivant que lun
ou lautre ou les deux de ces elements sont non
lineaires (resp. non convexes).
Generalisation
Certaines contraintes peuvent etre diciles `a mettre sous la forme
g
i
(x) 0.
Exemple : on veut que x soit entier (i.e. `a coordonnees enti`eres).
On remplace la derni`ere contrainte par :
x S R
n
.
2.1 Conditions de Kuhn et Tucker
Caracterisation de loptimum
On suppose les fonctions f et g
i
continues et `a derivees continues.
Loptimum x

peut etre `a linterieur de F. Dans ce cas f(x

) = 0 .
Loptimum peut etre sur les fronti`eres de F. Dans ce cas g
i
(x

) = 0 pour un
certain nombres de contraintes (les contraintes saturees) et f(x

) nest
pas necessairement nul. On note I 1, . . . , n lensemble des indices des
contraintes saturees.
28 Optimisation sous contraintes
En particulier, si les contraintes sont toutes des contraintes degalite, lin-
terieur de F est vide et lon est toujours dans le dernier cas (dit de La-
grange).
En programmation lineaire, f(x) = c.x, f = c nest jamais nul (ou bien
le probl`eme est trivial), donc loptimum 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 dadmissibilite peut secrire :
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 cone
C = d [ d.g
i
(x

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

) = 0.
La reciproque est fausse, sauf dans quelques cas particuliers :
Les fonctions g
i
sont lineaires ou convexes ;
Les gradients sont lineairement independants.
Si C est lensemble des directions admissibles, alors une condition neces-
saire doptimalite est :
d C f(x

+d) f(x

) 0,
d C d.f(x

) 0.
Conditions de Kuhn et Tucker
Dapr`es le lemme de Farkas, il existe des
i
0, i I tels que :
d : d.

iI

i
.g
i
(x) = d.f(x

),
f(x

iI

i
g
i
(x) = 0.
Si on pose
i
= 0 pour les contraintes non saturees, on peut etendre la
sommation `a toutes les valeurs de i. Une condition necessaire 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.
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
2.2 Une methode directe 29
Conditions de Lagrange
Un contrainte degalite g
i
= 0 peut se representer par deux contraintes
dinegalite 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 degalite correspond un multiplicateur non contraint en signe.
Si toutes les contraintes sont des egalites, les multiplicateurs peuvent etre
de signe arbitraire. Ils prennent le nom de multiplicateurs de Lagrange.
Dans ce cas particulier, toutes les contraintes doivent etre saturees.
2.2 Une methode directe
Methode des plans secants
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 lon peut supposer f lineaire. 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 facon iterative. A letape k, on suppose que lon connat
un poly`edre convexe Q
(k)
tel que :
Q
(k)
F = x [ g(x) 0 .
On resout le programme lineaire :
min f(x),
x Q
(k)
.
Soit x
(k)
le point obtenu.
Si x
(k)
F, cest le minimum cherche. 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).
Demonstration. Pour simplier on va supposer que x est un scalaire. Soit par
exemple b > a. Par denition, f(x)f(a) (xa)
f(b)f(a)
ba
. En faisant tendre x
vers a on en deduit f

(a)
f(b)f(a)
ba
, ce qui nest autre que le resultat cherche.
La demonstration est analogue pour b < a.
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
30 Optimisation sous contraintes
Lemme 2.2. Q
(k+1)
F.
Demonstration. Soit en eet 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
Demonstration. Il sut dobserver 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, cest le minimum cherche.
Demonstration. En eet, dune part x
(k)
F, et dautre part,
x F x Q
(k)
f(x) f(x
(k)
).

Theor`eme 2.5. Si F est borne, tout point daccumulation de la suite x


(k)
est
un optimum.
Demonstration. Soit y

un point daccumulation, et soit y


(k)
une suite extraite
de x

et convergeant vers y

. Montrons dabord que y

F. On supposera pour
xer les idees que `a chaque pas, la contrainte utilisee pour construire une coupe
est celle qui est la moins satisfaite, cest `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

susamment
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.

Demonstration. Il est facile de voir que la distance [[y


[k

)
y
(k)
[[, k

> k ne peut
etre inferieure `a
|g
i
(y
[k)
|
|g
i
(y
[k)
|
, ce qui contredit le fait que y

est limite des y


(k)
.
Supposons maintenant quil existe dans F un autre point y

tel que f(y

) <
f(y

). Comme y

Q
(k)
k, il sen suit que lalgorithme de programmation
lineaire devrait toujours construire un point x
(k)
tel que f(x
(k)
) f(y

). Par
suite de la continuite de f, toute limite x

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

) f(y

) ce qui est contradictoire.


2.3 Methodes duales
Methodes de penalites
Principe : au lieu dexclure les points qui violent les contraintes, ajouter `a
la fonction economique une penalite dautant plus elevee que la contrainte
est moins respectee. Si la fonction de penalite est reguli`ere, on peut utiliser
les methodes doptimisation sans contrainte.
En general, la penalite depend dun param`etre qui permet de regler son
importance. Quand la penalite devient tr`es grande devant la fonction ob-
jectif, on tend vers loptimum sous contrainte. Mais la fonction `a optimiser
devient de plus en plus mal conditionnee.
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
2.3 Methodes duales 31
Deux varietes :
La fonction de penalite est nulle dans le domaine faisable. Loptimum
penalise nest pas faisable. Cest une methode exterieure.
La fonction de penalite devient innie quand on sort du domaine fai-
sable. Loptimum est faisable, mais la methode a besoin dun point
faisable initial.
Methodes exterieures
On consid`ere la fonction h(x) egale `a 0 si x 0 et `a x
2
sinon. Il est facile
de voir quelle est continue et `a derive 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 linni.
On note H(x) =

n
i=1
h(g
i
(x)) et x
k
la solution de P
k
.
Convergence
Theor`eme 2.6. Si f est continue, si lensemble des points faisables est ferme
et si soit f(x) soit H(x) tend vers linni quand x tend vers linni, alors tout
point daccumulation 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 decroissante.
Demonstration. 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 penalite est


nulle. On a donc lencadrement
f(x
k
)
k
f(x

).

Lemme 2.8. Les H(x


k
) forment une suite decroissante.
Demonstration. Comme chaque x
k
est la solution dun 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 simpliant :
(S
k
S
k+1
)(H(x
k+1
) H(x
k
)) 0.
Comme le premier terme est negatif, lautre lest aussi.
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
32 Optimisation sous contraintes
Les x
k
appartiennent `a un ensemble borne, soit parce que f(x
k
) f(x

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

, L qui converge vers x.


Par continuite, 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 continuite H( x) =


0.
Donc x est un point faisable, donc f( x) f(x

), donc f( x) = f(x

) et x
est un optimum.
Methodes interieures
On prend comme fonction de penalite une fonction qui tend vers linni
au voisinage de 0, par exemple h(x) = 1/x.
On minimise f(x) +R

n
i=1
h(g
i
(x)).
Dans les memes conditions que ci-dessus, on montre que loptimum du
probl`eme P
R
tend vers loptimum de P quand R tend vers 0.
Toutes les solutions intermediaires sont faisables, mais il faut disposer dun
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 laide de la derni`ere contrainte et on applique la methode
des penalites :
max xy +n x y +S(n x y)
2
.
On utilise un syst`eme de calcul algebrique pour achever les calculs.
2.4 Fonction de Lagrange, point-col
Fonction de Lagrange, point-col
Soit `a resoudre :
min f(x),
g
i
(x) 0, i = 1, . . . , n
x S R
n
La fonction de Lagrange associee est :
L(x, ) = f(x) +.g(x), 0.
g est le vecteur dont les composantes sont les g
i
.
Distribue 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

, ).
Caracterisation dun point-col :
L(x

) = min
xS
L(x,

),
g(x

) 0,

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

) un point-col. La premi`ere propriete est une consequence directe


de la denition.
La deuxi`eme propriete entrane :
f(x

) +

.g(x

) f(x

) +.g(x

),
(

).g(x

) 0.
Sil existait un g
i
(x

) positif, il surait de prendre le


i
correspondant susam-
ment grand pour violer cette inegalite. Donc i : g
i
(x

) 0.
Pour = 0 on trouve :

.g(x

) 0.
Mais les deux termes du produit sont non negatifs, donc le produit est nul.
Preuve, reciproque
La premi`ere caracteristique entrane directement la premi`ere propriete du
point-col.
On deduit de la troisi`eme caracteristique que L(x

) = f(x

).
Enn :
L(x

, ) = f(x

) +.g(x

) f(x

) = L(x

),
puisque g(x

) 0.
Interet
Theor`eme 2.9. Si (x

) est un point-col, alors x

est un minimum global.


Demonstration. Dapr`es la denition, x

S et g(x

) 0, donc x

est faisable.
Dautre 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 nont pas de point-col.
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
34 Optimisation sous contraintes
Fonction de Lagrange et penalites
La fonction de Lagrange est une fonction de penalite.
L(x, ) = f(x) +.g(x), 0.
En eet, dans la region infaisable, g(x) > 0, donc le second terme augmente
la valeur de L, alors quon recherche un minimum.
Toutefois, ce terme est negatif dans la region faisable, ce qui diminuerai
articiellement la valeur du minimum, si lon navait pas la contrainte
i :
i
.g
i
(x

) = 0.
Comme les methodes de penalite, lemploi de la fonction de Lagrange
permet de remplacer un probl`eme avec contraintes par un probl`eme sans
contrainte.
Une mauvaise idee
Maximiser L(x, ) par rapport `a 0 pour x xe. Soit g(x) le resultat.
Minimiser ensuite g(x) sans contraintes.
Il est facile de trouver le maximum.
Si g
i
(x) > 0, il sut de faire tendre
i
pour obtenir un maximum
inni.
Sinon, le maximum est egal `a f(x).
Ceci revient donc `a etendre f en une fonction discontinue non derivable,
ce qui ne se prete pas `a loptimisation.
Une bonne idee
Minimiser w() = min L(x, ) sans contrainte. Maximiser w() sous la
contrainte 0.
Lemme 2.10. w() est une fonction concave.
Demonstration. Soit
1
,
2
deux valeurs de , et deux nombres positifs tels
que + = 1, et x un point arbitraire. Par denition 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 propriete vraie partout setend au minimum w(
1
+
2
).
Application `a la programmation lineaire
Il ne faut cependant pas croire que loptimisation de w est toujours sans
contrainte. Soit par exemple le programme lineaire :
min c.x,
Ax b 0,
x 0.
La fonction de Lagrange associee est :
L(x, ) = c.x (Ax b) x = (c A).x +b.
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
2.4 Fonction de Lagrange, point-col 35
Il est facile de voir que si cA nest pas nul, la valeur du minimum est
. Sinon, cest b. Comme c A = 0 est equivalent `a c A 0,
on voit que lon est amene `a resoudre :
max .b,
c A 0,
0.
Cest le dual du probl`eme original!
Et sil ny a pas de point col ?
Theor`eme 2.11. Soit x

la solution du probl`eme avec contraintes. On a :


max
0
w() f(x

).
Demonstration. 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 propriete vraie pour tout setend au maximum.
La solution du probl`eme dual fournit une borne inferieure de la solution
du primal.
Il y a saut de dualite quand les deux solutions ne sont pas egales.
w est derivable `a loptimum, si et seulement si le saut de dualite est nul.
Generation de colonnes
Si lensemble S = x
1
, . . . , x
n
est ni, le probl`eme secrit :
max
0
n
min
i=1
f(x
i
) +g(x
i
)
se ram`ene `a un probl`eme de programmation lineaire :
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 inni, on suppose que lon a dej`a construit les points x
1
, . . . , x
n
.
On resout le probl`eme lineaire ci-dessus.
On determine le point x
n+1
comme solution de :
min
xS
L(x,
n
) = f(x) +
n
g(x)
par une methode doptimisation 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

).
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
36 Optimisation sous contraintes
Demonstration. Puisque x

S, w(
n
) f(x

) + g(x

) f(x

) puisque que
x

est faisable.
Lemme 2.13. f(x

) z
n
.
Demonstration. Il est evident que f(x

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

Lemme 2.14. z
n+1
z
n
.
Demonstration. Tout point faisable pour P(n + 1) est faisable pour P(n).
Convergence
On a lencadrement w(
n
) f(x

) z
n
.
Comme la suite z
n
est decroissante, elle converge.
Mais la convergence de w(
n
) vers f(x

) impliquerait que le saut de dualite


est nul, ce qui nest pas toujours le cas.
2.5 Optimisation combinatoire
Optimisation combinatoire
Probl`eme doptimisation sous contraintes o` u lensemble 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 lensemble discret
des points faisables.
En general, S est produit cartesien densembles plus petits, et sa taille est
le produit des tailles de ces petits ensembles (do` 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 independants en general.
Exemple
On consid`ere un ordinateur sur lequel on doit executer t algorithmes en-
chanes A
i
, i = 1, . . . , t. Chaque algorithme a pour donnees les resultats
de lalgorithme precedent.
Pour implementer chaque algorithme, on doit choisir une structure pour
ses donnees. On suppose quil y a s structures possibles, S
k
, k = 1, . . . , s
et que le temps dexecution de lalgorithme depend de la structure choisie.
Par exemple, une matrice peut etre rangee par ligne ou par colonne, et, par
suite des eets de cache, le temps dexecution du produit matriciel varie
suivant la structure choisie. On supposera quun algorithme ne modie
pas la structure des ses donnees. On note T
ik
le temps dexecution de
lalgorithme i quand les donnees on la structure S
k
.
On suppose quil est possible de modier les structure de donnees (par
exemple, de transposer une matrice). On note
k
le temps necessaire pour
passer de la structure S
k
`a la structure S

. Remarquer que
kk
= 0.
Distribue 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 xes par le cahier des charges.
Trouver la sequence de restructurations donnant le temps total minimum.
Quelques methodes de solution
Une heuristique gloutonne.
On remarque que souvent
kl
T
ik
. Pour lexemple 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 facon que T
ik
j
soit minimum, et on rajoute des
redistributions si necessaire.
Programmation dynamique. On remarque que le probl`eme a une structure
analogue `a celle dun probl`eme de plus court chemin.
On note P
n
(k) le probl`eme doptimiser le programme analogue au pro-
gramme initial, mais ou on sarrete juste apr`es la redistribution R
n
avec
une structure de donnees S
k
. Le probl`eme initial est P
t
(k
t+1
). Soit
n
(k)
le meilleur temps dexecution de P
n
(k). On a la relation de recurrence :

n
(k) = min

n1
() +T
n
+
k
,

0
(k) =
k
0
k
.
On peut calculer toutes les valeurs de
nk
`a laide de cette recurrence, 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 donnees `a
letape 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 letape i `a i + 1 est donne par
k
tel que
X
ik
= 1 et X
(i+1)
= 1, ce qui peut secrire :
T
r
=
t

i=0
s

k=1
s

=1
X
ik
X
(i+1)

k
.
Il sagit de minimiser la somme T
c
+T
r
sous les contraintes (2.1) et X
ik

0, 1. Cest un probl`eme de programmation quadratique en nombres en-
tiers.
Programmation lineaire en entiers
Denition.
min

x,
Ax +b 0,
x N.
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
38 Optimisation sous contraintes
Noter que x N implique x 0. Il sagit donc de lanalogue exact du
probl`eme resolu par lalgorithme dual, `a ceci pr`es quil y a une contrainte
dintegrite en plus.
On suppose en general que A et b ont des coecients entiers.
2.5.1 coque enti`ere
Coque enti`ere
Soit S un ensemble de R
n
. La coque enti`ere de S, notee

S est la coque
convexe de lensemble des points entiers de S.
x Z
n
S x

S,
x, y

S, , 0, + = 1 x +y

S.
Proprietes 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.
Demonstration. Un point de

P est combinaison convexe dun 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.
Caracterisation de la solution enti`ere
Theor`eme 2.18. La coque enti`ere dun poly`edre deni par Ax +b 0, avec A
enti`ere, est un poly`edre.
Demonstration. Soit P = Q+C un poly`edre, o` u Q est borne et C un cone. On
peut supposer que les vecteurs generateurs v
i
de C sont entiers, et il est facile
de voir que

C = C.
Soit B =

i
v
i
[ 0
i
1. Il est clair que B est un poly`edre borne
inclus dans C. Admettons que

P =

Q+B + C (ce sera montre par les deux
lemmes suivants). Or Q + B est borne, et pour un poly`edre borne le theor`eme
est evident, puisque la conque enti`ere est enveloppe convexe de ses points entiers
qui sont en nombre nis.
Lemme 2.19.

P

Q+B +C.
Demonstration. Dapr`es un lemme ci-dessus, il sut de considerer un point x
entier de P. On peut lecrire x = q+c, q Q, c C. Il en resulte c =

i
v
i
. On
pose c

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 = xc

est entier, donc que q+b



Q+B.
Lemme 2.20.

Q+B +C

P.
Demonstration. Puisque Q+B P,

Q+B +C

P +C =

P +

C =

P +C =

P.
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
2.5 Optimisation combinatoire 39
Minimum entier
Lemme 2.21. Le minimum entier dun poly`edre est le minimum rationnel de
sa coque enti`ere.
Demonstration. Le minimum entier x

appartient `a la coque enti`ere. Supposons


quil existe dans la coque enti`ere un point x

. Ce point est necessairement


`a coordonnees 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
superieurs dans lordre lexicographique, ce qui est impossible.
Le probl`eme sera resolu si on sait construire la coque enti`ere.
Mais la complexite 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 anes qui excluent une partie de P mais
aucun point de

P.
2.5.2 Algorithme de Gomory
Coupe de Gomory
Construction dune coupe : soit
a/D.x +b/D 0
une des contraintes du probl`eme. D est le denominateur commun des co-
ecients de x et du terme constant.
Par construction de lalgorithme dual, la valeur de cette contrainte est
lune des variables decart 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 necessairement positif, do` 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 lalgorithme du Simplexe jusqu`a obtenir t 0.
Si lalgorithme echoue, il ny a pas de solution enti`ere.
Si les composantes 1 `a n de t sont enti`eres, cest la solution.
Sinon, on choisit le premier t
i
non entier, on construit une coupe comme
ci-dessus `a laide de la contrainte S
i
z +t
i
0, et on lajoute au tableau.
Le nouveau tableau nest pas faisable : le terme constant de la coupe est
negatif. On reprend lalgorithme jusqu`a terminaison.
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
40 Optimisation sous contraintes
Preuve
Theor`eme 2.22. Si lalgorithme se termine, ou bien on a trouve la solution
enti`ere, ou bien le probl`eme na pas de solution.
Demonstration. 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 quil 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 quil existe une solution.
Demonstration. 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 sut 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 na 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
lordre lexicographique.
Demonstration.

Evident, puisque P
n+1
P
n
.
A une certaine etape de lalgorithme, soit

j
s
j
D
x
j
+
t
D
0 la ligne qui
va fournir la coupe.
A letape qui suit, lalgorithme du Simplexe execute un pivot. Soit x
j
la
variable eliminee.
Soit :

j
s

j
D
x
j
+
t

D
0 la ligne apr`es lexecution du pivot.
Lemme 2.25. Il existe un nombre entier Q tel que
t
D
< Q
t

D
.
Demonstration. 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 defaut 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 sut donc de prendre Q = q + 1. Dautre
part t/D = (q + 1) (D t mod D)/D < q + 1. Linegalite est stricte puisque
t nest pas entier.
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
2.5 Optimisation combinatoire 41
A un instant donne du deroulement de lalgorithme, on dit quune ligne est
active si lors dune operation ulterieure, la valeur de son second membre
changera.
Lemme 2.26. La premi`ere ligne ne peut etre active quun nombre ni de fois.
Demonstration. Soit
1
= t
1
|. On a lencadrement
1
1 < t
1

1
. Considerons
levolution 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 dune unite. Si la source est une autre ligne, cest que
t
1
est entier. Une autre ligne est source de la coupe, et si la premi`ere ligne est
active, cest que S
1j
est non nul. La valeur de t
1
augmente. Quelle prenne une
valeur enti`ere ou fractionnaire, la valeur de
1
augmente au moins dune unite.
Or t
1
donc
1
sont bornes par la solution optimale x

1
.
Theor`eme 2.27. Lalgorithme des coupes de Gomory converge.
Demonstration. Nous avons vu que la premi`ere ligne ne peut etre active quun
nombre ni de fois. Apr`es la derni`ere modication, tout se passe comme si le
probl`eme `a resoudre avait une contrainte et une inconnue de moins (methode
de deation). On peut donc prouver que la deuxi`eme ligne nest active quun
nombre ni de fois. De proche en proche, on voit que lalgorithme se termine.
Complexite
Comme il faut pouvoir distinguer entre nombres entiers et nombres frac-
tionnaires, les calculs doivent etre menes en arithmetique exacte.
Les nombres `a manipuler sont des determinants de sous-matrices nn de
la matrice des contraintes. Leur taille (nombre de bits) est donc bornee
par n fois le nombre de bits du plus grand coecient.
Le nombre maximum de coupes est borne par le nombre de coupes ne-
cessaires pour caracteriser la coque enti`ere de lensemble des solutions.
Resultat de Chvatal.
2.5.3 Techniques de codage
Variables booleennes
On peut coder un choix entre n possibilites `a laide 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 associe une quantite a
i
, la quantite associee `a un jeu
de variables est

n
i=1
X
i
t
i
.
On peut considerer les X
i
comme des booleens et coder les operateurs :
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.
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
42 Optimisation sous contraintes
Probl`emes de graphe
On peut representer un graphe de nombreuses facons : matrice dincidence,
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 larc i j.
Contrainte : X
ij
Z
ij
.
Loi de Kircho :

i
X
ij
=

k
X
jk
, pour tout j excepte le debut et la n
du chemin.
Chemin simple : ne passe quune fois par chaque sommet.

i
X
ij
1.
Pour le debut,

j
X
ij
= 1, et pour la n

i
X
ij
= 1.
Minimiser la somme

ij
X
ij
assure que le chemin na pas de boucles
isolees.
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 bornes, alors pour M susamment grand, le poly`edre :
P Q = z, x [ Ax +b +Mz 0, Cx +d +M(1 z) 0
est lunion disjointe de P et Q.
On peut mener lexploration sur P Q en une seule fois.
M doit etre choisi de telle facon que x P entrane Cx + d + M 0 et
reciproquement.
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
Chapitre 3
Meta-heuristiques
3.1 Separation et evaluation ou Branch-and-Bound
3.1.1 Algorithme
Separation et evaluation
Plus communement appelee 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 sarrange pour diviser le probl`eme en deux (ou plus) sous-probl`emes,
par exemple en introduisant une contrainte supplementaire, qui peut etre
satisfaite ou non.
Le minimum peut appartenir `a lun quelconque des sous-probl`emes.
Si lon peut prouver que lun des sous probl`emes est infaisable, on lelimine.
Si lun 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 inferieure de la solution dun sous-probl`eme.
Si elle est superieure `a la meilleure solution dej`a obtenue, on elimine le
sous-probl`eme.
Dans le cas restant, on subdivise de nouveau le sous-probl`eme.
Variables bivalentes
La methode est particuli`erement bien adaptee `a la resolution de probl`emes
lineaires en variables bivalentes : les inconnues ne peuvent prendre que les
valeurs 0 ou 1.
Pour separer un probl`eme en deux, on choisit lune des inconnues, par
exemple x
1
, et on impose les contraintes x
1
= 0 ou x
1
= 1.
Pour obtenir une borne superieure, on resout le probl`eme en continu.
Un sous-probl`emes est resolu si toutes les variables sont xees ou si la
solution continue est enti`ere.
44 Meta-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 selection de 4
objets de volumes respectifs 4, 3, 3, 1.
Les utilites de ces objets sont respectivement de 1, 2, 3 et 4.
Trouver la combinaison dutilite maximum.
Resolution
On value les inconnues dans lordre 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 lordre x
4
, . . . , x
1
, la resolution est plus rapide.
Meta-algorithme
On doit dabord denir une representation des probl`emes `a resoudre. Par
exemple, dans le cas du sac-`a-dos, on notera le tableau du probl`eme et celles
des inconnues qui sont dej`a valuees, dans une variable de type pb.
Fonctions de specialisation :
is_trivial : pb bool permet de savoir si le probl`eme peut etre resolu
facilement (i.e. si toutes les inconnues, ou toutes les inconnues sauf une
sont valuees).
trivial_solve : pb int resout un probl`eme trivial. Doit rendre + si
le probl`eme trivial nest pas faisable.
bound : pb int donne une borne inferieure de la solution.
branch : pb (pb, pb) decoupe un probl`eme en deux sous-probl`emes.
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
3.1 Separation 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, larbre des probl`emes nest pas represente explicite-
ment. Il est code dans la suite des appels recursifs.
La recherche se fait en profondeur dabord. Lobjectif est de trouver une
solution le plus vite possible, pour pouvoir ensuite elaguer larbre.
Dans le cas du sac-`a-dos, on donne la priorite `a la valeur x = 1 pour eviter
la solution triviale x
i
= 0.
La memoire utilisee par lalgorithme est proportionnelle `a la hauteur de
larbre, i.e. au nombres de variables, n. Dautres versions utiliseraient une
memoire de taille O(2
n
).
Construction de larbre 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 xa,
avec log
2
(b a) bits. Engendre log
2
(b a) variables equivalentes.
De facon equivalente, partitionner `a laide de contraintes x < (b +a)/2 et
x (b + a)/2. Methode plus generale, car on peut ecrire des contraintes
portant sur plusieurs variables.
Il est possible de partitionner en plus de deux sous-probl`emes. Sapplique
en particulier au cas o` u les variables ne sont pas numerisees.
3.1.2

Evaluation
La qualite de la fonction devaluation conditionne directement lecacite
de la methode.
Exemple du sac `a dos. On prend comme borne superieure y
1
+2y
2
+3y
3
+
4y
4
o` u y
i
= x
i
si x
i
est valuee et y
i
= 1 sinon. Il est clair que cette fonction
donne bien une borne superieure de lutilite.
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
46 Meta-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 lineaire et en nombres entiers, on obtient une borne (in-
ferieure ou superieure) `a partir de la solution continue. La methode fournit
une alternative `a la methode des coupes, `a condition que le probl`eme soit
borne.
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 inferieure du minimum cherche.


Exploitation des proprietes de la fonction objectif, quand il est possible
de calculer facilement son minimum en ne tenant compte que dune partie
des contraintes.
Linearisation de la fonction objectif
Si les contraintes sont lineaires, on peut remplacer f par une minorante
lineaire.
Soit `a minimiser une fonction contenant le produit de deux inconnues x
et y dans un poly`edre (aectation quadratique).
Si on sait dapr`es les contraintes que x 0 et y b, on en deduit xy bx.
La solution du probl`eme dont la fonction objectif est bx est un minorant
de la solution du probl`eme initial.
Linearisation des contraintes
On suppose la fonction objectif lineaire. On determine un poly`edre qui
contient lensemble des points entiers faisables. Si le domaine des points
faisables est convexe, cette representation peut etre aussi precise quon le
veut.
La solution dans le poly`edre est un minorant de la solution du probl`eme
original.
Exemple : Minimiser une fonction lineaire dans un disque.
3.1.3 Strategie et Tactiques
Lecacite de la recherche depend fortement :
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
3.1 Separation et evaluation ou Branch-and-Bound 47
De la qualite de la fonction devaluation.
De la disponibilite dune premi`ere bonne solution. Noter quaucun ela-
gage ne se produit tant quune solution nest disponible.
De lordre de traitement des nuds.
Dans le meta-algorithme ci-dessus :
La fonction devaluation est implantee dans la fonction bound.
Lordre de valuation des variables est implante dans la fonction branch.
Lordre de traitement des nuds est implante dans lalgorithme. Cest
lordre en profondeur dabord et de gauche `a droite.
Est-ce la meilleure strategie ?
La strategie en profondeur dabord fournit tr`es vite (en n etapes) une
solution, et utilise peu de memoire. Mais elle peut segarer dans une region
peu interessante de larbre.
Dans la strategie en largeur dabord, on construit larbre niveau par ni-
veau.
x1=1
23/3
x1=0
x2=1
x2=0
x3=1
x3=0
7
6
7
23/3
5
Meta-algorithme (largeur dabord)
Dans la strategie meilleur dabord, on se base sur lidee que la valeur
de la borne inferieure est une estimation de loptimum dans le sous-arbre.
On a donc interet `a developper dabord le nud qui a la meilleure borne.
Dans lexemple du sac-`a-dos, les deux strategies concident.
Au niveau de limplementation, il sut que les probl`emes soient ordonnes
par valeur (borne) croissante. On modie les procedures insert et pop.
On peut utiliser une structure de donnees plus adaptee, un tas par exemple.
Implementation parall`ele
Lalgorithme par separation et evaluation se prete bien `a une implemen-
tation parall`ele, parce que le developpement de chaque probl`eme est inde-
pendant des autres probl`emes.
La seule dependance est celle sur la meilleure solution, best. Mais on peut
accepter que cette valeur soit ajustee avec retard, la seule incidence etant
un elagage moins ecace.
Paradoxe : lelagage peut etre plus ecace si le parallelisme permet dat-
teindre plus vite la region de larbre o` u se trouve le minimum.
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
48 Meta-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
Methode inventee par R. Bellman en 1956.
Concue sur le mod`ele de lalgorithme du plus court chemin dans un graphe.
On remplace la resolution dun probl`eme de taille n par celle dun certain
nombre de probl`emes de taille n 1, dont on combine les resultats.
Exemple : calcul du plus court chemin entre deux points dun DAG, i et
j.
Si i = j, alors la longueur du plus court chemin est 0. Sinon, ce chemin
passe necessairement par lun 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 recurrence :
l
ij
= min
kSucc(i)
d
ik
+l
kj
= min
kPred(j)
l
ik
+d
kj
.
Exemple du sac-`a-dos
Soit `a resoudre :
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
dun tel probl`eme.
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
3.2 Programmation Dynamique 49

Equations de recurrence
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
xee, on doit resoudre un autre probl`eme de sac-
`a-dos.
Si x
1
= 0, la capacite disponible est toujours W, on doit calculer V
2
(W).
Si x
1
= 1, il ne reste plus que W w
1
unites de capacite, mais on a dej`a
obtenu c
1
unites de valeur.
Dans le cas general, on a la recurrence :
V
k
(W) = maxV
k+1
(W), V
k+1
(W w
k
) +c
k
.
Conditions aux limites
Que vaut V
n
(W) ?
On ne peut xer 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.
Methode de resolutions. On remarque que 0 W B =

n
i=1
w
i
.
Il sut 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 lon a resolu non seulement le probl`eme original, mais le pro-
bl`eme pour toutes les valeurs possibles de W. En eet, V
k
(W) = V
k
(B) si
W > B.
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
50 Meta-heuristiques
Dans ce cas particulier, comme V
k
(W) ne depend 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
Complexite
Il est facile de voir que la complexite est O(n.B).
On dit que le probl`eme est pseudo-polynomial. En eet, n.B est bien un
polynome, mais B est exponentiel en la taille des w
k
(nombre de bits).
Lensemble [0, B] est lensemble des etats de lalgorithme. Il peut etre
`a plusieurs dimensions. Dans ce cas, la complexite devient prohibitive.
Reconstituer la solution
Il sut dintroduire un nouveau tableau x[N][B+1].
On modie lalgorithme 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 memoire
Si lon nest interesse que par la valeur de loptimum, il est facile de voir
que lon na besoin que de deux lignes du tableau V, V[k] et V[k+1].
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
3.2 Programmation Dynamique 51
Il sut donc de 2B cellules de memoire. Les deux lignes sont permutees `a
chaque iteration.
Ce cas se presente quand la programmation dynamique est composante
dun 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 eectuer des calculs redondants.
Generalisation
Soit `a resoudre :
min
x
n f
n
(x),
g
n
(x) 0.
Il est evident que la methode ne marche que parce que la fonction objectif
et les contraintes ont des proprietes speciales.
La fonction objectif doit etre separable. 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 separable sil existe une fonction h
n
et
une fonction f
n1
telles que :
f
n
(x) = h
n
(x
hd
, f
n1
(x
tl
)),
h
n
(x, y)
y
0
Theor`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
n1
(x
tl
))
Demonstration. Soit x

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

(x
hd
) le
point o` u f
n1
(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).
Reciproquement, soit x la solution du probl`eme de gauche. On a min
g(x
hd
,x
tl
)0
f
n1
(x
tl
)
f
n1
(x
tl
), donc, par la monotonie de h
n
h
n
(x
hd
, min
g(x
hd
,x
tl
)0
f
n1
(x
tl
)) h
n
(x
hd
, f
n1
(x
tl
)),
et cette propriete setend au minimum.
Cette propriete ne sut pas. Si la decomposition de f
n
peut etre poursui-
vie, elle fournit une recurrence permettant de calculer le minimum, mais
sa complexite est du meme ordre que celle dune recherche exhaustive.
Pour aller plus loin, il faut plonger le probl`eme initial dans une famille de
probl`emes o` u les contraintes dependent dune variable detat S o.
P
n
(S) : min f
n
(x),
g
n
(x, S) 0,
o` u g
n
a les deux proprietes :
T
n
g
n
(x, S) = g
n1
(x
tl
, t
n
(x
hd
, S))
x , S o : t
n
(x, S) o.
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
52 Meta-heuristiques
Algorithme
On suppose que lensemble des valeurs possibles de x, et celui des valeurs
possible de S, o sont nis.
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))
Lecacite de la methode est enti`erement conditionnee par la taille de o
qui doit etre enumere.
Les probl`emes doptimisation `a une dimension sur peuvent etre resolus
par enumeration (si [[ est petit) ou par toute autre methode.
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 laddition, 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.
Lespace des etats est o = [0, B] avec B =

n
i=1
w
i
, lespace des valeurs
est = [0, 1].
Autres exemples
On peut envisager dautres 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 de-
croissante en son deuxi`eme argument `a condition que le premier argument
soit non negatif.
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 innies.
On demande de trouver une tournee de longueur minimale.
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
3.3 Exploration aleatoire 53
Une tournee est un circuit hamiltonien, i.e. qui passe une fois et une seule
par chaque ville.
Le probl`eme est tr`es dicile, parce que le nombre de circuits (hamilto-
niens) est tr`es eleve.

Equation de recurrence
On peut choisir une ville arbitraire, par exemple la ville 1, comme point
de depart de la tournee.
Soit S un sous ensemble de [1, n] contenant 1. On consid`ere les chemins
hamiltoniens de S, cest-`a-dire les chemins partant de 1 et passant une fois
et une seule par chaque ville de S.
On note Pred(k) lensemble des predecesseurs de k, cest-`a-dire lensemble :
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.
Considerons la ville k

qui prec`ede k dans le plus court chemin cherche.


Cette ville fait evidemment partie de Pred(k) S.
Dautre part, le chemin de 1 `a k

passe par toute les villes de S k. Si


sa longueur est superieure `a F(S k, k

), il est possible de lameliorer.


On a donc la recurrence :
F(S, k) = min
k

Pred(k)S
F(S k, k

) +d
k

k
.
On a dautre part la condition initiale F(1, 1) = 0.
On peut donc resoudre le probl`eme en tabulant la fonction F pour tous
les ensembles ne contenant quune ville, puis pour tous les sous-ensembles
de villes `a 2, 3, ... elements.
On lit le resultat en F([1, n], 1).
Mais la methode nest pas tr`es ecace car il y a en tout 2
n1
sous-
ensembles.
Relaxation
On peut simplier le probl`eme en demandant que le chemin passe par [S[
villes sans exiger quil soit hamiltonien.
On peut alors traiter en une seule fois tous les sous-ensembles de meme
cardinal.
On obtient une borne inferieure de la longueur de la tournee, qui peut etre
utilisee, par exemple, dans un algorithme branch and bound.
3.3 Exploration aleatoire
3.3.1 Amelioration iterative
Position du probl`eme
Soit `a resoudre :
max
xS
f(x).
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
54 Meta-heuristiques
Lensemble S est lensemble des congurations, ou ensemble des etats.
On suppose quil est trop grand pour etre enumere, mais quil existe un
procede ecace pour tirer une conguration au hasard dans S.
f est la fonction objectif.
On suppose que tout point x de S a un ensemble ni de voisins, V (x).

Etant
donne x, il existe un procede ecace pour enumerer V (x). Enn, lespace
des congurations est connexe, i.e. on peut aller de x `a y quelconque par
des deplacements 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).
Amelioration iterative
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 dattraction
Autour de chaque maximum local a il existe un bassin dattraction A deni
par :
a A,
(y V (x) : f(y) > f(x) y A) x A.
Si le point initial est dans le bassin dattraction du maximum global, lal-
gorithme Hill-Climbing trouve le maximum global.
La probabilite datteindre le minimum global tend donc vers 1 quand n
.
Mais il est impossible davoir une certitude.
3.3.2 Recuit simule
Algorithme de Metropolis, 1953.
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
3.3 Exploration aleatoire 55
Voir aussi P. J. M. van Larrhoven ans E.H. Aarts, Simulated Annealing,
Theory and Applications, Kluwer, 1987.
Analogie avec la physique statistique. Lorsquun objet physique pouvant
exister dans plusieurs etats atteint lequilibre thermodynamique, la popu-
lation dun etat denergie E est donnee par la loi de Boltzmann :
p(E) =
1
Z
e

E
kT
,
o` u k est la constante de Boltzmann, T la temperature, et Z un facteur de
normalisation, la fonction de partition.
Cet equilibre est dynamique. Il resulte de multiples transitions qui se com-
pensent. Une transition faisant varier lenergie de E a une probabilite
proportionnelle `a e

E
kT
.
On modelise un probl`eme doptimisation par un syst`eme thermodyna-
mique dont on simule levolution.
Les elements de S sont les divers etats possibles du syst`eme. Lenergie
de letat x est f(x).
Si le syst`eme est dans letat x, il peut passer aleatoirement dans lun des
etats de V (x).
La probabilite pour le syst`eme de passer dans letat 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-temperature.
Si le probl`eme a des contraintes qui ne sont pas integrees dans la denition
de S, il sut de faire f(x) = quand x nest pas faisable.
Au bout dun certain temps, le syst`eme se stabilise.
On reduit la valeur de la temperature et on continue.
La motivation est de permettre au syst`eme simule de sechapper du bassin
dattraction dun 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
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
56 Meta-heuristiques
Analyse du recuit simule
Quand doit-on baisser la temperature (i.e., quel est la valeur de m) ?
Combien de fois doit on baisser la temperature (i.e. quelle est la valeur de
n) ?
A quelle vitesse faire baisser la temperature (la valeur 0.99 est elle la
bonne) ?
Chane de Markov
Une chane 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
letat
du syst`eme `a letat n. La chane ne change detat quaux instants de valeur
enti`ere.
La probabilite de transition de letat x `a letat y ne depend que de x et
de y. Elle ne depend ni du temps, ni des etats anterieurs occupes par le
syst`eme. Soit P
xy
la probabilite de transition de letat x `a letat y.
On doit avoir

yS
P
xy
= 1. La matrice p
xy
est une matrice stochas-
tique.
Il est clair quun algorithme de recuit simule fonctionne comme une chane
de Markov.
Calcul des probabilites de transition
Chaque tirage peut avoir trois resultats :
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
.
Probabilite de la transition x y :

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

1
Z
e
f(y)f(x)
T
sinon.
Graphe dune chane de Markov
Le graphe dune chane de Markov a pour sommets les etats de la chane.
Il y a un arc de x vers y si et seulement si la transition x y est de
probabilite non nulle.
On peut construire les composantes fortement connexes (cfc) de ce graphe
et le graphe reduit.
En vertu du principe que tout ev`enement de probabilite non nulle nit
par se produire au bout dun temps susamment long, letat de la chane
nit toujours par parvenir dans lune des cfcs terminale.
On dit que la chane est simple sil ny a quune seule cfc terminale.
Une chane simple nit par atteindre sa cfc terminale. A partir du moment
o` u elle entre dans la cfc terminale, elle passe une innite de fois par chaque
sommet de celle-ci.
Distribution limite
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
3.3 Exploration aleatoire 57
Si p
0
x
est la distribution de probabilite initiale sur la cfc terminale, la
distribution apr`es n etapes est egale `a :
p
n
= p
n1
.P
Le comportement de p
n
depend 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 consequent, quelles sont comprises entre 0 et 1.
En consequence, P
T
ne peut avoir de valeur propre de module > 1.
On est dans le cas regulier quand 1 est valeur propre simple de P
T
. Une
condition susante est que tous les coecients de P soient non nuls.
Dans ce cas, la distribution de probabilite converge vers le vecteur propre
de P
T
associe `a 1.
Application au recuit simule
Dans le cas du recuit simule, aucune probabilite de transition nest nulle.
On est donc toujours dans le cas regulier.
Quand la temperature decrot, certaines probabilites de transition tendent
vers 0. A la limite, chaque cfc est un ensemble contigu de minimum locaux.
La ou les cfcs terminales sont associees `a lextremum global.
Pour arreter la recherche, on peut attendre que la distribution de proba-
bilite soit stable (par exemple en estimant lesperance mathematique de
x, si cela `a un sens, ou celle de f(x).)
Exemple, Sac-`a-dos
Lensemble des etats est celui des suites binaires de taille n qui verient
la contrainte.
Voisinage : deux suites qui di`erent par un seul bit.
Sur un petit exemple, le resultat nest pas tr`es satisfaisant.
Exemple, Voyageur de Commerce
On suppose que la matrice des distances est symetrique.
Ensemble des etats : ensemble des circuits hamiltoniens du graphe.
Voisinage.
On choisit deux villes a et b visitees dans lordre a b. Soit a

la ville
qui prec`ede a et b

celle qui suit b.


On construit le circuit a

b a b

.
Les resultats experimentaux sont excellents.
3.3.3 La methode Tabou
On conserve les notions despace de conguration et de voisinage.
Pour eviter de rester bloque autour dun optimum local, on conserve la
liste des derniers points visites, la liste tabou.
Quand on explore un voisinage, on choisit le meilleur voisin `a lexclusion
des points de la liste tabou.
La liste tabou est geree comme une FIFO.
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
58 Meta-heuristiques
Sa longueur est un param`etre crucial. Folklore : la valeur L = 7 est presque
toujours susante !
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 simule, il ny a pas de theorie de la methode
Tabou.
Elle est cependant reputee plus ecace et able que le recuit simule.
Le choix de la longueur de la liste Tabou (NB- qui est cachee dans la
fonction add_FIFO) est le plus important.
Lautre param`etre est le nombre dessais (n ci-dessus) qui ne peut gu`ere
etre choisi que de facon experimentale.
3.3.4 Algorithmes genetiques
Principe : on cherche `a imiter ce que lont sait du fonctionnement de
levolution biologique.
Chaque conguration doit pouvoir etre codee par une chane de caract`eres.
Pour le sac-`a-dos, on prend la chane 0-1 des valeurs des variables.
Pour le voyageur de commerce, on prend la liste des villes dans lordre
de la tournee.
On travaille non pas sur une conguration, mais sur une population de
congurations, que lon tire au hasard au debut.
On evalue f pour tous les individus de la population (parallelisme) on
classe et on retient les meilleurs 20% (par exemple).
On compl`ete la population `a laide de 2 mecanismes :
Mutation : on choisit un individu au hasard et on modie (avec une
probabilite tr`es faible) lune de ses lettres.
Croisement : On choisit deux individus x et y, on selectionne 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
Distribue sous license Open-Content: http://opencontent.org/opl.shtml
3.4 Conclusion generale 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
Loriginalite essentielle est de travailler sur une population et non sur un
individu unique. Similaire `a lidee du redemarrage aleatoire, mais permet
une evaluation parall`ele si cest possible.
Lidee des mutations est similaire `a lexploration aleatoire dun voisinage.
Lidee de recombinaison peut avoir du sens ou non.
Elle repose sur lidee que les g`enes ont un eet cumulatif et non posi-
tionnel.
Cest faux pour le sac-`a-dos, pour le voyageur de commerce, et peut-etre
aussi dans la nature.
La methode ne sapplique donc ecacement que dans des cas particuliers.
3.4 Conclusion generale
Tout un ensemble de methodes, des plus particuli`eres (la programma-
tion lineaire et les methodes de gradient) aux plus generales (les meta-
heuristiques).
Les methodes particuli`eres sont plus diciles `a programmer, mais plus
ecaces.
Les methodes generales sont faciles `a programmer et dun champ dappli-
cation plus vaste.
Donc choisir toujours la methode la plus specialisee compatible avec la
denition du probl`eme (il existe beaucoup de logiciels tout faits, libres et
commerciaux).
La methode Branch and Bound demande une etude preliminaire du pro-
bl`eme. Elle est tr`es generale et pas trop dicile `a programmer. Elle justie
`a elle seule le principe de Minoux : En optimisation combinatoire, la li-
nearite nest pas importante.
Distribue sous license Open-Content: http://opencontent.org/opl.shtml