• Aucun résultat trouvé

4. Équité et ordonnancement

4.7 Calcul des intervalles de présence minimale

Dans cette partie nous donnerons des méthodes pour calculer les intervalles de présence mini-male des utilisateurs. Ces intervalles de présence minimini-male donnent une borne du temps de présence de chaque utilisateur. Cette borne permet de considérer un nombre de solutions plus restreint lors de la résolution.

L’évaluation d’un ordonnancement périodique s’effectue sur la partie périodique et non sur la partie transitoire. Les intervalles de présence sont donc calculés à partir du motif et sont répétés périodiquement.

Définition 4.26 (Paquets d’un utilisateur). La tâche i et la tâche j d’un utilisateur Uh

ap-partiennent à un même paquet dans un ordonnancement donné si elles se trouvent dans un même intervalle de présence pour cet utilisateur dans cet ordonnancement.

Un pâquet de tâche d’un utilisateur pour un ordonnancement donné est un ensemble de tâches qui appartiennent à un intervalle de présence pour cet ordonnancement.

Il existe des tâches qui ne peuvent jamais être séparées : soient deux tâches i et j telles que

ri+ pi≥ rj alors ces tâches ne sont pas séparables ; elles seront toujours dans le même intervalle de

présence et sont donc dans le même paquet de tâches quelle que soit la façon de les placer dans un ordonnancement quelconque.

Cette remarque amène à la notion de paquets élémentaires :

Définition 4.27 (Tâches liées, Paquets élémentaires). Deux tâches sont liées sur M machines si quel que soit l’ordonnancement ces deux tâches sur M machines sont toujours dans le même paquet : elles sont indissociables quelle que soit la façon de placer ces tâches, elles sont toujours dans le même intervalle de présence.

Un ensemble maximal de tâches liées constitue un paquet élementaire.

Les paquets de tâches d’un ordonnancement donné sont composés de paquets élémentaires de tâches.

Lemme 4.14 (Décomposition en paquets élémentaires). Dans un ordonnancement donné, un paquet de tâches se décompose en paquets élémentaires.

Démonstration. Effectivement, soit un ordonnancement donné, si un paquet contient une tâche appartenant à un paquet élémentaire alors par définition il contient aussi toutes les tâches de ce paquet élémentaire. Ainsi, tout paquet de tâches d’un ordonnancement particulier est l’union disjoint de paquets élémentaires.

Définition 4.28 (Utilisateurs permanents). Un utilisateur est dit permanent s’il est présent pendant toute la période quelle que soit la façon de placer ses tâches.

On peut déduire si certains utilisateurs sont permanents en calculant les paquets élémentaires (c’est suffisant mais non nécessaire). Si un utilisateur est permanent alors, on peut ne pas inclure son intervalle de présence (qui est alors constant) dans la fonction objectif globale.

Lemme 4.15. Les paquets élémentaires pour M> M machines sont inclus dans ceux pour

M machines.

Démonstration. En effet un ordonnancement sur M est aussi un ordonnancement sur M> M

machines. Par conséquent si deux tâches sont liées sur Mmachines elles sont liées sur M machines

aussi d’où le résultat.

4.7.1 Bornes sur le critère : intervalles minimaux de présence

4.7.1.a Borne “M= ∞”

Par conséquent, au regard du lemme précédent, les paquets élémentaires pour M machines sont composés des paquets élémentaires obtenus pour un nombre infini de machines. Or pour un nombre infini de machines, il est possible de caler chaque tâche sur sa date de disponibilité. Dans ce cas, les paquets obtenus sont minimaux. Il suffit alors de calculer ces paquets pour obtenir les paquets élémentaires pour un nombre infini de machines.

Fig. 4.7.1 m = ∞, 2 utilisateurs et intervalles de présence ci-dessous. Voici un algorithme de calcul des paquets élémentaires :

1. Trier les tâches par date de disponibilité 2. Pour chaque tâche op

(a) Si[op.dispo, op.dispo + op.duree] ∩ [paquet.min, paquet.max] ≠ ∅ alors insérer op dans

le paquet courant

(b) sinon ajouter le paquet courant à la liste des paquets en construction et le nouveau paquet courant contient op.

3. Retourner la liste des paquets

4.7.2 Borne “M= 1”

L’idée est de remplacer chaque tâche par une tâche de durée divisée par M et de caler les tâches à gauche sur une seule machine. Ceci est basé sur le fait qu’on ne peut écouler la quantité de calcul

Q en une durée de moins de Q/M.

Théorème 4.16. Les listes d’intervalles de présence obtenues sont alors forcément incluses dans les listes d’intervalles de présence de tout ordonnancement de ces tâches.

Démonstration. Notons LIPUm=1 la liste d’intervalles obtenue par la borne m= 1.

Supposons que ce ne soit pas une borne, dans ce cas il existe un ordonnancement O avec un

utilisateur U tel que LIPUm=1 ⊈ LIPU(O). Il existe alors un intervalle I = [a, b] de LIPm=1

U qui

n’est inclus dans aucun intervalle de LIPU(O). I ne peut pas être [0, T ] car [0, T ] ⊂ LIPU(O).

I est l’union des intervalles de présence d’un sous-ensemble E de tâches et a est forcément

égal à une date de disponibilité d’une tâches op. Soit I= [a, b] l’intervalle de présence de O qui

contient ce sous-ensemble de tâches. On a a≤ a, puisque op appartient à E.

Comme I⊈ Ic’est que b> b. Or cela est impossible puisque l’union des intervalles de présence

des tâches de E est inclus dans Iet qu’il est impossible d’écouler la quantité de calcul QE de E

en moins de QE/m = b − a.

Remarquons encore que dans le cas périodique le fait de caler les tâches à gauche n’est pas immédiat puisque les tâches d’une période précédente peuvent décaler les tâches de la période en cours.

Ainsi les deux approches M= 1 et M = ∞ donnent chacune des listes d’intervalles de présence

minimale par utilisateur dont l’union impose une liste d’intervalles par utilisateur où chacun est certain d’être présent.

4.7.3 Présentation du critère en lien avec l’équité

On cherche à être le plus équitable possible entre la quantité de calcul et le temps de présence

par utilisateur. Cela se traduit par le fait de maximiser l’ordre Leximin sur le vecteur[Qh/Th].

Notons que s’il existe une constante ω telle que ∀h, Th = ωQh avec le vecteur [Th] non dominé

alors cette solution serait la plus équitable.

4.7.4 Remarques

Si chaque tâche appartient à un utilisateur différent, le problème de la somme des temps de

présence est équivalent au problème de minimiser la somme des Ci avec dates de disponibilités.

S’il n’y a qu’un utilisateur, le problème revient à minimiser successivement le makespan avec des dates de disponibilités. Le problème mono-utilisateur est composé d’une suite de problèmes de Makespan ; car ce problème revient à minimiser son temps de présence qui est la somme des Makespan des différents paquets. En effet à partir du moment où deux tâches sont séparables il faut minimiser le Makespan du premier ensemble de tâches puis minimiser le Makespan du suivant et ainsi de suite. L’algorithme d’approximation de Shmoys [Shmoys et al., 1995] permet de construire un ordonnancement avec un coefficient d’approximation 2 fois moins bon à partir d’un algorithme

1 T1

1 T2

Fig. 4.7.2 Les axes représentent l’inverse des temps de présence de 2 utilisateurs. La quantité de calcul Qhde chacun des utilisateurs est connue. La droite en pointillée correspond à Qh/Thconstant. Les lignes de niveaux du Leximin pondéré sont représentées par un dégradé. La solution la plus équitable pour [Qh/Th]est le point rouge.

approché pour le problème sans dates de disponibilités pour le Makespan. La technique du “Branch and Bound” donne de bons résultats pour ce problème.

Avec plusieurs utilisateurs et en supposant connaître les paquets élémentaires, le problème revient à savoir comment fusionner ces paquets au mieux selon le critère considéré.

Documents relatifs