• Aucun résultat trouvé

125 de recherche et l'algorithme de parcours de l'arbre de recherche pour la conception de

PROGRAMMATION PAR CONTRAINTES

125 de recherche et l'algorithme de parcours de l'arbre de recherche pour la conception de

l'algorithme de résolution du problème MURDS.

5.4.1 Algorithme de recherche

Pour résoudre le problème MURDS, le solveur ILOG SOLVER™ 6.0 [ILOG, 2003]

et ILOG SCHEDULER™ 6.0 [ILOG, 2003a] sont utilisés. Tel que mentionné précédemment, l'algorithme de résolution pour le problème particulier peut être développé indépendamment de la formulation. Également, tel qu'expliqué à la Section 5.2.2, il faut définir ce qui est appelé un Goal pour concevoir un algorithme de résolution avec ILOG SOLVER™ 6.0 [ILOG, 2003]. Celui-ci précise la procédure de recherche dans l'espace des solutions. Pour cela, une instance de la classe I l o G o a l doit être créée. ILOG SCHEDULER™ 6.0 [ILOG, 2003a] offre six Goal prédéfinis pour modéliser les algorithmes de recherche pour établir un ordonnancement : IloRankBackward, I l o R a n k F o r w a r d , I l o S e q u e n c e B a c k w a r d , I l o S e q u e n c e F o r w a r d , I l o S e t T i m e s F o r w a r d et I l o S e t T i m e s B a c k w a r d . Pour la résolution du problème MURDS, seulement les deux derniers Goal peuvent être utilisés car les autres ne sont utilisés que pour ordonnancer des ressources entre elles et non des activités sur des ressources. Ainsi, nous pouvons utiliser I l o S e t T i m e s F o r w a r d qui affecte des valeurs aux variables représentant les temps de début d'exécution de toutes les activités traitées ou I l o S e t T i m e s B a c k w a r d qui affecte des valeurs aux variables représentant les temps de fin d'exécution de toutes les activités. Concernant ce dernier Goal, il faut toutefois définir un horizon d'exécution pour une séquence d'activités. Un horizon d'exécution définit la date de fin d'exécution au plus tard de toutes les activités. Cela permet ainsi de créer une borne supérieure aux

temps de fin d'exécution des différentes activités. Pour cela, la classe I l o S c h e d u l e r E n v , qui groupe tous les paramètres par défaut lors de la modélisation d'un problème d'ordonnancement, est utilisée. Il suffit ensuite d'appliquer la méthode I l o S c h e d u l e r E n v : : s e t H o r i z o n ( I l o l n t H o r i z o n ) qui fixe l'horizon calculé préalablement. Pour ce problème, l'horizon utilisé représente la date de fin d'exécution de la dernière activité en ordonnant toutes les activités en ordre croissant de leurs dates dues respectives. L'horizon pourrait être calculé différemment, notamment en sommant tous les temps d'exécution avec, pour chacun d'eux, le temps de réglage moyen.

Cependant, plus les domaines des activités sont restreints, plus la recherche s'en trouve accélérée. De même, il ne faut pas que l'horizon soit trop petit pour ne pas éliminer des solutions potentiellement réalisables en terme de retard total. Ainsi, l'ordre croissant des dates dues se veut une heuristique assurant une borne intéressante.

En utilisant les Goal I l o S e t T i m e s F o r w a r d et I l o S e t T i m e s B a c k w a r d , il est possible de définir l'heuristique d'ordonnancement des variables représentant les temps de début (pour I l o S e t T i m e s F o r w a r d ) ou de fin (pour I l o S e t T i m e s B a c k w a r d ) d'exécution des activités à placer dans la séquence, appelée sélectionneurs d'activités {Activity Selector). Comme nous l'avons exprimé au début du chapitre, l'ordonnancement des variables à affecter a un rôle très important dans la réduction de l'espace de recherche et, par le fait même, sur le temps de calcul. ILOG SCHEDULER™ 6.0 [ILOG, 2003a] offre également quatre sélectionneurs d'activités prédéfinis. Le premier, I l o S e l F i r s t A c t M i n E n d M i n , retourne l'activité qui a le plus petit temps de début et, en cas d'égalité, celle qui a le plus petit temps de fin. Le deuxième, I l o S e l F i r s t A c t M i n E n d M a x , retourne l'activité qui a le plus petit temps

127 de début et, en cas d'égalité, celle qui a le plus grand temps de fin. Le troisième, I l o S e l L a s t A c t M a x S t a r t M a x , retourne l'activité qui a le plus grand temps de début et, en cas d'égalité, celle qui a le plus grand temps de fin. Finalement, I l o S e l L a s t A c t M a x S t a r t M i n retourne l'activité qui a le plus grand temps de début et, en cas d'égalité, celle qui a le plus petit temps de fin. Ainsi, il est possible d'utiliser huit algorithmes de recherche : 2 Goal avec 4 sélectionneurs d'activités. Le Tableau 5-1 présente les résultats obtenus avec ces huit algorithmes où ceux-ci ont été exécutés pendant 2 minutes sur les 32 instances de Rubin et Ragatz [1995] introduites dans le chapitre précédent.

Compte tenu de la dispersion et pour ne pas surcharger les tableaux, les résultats présentés dans ce chapitre fournissent les valeurs des solutions trouvées plutôt que les déviations par rapport aux meilleures solutions connues. Au Tableau 5-1, la colonne PROB définit le nom de l'instance considérée tandis que la colonne OPT fournit les résultats optimaux trouvés par le B&B de Bigras et al. [2008] pour chaque instance. Les quatre colonnes notées (1) à (4) présentent les résultats des algorithmes utilisant I l o S e t T i m e s F o r w a r d comme heuristique d'ordonnancement des variables tandis que les colonnes notées (5) à (8) présentent les résultats des algorithmes utilisant I l o S e t T i m e s B a c k w a r d . Les algorithmes des colonnes (1) et (5) utilisent I l o S e l F i r s t A c t M i n E n d M a x comme sélectionneur d'activités, les algorithmes des colonnes (2) et (6) utilisent I l o S e l F i r s t A c t M i n E n d M i n comme sélectionneur d'activités, les algorithmes des colonnes (3) et (7) utilisent I l o S e l L a s t A c t M a x S t a r t M i n comme sélectionneur d'activités et, finalement, les algorithmes des colonnes (4) et (8) utilisent I l o S e l L a s t A c t M a x S t a r t M a x . Pour

limiter le temps de recherche d'un algorithme avec ILOG SOLVER™ 6.0 [ILOG, 2003], il faut utiliser la méthode I l o S o l v e r : : s e t T i m e L i m i t ( ) . Toutefois, avec une limite sur le temps d'exécution, l'algorithme ne retourne pas de solutions lorsque l'optimal n'est pas trouvée. Il faut donc sauvegarder la meilleure solution trouvée en utilisant la méthode I l o S o l v e r : : s t a r t N e w S e a r c h ( c o n s t I l o G o a D p o u r exécuter le Goal.

Les meilleurs résultats obtenus sont indiqués en zone ombragée au Tableau 5-1. Les cases avec un tiret (-) représentent les cas où l'algorithme n'a pas trouvé de solution. La première constatation concerne l'écart qui s'accroît, avec l'augmentation du nombre d'activités des instances, entre les meilleurs résultats trouvés et les résultats optimaux.

Nous remarquons que les résultats des deux algorithmes I l o S e t T i m e s F o r w a r d avec I l o S e l F i r s t A c t M i n E n d M i n (2) et I l o S e t T i m e s B a c k w a r d avec I l o S e l L a s t A c t M a x S t a r t M i n (7) se distinguent plus particulièrement. En effet, pour les 32 instances, l'algorithme (2) trouve 19 fois les meilleurs résultats tandis que l'algorithme (7) trouve ces résultats à 20 reprises. Si nous comparons plus directement la performance de ces deux algorithmes, nous notons que l'algorithme (2) surpasse l'algorithme (7) à 10 reprises tandis que ce dernier le surpasse à 11 reprises. Il est toutefois difficile de tirer une conclusion sur le meilleur de ces deux algorithmes. Nous avons donc fait évoluer ces deux algorithmes ainsi que les algorithmes (1) et (8) sur une plus longue période de temps.

129

Tableau 5-1 : Comparaison des heuristiques de sélection d'activités avec 2 minutes de temps de calcul

Le Tableau 5-2 présente les résultats associés aux algorithmes (1), (2), (7) et (8) pour une durée d'exécution de 10 minutes. Nous remarquons que les résultats des algorithmes I l o S e t T i m e s F o r w a r d avec I l o S e l F i r s t A c t M i n E n d M i n (2) et I l o S e t T i m e s B a c k w a r d avec I l o S e l L a s t A c t M a x S t a r t M i n (7) se distinguent encore une fois. En effet, sur les 32 instances, l'algorithme (2) trouve les meilleurs