• Aucun résultat trouvé

Résultats expérimentaux pour la procédure d’énumération ordon-

3.4 Résultats expérimentaux

3.4.2 Résultats expérimentaux pour la procédure d’énumération ordon-

Nous présentons dans la table 3.6 une comparaison des deux versions de l’algorithme par énumération ordonnée avec minoration variable et unique. La version unique corres-pond à ˆB ˜BR et variable est une version qui utilise l’algorithme 3.3 pour la recherche de la kème meilleure solution et qui intègre tous les tests de bornes et le changement de l’ordre de la séparation. Dans la version variable, les conditions d’arrêt et de mise à jour de la meilleure solution courante de l’algorithme 3.1 doivent être modifiées comme nous le montrons dans les commentaires de la proposition 4 dans la section 3.3.

Les deux premières colonnes de la table 3.6 donnent le nombre de solutions énumérées et la proportion des solutions énumérées après l’obtention de l’optimum pour les deux variantes (voir la table 3.2 pour des résultats similaires). La troisième et la quatrième colonnes montrent la taille des arborescences obtenues et les deux dernières colonnes les temps CPU en secondes. Nous avons recueilli les résultats de 20 instances aléatoires dont les moyennes sont présentées dans la table 3.6.

Mesures Solutions énumérées Arborescence Temps CPU (s.)

n p unique variable unique variable unique variable

50 2 39 (72 %) 15 (49%) 45 57 0.04 0.25 3 570 (62%) 66 (25%) 618 289 0.06 1.20 4 3 505 (89%) 189 (47%) 3 753 938 0.13 4.63 100 2 56 (91%) 23 (65%) 67 100 0.23 1.75 3 1 756 (75%) 196 (48%) 1 956 921 0.37 20.37 4 21 833 (90%) 910 (69%) 24 231 4 845 1.33 141.34 200 2 110 (94%) 65 (89%) 137 270 1.02 36.55 3 3 205 (85%) 405 (63%) 3 604 2 164 1.45 428.91 4 122 827 (89%) _ 137 378 _ 13.24 _

Table3.6 – Comparaison des variantes avec minoration unique et variable

Bien que la version variable énumère moins de solutions et engendre des arborescences plus petites que la version unique, elle est moins intéressante en termes de temps de calcul. On en déduit immédiatement que pour améliorer le temps CPU de la version variable, les efforts doivent être concentrés sur la réduction du temps de la recherche de la kème

meilleure solution, et non sur la diminution du nombre de solutions énumérées. Par conséquent, les étapes qu’il faut améliorer sont celles qui consomment le plus d’efforts de calcul lors de la recherche d’une kème meilleure solution, à savoir, la recherche de la meilleure minoration et de la solution optimale d’un nœud (i.e. étapes 8 et 10 de l’algorithme 3.3). Ceci peut être confirmé aussi grâce au rapport entre le temps CPU et le nombre de solutions énumérées et le rapport entre le temps CPU et la taille de l’arborescence. Ces rapports donnent le temps moyen de l’énumération d’une solution ou

le temps moyen de traitement d’un nœud. Ces deux rapports sont en faveur de la version unique.

Le rapport de la taille de l’arborescence sur le nombre de solutions énumérées donne une information sur la forme des arborescences développées par chacune des deux va-riantes. Avec une moyenne proche de 5 nœuds traités par solution énumérée (pour tous n et p de la table 3.6), les arborescences engendrées par la version variable se développent en largeur, alors que les arborescences de la version unique sont profondes avec une moyenne très proche d’un nœud résolu pour toute solution énumérée. Un compromis est donc à trouver entre le nombre de solutions énumérées et l’effort nécessaire pour la recherche de chacune de ces solutions.

Nous avons procédé à diverses expérimentations afin d’évaluer certains choix algorith-miques de la version variable. Nous commentons ici brièvement quelques-uns des résultats remarquables que nous obtenons.

Nous avons comparé trois manières d’introduire les nouvelles contraintes des arêtes imposées et interdites I(v) et F (v) dans le programme linéaire (3.18), à savoir :

• forcer les variables concernées à valoir 0 ou 1 avec de nouvelles contraintes ; • procéder en pénalisant ou en favorisant des variables selon qu’elles correspondent

à des arêtes interdites ou imposées ;

• supprimer les variables contraintes du problème (3.18).

Nous avons retenu la première manière, ce qui permet de résoudre le nouveau problème avec la méthode duale du simplexe en partant de la base duale optimale du nœud père. Le choix de la position de l’instruction qui calcule la solution optimale x(v) d’un nœud v (étape 11 de l’algorithme 3.3.) a fait aussi l’objet de tests expérimentaux. Comme nous l’expliquons dans la section 3.3.2, la solution x(v) peut être calculée au besoin, c’est-à-dire au moment où cette solution serait énumérée. La solution x(v) peut aussi être déterminée de manière systématique, comme c’est le cas dans l’algorithme 3.3, i.e. après que les divers tests de bornes aient échoué à couper le nœud v et avant l’insertion du nœud v dans l’ensemble L. La comparaison des résultats expérimentaux relatifs à ces deux alternatives nous a conduit à retenir la seconde version et donc à positionner la recherche de la solution x(v) à l’étape 11 de l’algorithme 3.3.

Les instances avec un nombre important d’objectifs p, même si elles sont de petite taille (n petit), ralentissent la version unique, comme on peut l’observer dans les résultats de la table 3.5. Nous présentons dans la table 3.7 les temps de calcul moyens pour 20 instances aléatoires résolues avec les mêmes versions de l’énumération ordonnée unique et variable utilisées dans les tests de la table 3.6. Nous avons choisi des instances de petite taille (n = 20) par rapport à ce que nous pouvons résoudre avec nos procédures, et celà afin de pouvoir comparer les deux versions en augmentant le nombre des objectifs.

n p unique variable 20 7 2.57 2.34 8 0.97 2.87 9 119.54 8.09 10 110.88 11.44 11 572.02 10.28 12 33.58 10.98 13 _ 43.36 14 _ 80.93

Table3.7 – Temps CPU des versions unique et variable pour 7 ≤ p ≤ 14 (secondes)

Les résultats de la table 3.7 montrent en effet que la version variable supporte mieux l’augmentation du nombre d’objectifs p par rapport à la version unique.

Cela s’explique par le fait que pour la version unique, les contraintes qui s’ajoutent au problème original, afin de créer les nouveaux nœuds, détériorent la qualité de l’ap-proximation de la fonction f par ˆf . La raison est que le jeu de poids optimal ω, qui définit ˆf , est calculé une fois au début de l’énumération pour la version unique. La version avec minoration variable ne souffre pas de ce problème, puisque la fonction minorante est redéfinie pour chaque nouveau nœud de l’arborescence, ce qui corrige l’erreur d’ap-proximation de f par ˆfv causée par les contraintes du nœud v.

Ce défaut de la version unique est plus prononcé pour les instances avec beaucoup d’objectifs, puisque pour ce cas particulier l’approximation de f par ˆf est de mauvaise qualité. En effet, la valeur d’une solution selon la pseudo-distance f est donnée par une seule composante du vecteur critère qui lui est associé. La valeur de la même solution x selon la fonction ˆf est une combinaison des p composantes de son image z(x), donc les p − 1 composantes qui ne réalisent pas le maximum faussent l’approximation de la fonction f par ˆf .

La comparaison des résultats des tables 3.6 et 3.7 prouve que l’impact négatif de l’augmentation de la taille n est beaucoup plus important que celui causé par l’augmen-tation du nombre des objectifs p sur les performances de la version variable. Ceci peut être expliqué par le fait qu’une instance de grande taille engendre une séparation large avec le schéma de Murty-Lawler, ce qui ralentit la recherche de la kèmemeilleure solution. Or comme nous l’avons évoqué dans les commentaires de la table 3.6, c’est la principale faiblesse de la version variable. D’un autre côté, l’augmentation du nombre des objectifs impacte uniquement la recherche du meilleur jeu de poids, où une contrainte est ajoutée au programme linéaire (3.18) pour tout objectif supplémentaire. Ces contraintes ont peu d’effet sur le temps de calcul du programme linéaire continu (3.18).