• Aucun résultat trouvé

Optimisation linéaire

Dans le document Optimisation dynamique de réseaux IP/MPLS (Page 41-45)

La programmation linéaire est un outil très puissant permettant d’exprimer et de résoudre les problèmes du même nom. On peut distinguer la programmation linéaire en nombre réels, où les variables appartiennent à l’ensemble R, de la programmation en nombre entiers où les variables appartiennent à l’ensemble N. On appelle programmation linéaire mixte le cas où un problème requiert l’appartenance d’une partie de ses variables dans R et de l’autre partie dans N.

3.2 OPTIMISATION LINÉAIRE 25

3.2.1 Programmation linéaire

Les programmes linéaires appartiennent à la classe des problèmes convexes, l’en-semble de définition des solutions y appartient donc également. Il s’agit d’un enl’en-semble fermé et fini de solutions, défini sous la forme d’un polyèdre S appartenant à Rn. Il a été établi que toute solution optimale du problème d’optimisation est forcément un sommet du polyèdre [83].

L’algorithme du Simplexe utilise principalement cette propriété pour atteindre l’op-timum. Il fut proposé en 1947 par George Dantzig, mais reste aujourd’hui encore l’un des plus utilisés pour la résolution de problèmes linéaires avec des variables continues. Cette méthode permet de trouver une solution en un nombre fini d’étapes. Bien que sa complexité théorique au pire cas soit de type exponentielle, l’algorithme parvient à atteindre en pratique une remarquable efficacité.

Le fonctionnement de l’algorithme consiste à parcourir les arêtes du polyèdre consti-tuant l’ensemble des solutions, en passant d’une extrémité d’arête à l’autre. En un point donné, l’algorithme définit la prochaine arête traversée comme étant celle permettant de faire décroître la fonction coût le plus possible. Un exemple de trajectoire suivie par l’algorithme du simplexe est présentée sur la figure3.2.

Point de départ

Solution optimale

Figure 3.2 – Trajectoire suivie par l’algorithme du Simplexe sur le polyèdre des solutions Malgré sa grande efficacité en moyenne, la complexité exponentielle de l’algorithme dans les pires cas a entraîné l’émergence des algorithmes de type points intérieurs [97], pour lesquels la complexité au pire cas est polynomiale. A l’inverse de l’algorithme du simplexe, ces méthodes suivent une trajectoire passant par l’intérieur du polyèdre des so-lutions, et utilisent des fonctions de type barrière pour orienter la recherche. En pratique, et malgré la complexité polynomiale au pire cas, elles ne fournissent pas nécessairement les solutions plus rapidement que les méthodes basées sur l’utilisation du Simplexe.

26 TECHNIQUES D’OPTIMISATION

Les algorithmes actuellement implémentés dans les principales solutions logicielles de résolution de problèmes linéaires avec variables continues se basent principalement sur ces deux grandes méthodes.

3.2.2 Programmation linéaire en nombre entiers

Certains problèmes requièrent explicitement l’utilisation de nombres entiers. C’est le cas de tous les modèles représentant des instances qui ne peuvent être fractionnées (le routage d’un flux sur un chemin unique en est un exemple).

La résolution d’un problème linéaire en nombre entier ou mixte est singulièrement plus complexe que celle d’un problème linéaire en nombre réels, et les méthodes du Sim-plexe et des points intérieurs ne s’appliquent pas sur ce type de problème. Le problème NP-complet du voyageur de commerce appartient par exemple à cette catégorie [88].

Une approche naïve de ce type de problème consisterait à résoudre le problème sans les contraintes liant les solutions à l’espace des entiers, puis à considérer la solution entière la plus proche de la solution trouvée. Bien que séduisante au premier abord, cette méthode ne fournit malheureusement pas les bonnes solutions. Nous illustrons ainsi sur la figure 3.3 un exemple simple à deux variables où cette méthode ne fonctionne pas. Sur cet exemple, aucun des 4 points entiers les plus proches de la solution optimale avec variables continues n’est compris dans le polyèdre des contraintes S.

S

Solution optimale du problème continu cr oissa nce du co ût Solution optimale du problème linéaire en nombre entier x1 x2

Figure 3.3 – Illustration de la difficulté liée aux problèmes d’optimisation en nombre entiers

3.2 OPTIMISATION LINÉAIRE 27

L’exploration exhaustive de l’ensemble des solutions étant clairement impossible au delà d’une toute petite taille de problème (en raison de l’explosion combinatoire), des méthodes avancées ont vu le jour pour explorer intelligemment l’espace de solutions.

La méthode appelée B&B (pour Branch and Bound, en français séparation et éva-luation) est l’une des plus utilisées pour la recherche de solutions contenant des variables entières. Ce type de méthode consiste à représenter l’espace des solutions par une arbo-rescence qu’il faut parcourir le plus intelligemment possible pour arriver à la solution. Plus précisément, l’algorithme B&B cherche à éliminer progressivement l’exploration des solutions dont on sait d’ores et déjà qu’elle ne permettront pas d’obtenir une meilleure solution que la solution courante. Nous illustrons son fonctionnement sur la Figure3.4.

Solutions partielles x1=0 x2=0 x3=0 x3=1 x2=1 x1=1 fbest=20 fbest=10 fmin>fbest fmin>fbest

Figure 3.4 – Illustration du branch and bound

Chaque noeud correspond à une solution partielle pour laquelle une partie des va-riables a des valeurs entières fixées, les autres valeurs étant alors encore à déterminer. Dans cet exemple, l’algorithme démarre à la racine de l’arborescence, pour laquelle au-cune variable n’a encore été fixée. Le coût du vecteur nul (xi= 0,∀i) est connu et vaut fbest= 20. Pour chaque noeud traversé dans l’arborescence, une borne inférieure sur le coût fmin est calculée à partir de la solution entière partielle (valeurs fixées à partir des noeuds précédents), tout en relaxant les contraintes de nombres entiers pour les valeurs qui n’ont pas encore été fixées. Les branches de l’arborescence pour lesquelles la borne inférieure fminest supérieure à la borne supérieure fbesttrouvée précédemment sont

sup-28 TECHNIQUES D’OPTIMISATION

primées et donc jamais parcourues. Si lorsqu’une solution complète est générée, son coût est inférieur à la borne supérieure fbestcourante, alors la borne supérieure est mise à jour. Dans cet exemple, les branches où x1 = 1 et où x1 = 0, x2 = 1 ne sont pas parcourues, et l’algorithme trouve immédiatement la meilleure solution x1 = 0, x2= 0, x3 = 1.

L’algorithme B&B est aujourd’hui intégré dans tous les grands solveurs de problèmes linéaires en nombres entiers. Il permet d’améliorer considérablement les temps de calculs nécessaires vis à vis d’une exploration exhaustive. Malgré tout, l’algorithme nécessite des appels répétés à la fonction calculant la borne inférieure fmin en chaque nœud, et ces calculs peuvent s’avérer rapidement coûteux en temps. Les tailles de problèmes soumis à la méthode B&B se doivent donc de rester limitées pour éviter l’explosion des temps de calcul.

Dans le document Optimisation dynamique de réseaux IP/MPLS (Page 41-45)