Documente Academic
Documente Profesional
Documente Cultură
Programmation quadratique et
semidéfinie
70
60
50
40 Contraintes
Optimum
30
Objectif
20
10
0
0 5 10 15 20 25
Les contraintes forment un polygone P de solutions acceptables. C’est dans cet ensemble qu’il
faut chercher les solutions au problème. Ainsi, l’optimisation correspond à trouver le point de
P qui maximise la fonction objectif. Nous pouvons observer que la solution optimale se trouve
sur un des sommets de P, ici dans le carré noir.
Mais cette configuration est évidemment un cas particulier des problèmes rencontrés en
optimisation. Les fonctions étudiées peuvent, bien sur, sortir du cadre linéaire.
60
50
40
Contraintes
30
Optimum
20
10
0
0 5 10 15 20 25
Par exemple, dans le cas représenté ci-dessus, c’est la contrainte qui a été changée
pour devenir non linéaire.
De même, il est possible de rencontrer des cas où la fonction objectif est non-linéaire :
70
60
50
40 Contraintes
30 Optimum
20
10
0
0 5 10 15 20 25
Dans ces deux cas, il apparaît alors comme évident que la recherche de la solution optimale
est plus difficile que dans le cas linéaire, puisqu’elle doit se faire tout le long du polygone des
contraintes, et non seulement en quelques points particuliers. De plus, si la solution est
cherchée entière, la complexité est encore augmentée. Ainsi, ces développements ouvrent à la
modélisation de plus de problèmes d’optimisation, mais au prix de la difficulté théorique de
leur résolution. Et, comme nous le verrons plus loin, il n’existe pas dans le domaine non-
linéaire d’équivalent au fameux algorithme du simplexe, outil simple et efficace de résolution
des problèmes linéaires.
Minimiser f ( X ) = X T AX + BX
Sous les contraintes : g j ( X ) = C j X ≤ 0 ∀j ∈ 1..m
Et un problème de programmation semidéfinie est un cas particulier des problèmes décrits ci-
dessus, pour lequel la matrice A a la particularité d’être semidéfinie positive (parfois dite
positive), c’est-à-dire que :
∀X ∈ ℜ n : X T AX ≥ 0
Mais selon les cas et les publications, il arrive souvent que les notions de programmation
quadratique et semidéfinie couvrent aussi les cas où les contraintes sont quadratiques, soit :
n n n
g j ( x1 ,..., x n ) = ∑ ∑c ik , j xi x k + ∑ d i , j xi ≤ 0 ∀j ∈ 1..m
i =1 k =1 i =1
Ainsi, et pour revenir à ce qui a été présenté dans l’introduction, ce sont des problèmes
d’optimisation avec une fonction objectif (ou fonction de coût) quadratique, et des conditions
linéaires ou quadratiques. Mais il est important de comprendre que cela représente une
généralisation du cas linéaire, et non seulement une situation différente.
L : ℜn × ℜm → ℜ
m
( x, u ) → L ( x, u ) = f ( x ) + ∑ u j g j ( x ) = f ( x ) + u T g ( x )
j =1
On dit que L est une fonction de la variable primale x et de la variable duale u (ou
multiplicateur). Les contraintes g j ( x) ≤ 0 se traduisent par une contrainte sur la variable
duale : u j ≥ 0 . Si ce sont des égalités : g j ( x) = 0 , cela n’introduit pas de contrainte.
Ensuite, nous définissons la fonction duale de la manière suivante :
θ : ℜm → ℜ
u → θ (u ) = infn L( x, u )
x∈ℜ
Maximiser θ (u ) pour u ∈ ℜ +
m
Une chose importante à remarquer concernant le problème dual est que c’est un problème
bien plus facile à résoudre que le problème primal. En effet, la fonction θ (u ) est toujours une
fonction concave et semi-continue supérieurement.
Ceci dit, la résolution du problème dual n’est pas équivalente à celle du problème initial. Si on
note opt(I) la valeur optimale du problème initial, et opt(D) la valeur optimale du
problème dual, on a toujours : opt(I)-opt(D) ≥ 0. Les cas les plus intéressants sont ceux pour
lesquels cette différence vaut exactement 0, puisque cette méthode permet alors de résoudre
notre problème initial. Mais ce n’est pas toujours le cas, cela dépend par exemple de la forme
de la matrice A, des fonctions gj etc.
Ainsi, nous pouvons dire que nous disposons d’un outil pour la résolution des
problèmes de programmation semidéfinie avec cette relaxation. Mais ce n’est pas pour autant
une méthode qui nous mènera dans tous les cas à une solution. Pour cela, tous les paramètres
doivent vérifier des conditions strictes. Je ne vais pas, dans ce cadre, exposer les
développements théoriques sur ce sujet. Ils sont nombreux et, d’après moi, relativement
difficiles d’approche. Mais j’invite évidemment toute personne intéressée à se plonger dans la
lecture du rapport de recherche de l’INRIA n°3710 : « Semidefinite relaxations and
Lagrangian duality with application to combinatorial optimization » de Claude Lemaréchal et
François Oustry, ainsi que de suivre les liens indiqués dans cet article vers les différents
ouvrages de référence.
Alors, la valeur xixj vaut : 1 lorsque les sommets i et j sont dans la même partie de la coupe
-1 lorsque les sommets i et j sont répartis entre les deux parties
Donc :
Q = [capacité des arcs internes aux deux parties de la coupe]
- [capacité des arcs interconnectant S et S ]
Or la somme de toutes les capacités de G est une constante que l’on va noter C. Et on a alors :
Q = C - 2.[capacité des arcs interconnectant S et S ]
Alors, trouver une coupe de capacité maximum revient exactement à minimiser Q. Et ceci
avec les contraintes suivantes : (xi)²-1 = 0 pour i = 1..n.
Ainsi, nous sommes bien ramenés à un problème de programmation quadratique.
Nous allons donc créer la fonction de Lagrange associée à ce problème :
n n n
L( x, u ) = ∑∑ pij xi x j + ∑ u i ( xi2 − 1) = X T ( P + D(u )) X − e T u
i =1 j =1 i =1
Où D(u) est la matrice diagonale composée des termes ui, et e ∈ ℜ n est le vecteur composé
uniquement de 1.
Minimiser cette fonction de Lagrange sur x est alors un jeu d’enfant, deux cas se présentent :
- si Q + D(u) n’est pas semidéfinie positive, on obtient - ∞
- dans le cas contraire, le mieux à faire est de prendre x = 0
Ainsi, on obtient la forme suivante pour la fonction duale :
d. Conclusion
Pour citer encore le bulletin n°13 de la ROADEF, nous pouvons dire que « d’un point
de vue théorique, la SDP a permis d’améliorer significativement les résultats sur
l’approximation de nombreux problèmes. […] Cependant, il est clair que l’approche
semidéfinie doit être réservée au traitement de problèmes très difficiles, en particulier pour
ceux où la programmation linéaire est inefficace ». En effet, la résolution d’un SDP provoque
une perte de temps importante, même si « les derniers progrès montrent que cette approche est
dorénavant tout à fait exploitable dans la pratique ».
Ainsi, la programmation semidéfinie, bien que très complexe et souvent coûteuse en
temps, est un développement utile qui permet, dans certaines situations « difficiles »,
d’obtenir des résultats très satisfaisants en un temps acceptable et dans la majorité des cas.
C’est le cas en particulier du problème MAXCUT évoqué ci-dessus.
Mais évidemment, il existe d’autres méthodes pour résoudre certains problèmes de
programmation quadratique. C’est ce que nous allons voir dans la partie suivante.
3. Le problème d’affectation quadratique
a. Présentation et modélisation du problème
Pour toute cette partie, les personnes intéressées pourront se référer, comme moi, au
chapitre « Affectation quadratique » du livre « Métaheuristiques et RO », rédigé par Thierry
Mautor.
Le problème d’affectation quadratique consiste à placer n unités communiquant entre
elles sur n sites prédéterminés. Entre une unité i placée sur un site k et une unité j placée sur
un site l se passe une interaction qui a un coût : cijkl. En général, ce coût est le produit du flux
fij entre les deux unités par la distance entre les deux sites dkl. Et le problème consiste à
minimiser le coût total de l’implantation des n unités sur les n sites.
Pour prendre un exemple concret, cela correspond à une entreprise qui possède
plusieurs usines de production qui interagissent entre elles. L’usine 2 a besoin du produit sorti
de l’usine 1 pour pouvoir faire son travail. Ainsi, il va se créer un flux de marchandises entre
ces usines, qui va lui-même générer des coûts financiers pour la firme. Celle-ci a donc tout
intérêt à bien répartir ses différentes usines sur les terrains qu’elle possède de manière à
diminuer le prix du transport des marchandises entre les sites, et donc ses coûts de production.
Plus le flux entre deux usines sera grand, plus la distance entre elles devra être petite.
Nous pouvons formaliser ce problème en introduisant les variables de décision xik
valant 1 si l’unité i est placée sur le site k et 0 sinon. Alors, le problème est le suivant :
n n n n
Minimiser ∑∑∑∑ f
i =1 j =1 k =1 l =1
ij d kl xik x jl
⎧n
⎪∑ xik = 1 ∀k ∈ {1,.., n}
⎪ i =1
Avec x ∈ {0,1} et ⎨ n
⎪ x =1 ∀i ∈ {1,.., n}
⎪⎩∑
k =1
ik
Une autre formalisation classique de ce problème est de représenter une solution sous la
forme d’une permutation p de {1,..,n} où p(i) est le numéro du site sur lequel est placée
l’unité i. Alors, il faut :
n n
Minimiser ∑∑ f ij d p (i ) p ( j ) où P est l ' ensemble des permutations de {1,..., n}
p∈P
i =1 j =1
Ainsi, par ces avantages, ce voisinage est très majoritairement utilisé dans toutes les
heuristiques de recherche locale.
La méthode qui a donné les meilleurs résultats est la méthode Tabou. Sa première
application au problème d’affectation quadratique est due à Skorin-Kapov en 1990. Mais ce
sont des variantes que nous allons étudier ici.
La méthode Tabou robuste, proposée par Taillard en 1991, reste une référence dans le
domaine. Elle est basée sur le voisinage décrit ci-dessus. Elle part d’une solution qu’elle
change en recherchant des améliorations dans son voisinage. Mais le principe de la méthode
tabou et qu’une liste des dernières positions rencontrées est tenue à jour. Par exemple, on
mémorise les 10 dernières solutions. Et un retour à une des positions de cette liste est interdit,
d’où le nom de la méthode. Cela permet de « visiter » les voisinages sans revenir
constamment au même endroit. La première particularité de la méthode Tabou robuste est que
la longueur de sa liste Tabou (ie le nombre de positions mémorisées et par conséquent
interdites) est réactualisée périodiquement et aléatoirement entre deux bornes (inférieures et
supérieures). La seconde particularité est que en plus d’accepter les modifications
améliorantes, cette méthode enregistre aussi les modifications qui replacent conjointement
deux unités sur des sites qu’elles n’ont pas occupées depuis très longtemps. Cela permet de
diversifier les recherches et d’essayer de sortir de minimums locaux.
La méthode Tabou réactive, quant à elle, se base sur la mémorisation, en parallèle de la liste
Tabou, d’absolument toutes les positions déjà visitées. Ainsi, il est possible de détecter un
cycle à tout moment. Et dans ce cas, la longueur de la liste Tabou est modifiée pour empêcher
celui-ci. La longueur de la liste Tabou varie donc au cours de la recherche. Mais ici, son
évolution n’est pas aléatoire, mais liée à la recherche elle-même.
Il existe évidemment bien d’autres méthodes de recherche locale qui sont efficaces sur
ce problème. Nous ne pourrons malheureusement pas toutes les énumérer sous peine d’obtenir
un exposé extrêmement fastidieux, mais nous pouvons tout de même dire quelques mots sur
quelques unes d’entre elles.
Le recuit simulé a été proposé dès 1984 pour ce problème par Burkard et Rendl, mais les
solutions obtenues alors ont été améliorées lors de variantes de cet algorithme d’années en
années.
La méthode GRASP a elle aussi été adaptée au problème d’affectation quadratique en 1994
par Li, Pardalos et Resende. Cette méthode est simple, rapide et efficace : une approche
intéressante…
Enfin, les algorithmes dits de colonies de fourmis ont eux aussi été appliqués dans ce cadre,
avec, là encore, de multiples variantes.
Mais ce qu’il faut retenir de tous ces algorithmes, c’est qu’ils donnent tous des solutions
extrêmement satisfaisantes sur une grande partie des instances. Mais nous verrons ceci dans la
partie consacrée aux résultats de l’utilisation de ces heuristiques.
Evidemment, la recherche locale n’a pas été la seule voie explorée pour la résolution
de ce problème tant étudié. Des heuristiques telles que les algorithmes génétiques (voir le
chapitre associé dans ce récapitulatif), ou les méthodes de recherche par dispersion ont
également pris part à la course à la meilleure solution. Ces deux exemples sont basés sur une
population de solutions qui évolue. Mais finalement, ils n’offrent, tous seuls, que peu de
résultats, se confinant souvent dans un domaine de l’espace et n’atteignant que rarement
l’optimum global.
Et c’est ainsi que sont nés les algorithmes hybrides évolutifs/recherche locale. En effet, lors
de l’évolution de la population dans ces algorithmes, les auteurs ont pensé à utiliser la
recherche locale sur ces solutions pour les améliorer, avant de les « accoupler » en
mélangeant leurs gênes. Ces hybridations d’algorithmes se sont finalement avérées très
efficaces, et c’est précisément ce que nous allons voir tout de suite.
• Les résultats
4. Conclusion générale
Pour conclure sur cette synthèse, il est important de rappeler la place importante
qu’occupent les problèmes quadratiques dans les utilisations pratiques de l’optimisation. Il est
évident que toutes les situations ne peuvent pas être formalisées dans un contexte linéaire. Et
il arrive plus que fréquemment de tomber sur un problème d’optimisation qui s’avère être
quadratique.
Certes, d’un côté, les développements théoriques engendrés par l’exploration des
possibilités de la programmation quadratique et semidéfinie peuvent être extrêmement pointus
et obscurs. Malgré tout, ils offrent dans un nombre conséquent de cas une solution optimale. Il
est évident que la connaissance de tous ces concepts échappe à la plupart d’entre nous. Mais il
me semble important d’en présenter au moins une introduction, ce que je me suis attaché à
faire dans cet exposé. En effet, certaines méthodes, comme la relaxation lagrangienne par
exemple, s’avèrent très efficaces sur certains problèmes.
De l’autre côté se trouvent pour tous ces grands problèmes combinatoires (dont les
problèmes quadratiques font partie) les heuristiques qui permettent, elles, de trouver une
solution satisfaisante en un temps correct, mais dont on ne peut garantir l’optimalité.
Ainsi, je ne saurais que conseiller, malgré l’apparente difficulté de l’exercice (qui est
par ailleurs bien réelle), d’essayer de se plonger dans les multiples papiers de recherche sur
les développements théoriques dans ce domaine, avant de se jeter corps et âme dans
l’utilisation de toutes les heuristiques citées précédemment.
Alors pour en savoir plus sur la programmation quadratique et semidéfinie, c’est à
vous !