• Aucun résultat trouvé

3. Ordonnancement en présence de données incertaines

3.2. Classification des méthodes d’ordonnancement en présence de perturbations

3.2.1. Les approches réactives

« Les approches réactives décident quand et où les activités doivent être exécutées, et ce en se

basant sur les informations mises à jour concernant l’état du système et éventuellement sur un ordonnancement prédictif initial » [DAV00].

On distingue les approches totalement réactives ou réactive pure qui n'utilisent pas d'ordonnancement prédictif initial et les approches prédictives réactives qui utilisent à la fois un algorithme prédictif qui calcule un ordonnancement initial hors ligne, sans tenir compte de la présence de perturbations, et un algorithme réactif qui tient compte du nouvel état du système pour recalculer une nouvelle solution chaque fois qu'un aléa survient.

Dans l’approche réactive pure, aucun ordonnancement initial n’est donné à l’atelier. Les décisions sont prises localement en utilisant dans la plupart des cas des règles de priorité. Dans les approches prédictives réactives, un ordonnancement prédictif est généré initialement sans tenir compte de futurs aléas. Enfin, quand très peu d’hypothèses sont faites sur les données, les décisions à prendre à chaque instant sont très difficiles à évaluer à priori, et c’est le domaine de l’ordonnancement en ligne (en anglais on-line scheduling).

Nous présentons dans ce qui suit deux techniques d’ordonnancement issues de l’approche réactives : la première basée sur le voisinage et la seconde sur le réordonnancement.

3.2.1.1 Technique basée sur le voisinage

Cette technique est inspirée des travaux récents sur les fonctions d’optimisation continues [BRA00]. Dans les applications actuelles, on peut trouver des imprécisions dans le passage d’une solution idéale à son implémentation [JEN01]. Dans ce cas, une solution robuste est tirée à partir des pics larges dans le graphe de la fonction objectif, alors que les solutions non robustes sont sur les pics étroits (Fig. 4.3). Les solutions avoisinantes de la solution optimale doivent se trouver sur les pics larges du graphe. Ceci parce que sur un pic large la valeur de la fonction objectif est toujours meilleure que celle d’un pic étroit.

Figure 4.3 : Graphe de la fonction d'optimisation continue

On remarque qu’avec la même perturbation δ sur les solutions x et y, notée (x+δ, y+δ), la fonction objectif f(y) a diminuée plus que f(x).

Dans le problème d’ordonnancement, l’idée est que lorsqu’une panne survient, on puisse trouver un ordonnancement proche du l’ordonnancement initial (minimum de permutations de tâches par rapport à l’ordonnancement original), pouvant s’exécuter partiellement autour de la panne. Il existe plusieurs algorithmes pour la génération du voisinage. Parmi ces algorithmes, on peut trouver les algorithmes génétiques et leurs dérivées [JEN01a].

3.2.1.2 Technique basée sur le réordonnancement

Dans cette approche, un ordonnancement prédictif est généré initialement sans tenir compte de la présence de futurs aléas. Il permet en particulier de prévoir l'arrivée dans l'atelier de composants secondaires de manière raisonnable peu avant la date où les tâches vont les utiliser. Cet ordonnancement est ensuite soumis à l'atelier pour exécution. En présence d'aléas, cet ordonnancement est soit remplacé par un autre ordonnancement recalculé en utilisant les

nouvelles données du problème, on parle alors de réordonnancement, ou bien modifié et réparé pour tenir compte du nouvel état de l'atelier.

Elle doit assurer :

- La disponibilité d’ordonnancements utilisables à l’instant de l’apparition d’aléas : Avant l’occurrence de perturbations, un ordonnancement était entrain de s’exécuter, mais après, un réordonnancement doit être lancé. Une partie de l’ordonnancement s’exécutant au moment de l’occurrence de la perturbation peut être utilisé comme espace de recherche initial dans le cas où le réordonnancement est dépendant de l’ordonnancement original ; - Quand on réordonnance, il est souhaitable que le nouvel ordonnancement soit le plus proche possible de l’ordonnancement original ;

- Le processus de réordonnancement ne doit pas être long.

Le réordonnancement peut être exécuté de plusieurs manières [ALO02]:

1. Le réordonnancement continu qui consiste à recalculer un nouvel ordonnancement

chaque fois qu'une perturbation surgit rendant l'ordonnancement initial non réalisable. Il permet bien évidement, s'il est applicable, d'obtenir de très bonnes performances en fin d'exécution. Cependant, il nécessite beaucoup de ressources de calcul.

2. Le réordonnancement périodique est appliqué à des intervalles réguliers dans le temps.

Si une perturbation a lieu entre deux instants de réordonnancement successifs, des règles simples de réparation de l'ordonnancement courant sont utilisées. Ce type de réordonnancement requiert moins de temps de calcul que le réordonnancement continu et donne une idée plus claire de ce qui va être exécuté au moins entre deux instants successifs de réordonnancement global. Cependant, il peut donner de moins bonnes performances surtout si une ou plusieurs perturbations importantes surgissent entre deux instants de réordonnancement.

3. Le réordonnancement événementiel combine les avantages des deux derniers types de

réordonnancement. Le réordonnancement est aussi appliqué à des intervalles réguliers. Lors de l'occurrence d'une perturbation entre deux instants de réordonnancement successifs, il faut décider si on utilise une règle simple de réparation ou si il est nécessaire de faire un réordonnancement global. Cette décision est difficile à faire et nécessite une analyse fine de la situation et/ou l'expérience du décideur.

1. La méthode de décalage à droite (en anglais right-shift rescheduling) consiste, pour le

cas d'une panne, à retarder dans le temps les opérations affectées par la panne en maintenant la même séquence de départ au niveau de chaque machine. Une opération se trouve affectée par la panne si elle est exécutée sur la machine en panne ou à cause de contraintes de précédence. Cette méthode est très simple (même triviale) et permet de préserver la stabilité de l'atelier. Cependant, elle ne permet pas, dans la majorité des cas, d'obtenir de bonnes performances.

2. Le réordonnancement complet consiste à considérer les opérations non encore exécutées

et construire un nouvel ordonnancement en tenant compte de l'état de l'atelier (disponibilité des machines, nouvelles caractéristiques de tâches, etc.). Ce type de méthode favorise bien évidement la performance de l'ordonnancement réalisé mais peut contribuer facilement à l'instabilité de l'atelier.

3. Le réordonnancement multi-objectifs consiste à considérer l'efficacité de

l'ordonnancement réalisé et la stabilité de l'atelier dans le processus de recalcul d'un nouvel ordonnancement suite à une perturbation.

4. Le réordonnancement par retour vers l'ordonnancement initial (en anglais match up rescheduling) consiste à recalculer une partie de l'ordonnancement prédictif initial de façon

à ce que le nouvel ordonnancement revienne sur l'ordonnancement initial à un point donné dans le temps. Ceci nécessite la présence de temps morts dans l'ordonnancement initial. Dans la plupart des méthodes rencontrées dans la littérature, on a considéré que, indépendamment de la fréquence de réordonnancement, le réordonnancement multi-objectifs et le réordonnancement par retour vers l'ordonnancement initial sont les plus intéressants. En effet, dans ces méthodes, on essaie de modifier le moins possible l'ordonnancement initial pour assurer ainsi une certaine prédictibilité du système de production tout en espérant préserver de bonnes performances.