• Aucun résultat trouvé

2.4 Propagation de contraintes pour l’ordonnancement

2.4.4 Propagation de contraintes de ressources

Les propagations de contraintes de ressources que nous allons présenter par la suite permettent de déduire des ordres partiels entre tâches ou ensembles de tâches. Dans ce paragraphe, nous allons dresser un état de l’art (non exhaustif) des propagations les plus usuelles dans le cas de ressources disjonctives (même si certaines d’entre elles sont géné-ralisées pour des ressources cumulatives) qui permettent de déduire des ordres partiels du type :

· précédences interdites entre tâches, notées i ⊀ j.

· tâches non premières ou non dernières parmi un ensemble de tâches, notées i ⊀ Ω ou Ω ⊀ i avec Ω un ensemble de tâches. Ces propagations sont appelées not first/not last dans la littérature [31, 33, 34, 125, 36, 6, 108].

· tâches premières ou dernières dans un ensemble de tâches, notées i ≺ Ω ou Ω ≺ i avec Ωun ensemble de tâches. Les propagations permettant d’obtenir ce type de déduction sont appelées edge finding ou sélection immédiate dans la littérature [33, 2, 34, 125, 29, 35].

Une fois ces ordres partiels obtenus, les ajustements sur les fenêtres temporelles ci-dessous peuvent être effectués :

si j ≺ i alors ri← max(ri, ef tj)et dj ← min(dj, lsti) (2.1) si i ⊀ Ω alors ri ← max(ri, min

j∈Ω(ef tj)) (2.2)

si Ω ⊀ i alors di← min(di, max

j∈Ω(lstj)) (2.3)

si i ≺ Ω alors di ← min(di, min

Ω0⊆Ω(d0 − pt

Ω0)) (2.4)

si Ω ≺ i alors ri← max(ri, max

Ω0⊆Ω(r0+ pt0)). (2.5) Ces ajustements peuvent permettre par la suite de nouvelles déductions par propagation des contraintes temporelles. Le processus est alors ré-itéré jusqu’à ce qu’il n’y ait plus de modification dans l’ensemble des contraintes.

Lorsque l’on dispose d’une matrice de distance entre les variables temporelles du problème d’ordonnancement, les déductions de séquencements obligatoires (entre deux tâches ou entre une tâche et un ensemble) peuvent être directement intégrées. Les actualisations de fenêtres temporelles sont ensuite obtenues par propagation de contraintes temporelles. Précédences interdites

La règle de déduction élémentaire de précédences interdites considère les paires de tâches en conflit pour l’utilisation d’une ressource (par exemple la paire {i, j} provenant soit d’un ensemble critique soit d’un ensemble disjonctif maximum) et étudie les largeurs des fenêtres de temps disponibles en positionnant soit i avant j soit le contraire par rapport aux durées nécessaires de réalisation des deux tâches. Pour une ressource k et pour une paire de tâches en conflit {i, j}, sa formulation est donnée par la condition (2.6).

si dj− ri < pt

i+ pt

j alors i ⊀ j et donc j ≺ i (2.6)

Une généralisation [30, 84, 103, 49] de cette condition de précédence interdite, se base sur la matrice de distance maintenue par un algorithme de chemin-consistance aux bornes. Dans ce cas, un test sur la valeur déduite dans la matrice de distance entre les variables stj

et fti permet de déduire une précédence interdite comme spécifié dans la condition (2.7). si cstj,f ti > 0 alors i ⊀ j et donc j ≺ i (2.7) Il a été montré que cette formulation domine la formulation de l’équation (2.6).

En se basant sur le raisonnement énergétique [54, 107], une autre règle de précédence interdite peut être définie dans le cas de problème disjonctif. Cette règle de précédence interdite se base sur la consommation minimale de tâches sur un intervalle de temps donné ∆ = [r, d], notée w

i pour une tâche i. Le calcul de cette consommation minimale résulte des différentes positions relatives que peut prendre la tâche i ramenée à sa durée minimale par rapport à ∆ : inclusion de i dans ∆, inclusion de ∆ dans i, durée de i débordant sur ∆ lorsque i est calée au plus tôt, durée de i débordant sur ∆ lorsque i est calée au plus tard. D’où la formule :

wi = max[0, min(pt

Pour une ressource k et pour toute paire de tâches en conflit {i, j}, si on considère l’inter-valle ∆ = [ri, dj], la condition (2.9) donne la formulation de la règle de précédence interdite en utilisant les consommations minimales des tâches autres que i et j s’exécutant sur la ressource k. si dj− ri < pt i+ pt j + X t∈Tk\{i,j} w[ri,dj] t alors i ⊀ j et donc j ≺ i (2.9) Il a été montré [107] que la règle de propagation (2.9) domine la règle (2.6).

Not First / Not Last

La règle de déduction de condition not first s’appuie sur les ensembles disjonctifs maxi-mums. Soient Ek un tel ensemble disjonctif maximal pour une ressource k, Ω ⊂ Ek et i ∈ Ek\Ω, la règle not first, exprimée par la condition (2.10), teste si le positionnement de icalée au plus tôt peut être suivi du séquencement de l’ensemble des tâches de Ω sans que ceci n’entraîne un dépassement de la plus grande date de fin des tâches de cet ensemble. Si ce n’est pas le cas, la tâche i ne peut être placée avant celles de Ω :

si ri+ pti+ pt> d alors i ⊀ Ω (2.10) De manière symétrique, la règle not last, donnée par la condition (2.11), teste si la tâche i peut être calée au plus tard précédée de l’ensemble des tâches de Ω sans que cela n’entraine un dépassement de la plus petite date de début au plus tôt des tâches de cet ensemble :

si di− pt

i− pt

< r alors Ω ⊀ i (2.11)

Des implémentations de ces règles de propagation peuvent être trouvées dans [7, 146]. Une dernière condition fournie en (2.12) permet de détecter la non-insérabilité [33] d’une tâche i dans un ensemble Ω, notée i /∈ Ω. Pour cela, elle teste la possibilité de séquencer l’ensemble des tâches de cet ensemble et de i à l’intérieur de la fenêtre temporelle de Ω.

si d− r < pt+ pti alors i /∈ Ω (2.12) Ainsi, la tâche i est soit positionnée avant l’ensemble des tâches de Ω soit après. Cette déduction de non-insérabilité, couplée avec celles de not first/not last permet d’obtenir des séquencements obligatoires entre i et Ω.

Edge Finding

Comme pour la déduction de précédences interdites, il existe différentes formulations de règles de propagation permettant de déduire des séquencements obligatoires entre une tâche i et un ensemble Ω. Les différentes conditions permettant de détecter ces sélections immédiates ne se recouvrent pas les unes par rapport aux autres.

La formulation ci-dessous est issue des travaux de [33, 34], elle vérifie s’il est possible de séquencer les tâches de Ω et la tâche i dans la fenêtre temporelle délimitée par le début au plus tôt de Ω et la fin au plus tard entre celle de i et celle de Ω dans le cas de la condition (2.13) ou dans la fenêtre temporelle délimitée par la date de fin au plus tard de Ωet le début au plus tôt entre celui de Ω et celui de i pour la condition (2.14).

si r+ pt

+ pt

si d− pt

− pt

i < min(ri, r) alors Ω ≺ i (2.14) Des implémentations efficaces de ces règles de déductions peuvent être trouvées dans [34,