• Aucun résultat trouvé

4.3 Mesure de la qualité d'un ensemble dominant

4.3.2 Calcul du retard au pire d'un travail

Considérons à présent le calcul de Lmax

j . De façon symétrique au cas précédent, an de

maximiser le retard du travail j, celui-ci est supposé aecté à la pyramide d'indice v(j), c'est-à-dire le plus tard possible. D'autre part, les travaux k devant nécessairement être séquencés après j (i.e. les travaux k tels que u(k) > v(j)) ne sont pas considérés. Nous notons P redmax

j l'ensemble des travaux restants. Trouver Lmaxj consiste alors à maximiser

le makespan Cmax des travaux de P redmaxj tout en respectant le théorème des pyramides.

Comme précédemment, les retards de ces travaux n'étant pas signicatifs pour le calcul de Lmax

j , leur date d'échéance peut être xée à une valeur arbitraire. La structure d'inter-

valles ainsi obtenue étant à nouveau "en escalier", nous pourrions alors utiliser la version inversée de la règle de Jackson qui consiste à classer les travaux par ordre de ri décroissant

pour maximiser leur Cmax. Toutefois, la séquence obtenue ne respecterait alors pas le théo-

rème des pyramides. Pour pallier ce problème, nous nous proposons de considérer d'une part les travaux k tels que v(k) < v(j), (i.e. appartenant à des pyramides antérieures à celle de j) et d'autre part les travaux k tels que u(k) ≤ v(j) ≤ v(k) (i.e. pouvant être aectés à la même pyramide que celle de j).

4.3 Mesure de la qualité d'un ensemble dominant 83

An de maximiser la longueur du chemin critique associé à j, nous aectons les travaux k tels que v(k) < v(j) à la pyramide d'indice v(k), de façon à ce qu'ils soient ordonnancés le plus tard possible. Les aectations des travaux aux pyramides étant établies, le problème de maximiser le Cmax des travaux situés dans les v(j) − 1 pyramides d'indice inférieur à

v(j) se décompose alors en v(j) − 1 problèmes de maximisation indépendants. Chaque problème consiste à maximiser le makespan CPi

max des travaux aectés à la pyramide Pi. Il

peut être résolu optimalement, avec respect du théorème des pyramides, en construisant une sous-séquence dans laquelle les travaux sont séquencés par ordre de di croissant. En

eet, de cette façon, le sommet est toujours placé en tête de la sous-séquence, puisqu'il possède par dénition la date d'échéance di la plus petite. De plus, le sommet possédant

également la date de début ri la plus grande, on a CmaxPi = rs+Pj∈Pi−{s}pj et il n'existe

clairement aucune séquence produisant une valeur supérieure à celle-ci. Remarquons aussi que la sous-séquence ainsi obtenue respecte bien le théorème des pyramides.

La séquence, notée S1

j, conduisant au Cmax le plus grand sur l'ensemble des travaux

situés dans les pyramides d'indice inférieur à v(j) correspond alors à la juxtaposition des sous-séquences déduites précédemment (cf. gure 4.11).

Fig. 4.11: La sous-séquence S1

j avant la pyramide d'indice v(j)

Considérons à présent les travaux k tels que u(k) ≤ v(j) ≤ v(k). Pour maximiser le retard de j, nous aectons ces travaux k tels que u(k) ≤ v(j) ≤ v(k) à la pyramide d'indice v(j) (celle de j). En eet, plus le nombre de travaux placés avant j est important et plus ceux-ci sont ordonnancés tard, plus le retard algébrique de j sera important. Le problème est alors de déterminer, en respectant le théorème des pyramides, quelle séquence parmi celles de l'ensemble dominant plaçant j en dernier dans la pyramide v(j), possède le Cmaxle

plus grand. En cohérence avec le théorème des pyramides, il est facile de montrer que cette séquence correspond à celle où le plus de travaux possibles sont placés après le sommet, c'est-à-dire entre le sommet de la pyramide v(j) et le travail j. Pour l'obtenir, il sut de placer tous les travaux k tels que dk > dj avant le sommet et tous les travaux restants

étaient placés après le sommet, ils seraient séquencés après j (cf. théorème des pyramides). En suivant cette règle, nous pouvons donc garantir que le travail j est mis à la dernière position dans la pyramide d'indice v(j) et que le Cmax des travaux dans cette pyramide est

maximisé.

Proposition 4.3.1. Soit une structure d'intervalles caractérisée par une unique s-pyramide P de sommet s, la séquence la plus défavorable vis-à-vis du retard algébrique d'un travail j ∈ P est obtenue en plaçant tout travail k ∈ P − {s} tel que dk> dj avant s par ordre de

ri croissant, sinon après s par ordre de di croissant.

Démonstration. Selon la proposition précédente, toute séquence S obtenue est de la forme A ≺ s ≺ B ≺ j(A ≺ s dans le cas où le travail j considéré est le sommet s de la pyramide). A correspond à l'ensemble des travaux k ∈ P − {s} tels que dk > dj et B à l'ensemble

des travaux k ∈ P − {s} tels que dk ≤ dj. Le makespan de j dans cette séquence S est

CS

max(j) = max(CmaxA , rs) + ps+Pk∈Bpk+ pj. Nous montrons dans la suite de cette dé-

monstration que séquencer un travail de A (resp. de B) après (resp. avant) le sommet s peut diminuer la valeur de CS

max(j) mais jamais l'augmenter, d'où le résultat énoncé dans

la proposition 4.3.2.

Supposons qu'un travail i de A est séquencé après le sommet s. Comme di > dj, le

théorème des pyramides produit une nouvelle séquence S′ de la forme A≺ s ≺ B ≺ j ≺ i,

où A′ = A − {i}. Le makespan de j dans cette nouvelle séquence Sest CS′

max(j) =

max(CA′

max, rs) + ps+Pk∈Bpk+ pj. Comme les travaux de A et A′ sont classés par ordre

croissant des dates de début au plus tôt, on a CA

max ≥ CA

max et donc CmaxS (j) ≥ CS

max(j).

On en conclut que pour maximiser la date de n de j, aucun travail de A ne doit être placé après le sommet s.

Supposons à présent qu'un travail i de B est séquencé avant le sommet s. Le théorème des pyramides produit une nouvelle séquence S′ de la forme A≺ s ≺ B≺ j, où les

travaux de A′ = A + {i} sont ordonnés par ordre croissant des dates de début au plus tôt

et les travaux de B′ = B − {i} sont ordonnés par ordre croissant des dates de n au plus

tard. Le makespan de j dans cette nouvelle séquence S′ est CS′

max(j) = max(CA

max, rs) +

ps+Pk∈Bpk+ pj− pi. D'après l'expression de CmaxS (j), on en déduit CS

max(j) − CmaxS (j) =

max(CA′

max, rs) − max(CmaxA , rs) − pi. La valeur de CA

max étant nécessairement supérieure ou

égale à CA

max, nous considérons deux cas :

1. Si CA max≤ CA ′ max ≤ rs alors CS ′ max(j) − CmaxS (j) = −pi ≤ 0.

2. Sinon nous montrons que CA′

max−CmaxA ≤ pi et donc CS

max(j)−CmaxS (j) ≤ 0

est également vrai.

On a A′ = A

1 ≺ i ≺ A2 et A = A1 ≺ A2 où ∀k ∈ A1, rk ≤ ri et

∀k ∈ A1, rk > ri. Nous notons respectivement CmaxA1 , et CmaxA2 le makespan

4.3 Mesure de la qualité d'un ensemble dominant 85 plus tôt la plus petite des travaux de A2 en se souvenant que ri ≤ rA2 par

dénition. On a : CmaxA = max(CA1 max, rA2) + C A2 max et

CmaxA′ = max(Cmaxi , rA2) + C

A2

max

Cmaxi = max(CA1

max, ri) + pi

Intéressons nous à la valeur de Ci

max. Si CmaxA1 ≥ ri alors Cmaxi = CmaxA1 + pi

et donc CA′

max− CmaxA = max(CmaxA1 + pi, rA2) − max(C

A1 max, rA2), d'où C A′ max− CA max≤ pi. Sinon si CA1

max < ri alors Cmaxi = ri+ pi et donc CA

max− CmaxA = max(ri+

pi, rA2) − max(C A1 max, rA2). Comme ri ≤ rA2 et C A1 max< ri, il vient : CA ′ max− CA

max= max(ri+ pi, rA2) − rA2 = max(ri+ pi− rA2, 0) ≤ pi.

On en conclut que pour maximiser la date de n de j, aucun travail de B ne doit être placé avant le sommet s.

Soit S2

j la sous-séquence construite par application de la règle de la proposition 4.3.2

en considérant la pyramide d'indice v(j) (cf. gure 4.12).

Fig. 4.12: La sous-séquence Sj

2 de la pyramide d'indice v(j)

Notons Seqmax

j , la juxtaposition des deux sous-séquences Sj1 et Sj2 précédemment dé-

terminées (i.e. Seqmax

j = Sj1 ≺ Sj2), et C Seqmax

j

max , le makespan correspondant. Nous avons

Lmaxj = max(CSeq

max j

max , rj) + pj− dj

L'algorithme pour calculer Lmax

j est décrit sur la gure 4.13. Sa complexité temporelle

est en O(n log n).

Pour illustration, nous reprenons à nouveau l'exemple proposé dans le tableau 4.1 en nous intéressant au calcul du pire retard du travail 6, Lmax

6 . Le travail 6 appartient aux

pyramides caractérisées par les sommets 2 et 4, d'où v(6) = 2. L'ensemble P redmax

6 contient

les travaux k tels que u(k) ≤ v(6) = 2. Donc P redmax

6 = {1, 2, 3, 4}.

Pour maximiser le Cmax des travaux dans P redmax6 , nous aectons d'abord les tra-

vaux k possédant v(k) < v(6) = 2 dans les pyramides d'indice v(k). Dans cet exemple, ces travaux sont les travaux 2 et 3 puisque v(2) = v(3) = 1. La séquence Smax

1 est S1max=2 ≺ 3.

Les travaux k tels que u(k) ≤ v(6) ≤ v(k) sont aectés à la pyramide d'indice v(6) = 2, avec le travail 6. Ces travaux k sont les travaux 1 et 4. Pour maximiser le Cmax de ces

travaux, nous appliquons la règle de la proposition 4.3.2 qui produit la séquence Smax 2 =

1 ≺ 4 ≺ 6, maximisant le Cmax du travail 6.

En concaténant les deux sous-séquences S1

j et Sj2, nous obtenons la séquence 2 ≺ 3 ≺

1 ≺ 4 ≺ 6, qui produit le plus grand retard pour le travail 6, et Lmax6 = 7.