Ordonnancement sur une
machine
Module MOP-Cours 2
Spécialité IAD
Philippe Chrétienne
Plan
Critères MinMax
1 / prec / fmax
1 / prec,pmtn,rj / fmax
1 / prec, rj, pmtn,Lmax
1 / rj,qj / Cmax
• Flowtime
1 / / !wj Cj
1 / rj, pmtn / !wj Cj
Notations
Enoncé d’un problème : E ;
Paramètres de E :
•les jobs : J= {J1,….,Jn}
•les durées pj ;
•les contraintes de précédence : (Ji,Jj)
•les dates de disponibilité rj
•les deadlines dj ;
•les durées de latence qj ;
•la préemption : pmtn
•la fonction coût : fj(Cj) .
E = <J;G(J);pj,j"J;rj,j"J;dj,j"J;fj,j"J>
f*(E) coût minimum d’un ordonnancement de E.
Algorithme de résolution d’un problème : A
Solution fournie par A pour l’énoncé E : A(E)
1 / prec / fmax
Un coût fj(Cj) est attaché à la terminaison du job Jj à la date Cj.
Les fonctions fj sont croissantes au sens large.
L’algorithme de Lawler construit un séquencement optimal
de la dernière à la première tâche de la séquence.
Idée de base de l’algorithme :
En raison de la monotonie des fonctions de coût,
il existe un ordonnancement optimal sans temps mort.
Une solution du problème sera donc représentée par une
séquence des n jobs.
Algorithme A1(E) ;
Si Card(J)=1 alors Retourner((J1)) ;
Choisir une sortie Jk de G dont le coût fk(!Jpj) est minimum ;
Ê := <J-{Jk};pj, j"J-{Jk};G(J-Jk);fj, j"J-{Jk}> ;
Retourner ((A1(Ê),Jk)).
Propriété de A1.
Soit E un énoncé, Ô= A1(E) et soit Jk le dernier job de Ô.
Il existe une solution optimale de E dont le dernier job est Jk .
Preuve :
Soit O* une solution optimale dont le dernier job est Ji où i!k .
Notons O*=O1 Jk O2 Ji la séquence des jobs dans O*.
La séquence O’= O1 O2 Ji Jk est réalisable ;
La solution O’ satisfait fmax(O’) " fmax(O*).
Preuve de A1 (récurrence sur n).
P(n): Si Card(J)=n, A1(E) est un ordonnancement optimal.
P(1) est vraie.
Supposons que P(n-1) soit vraie.
Considérons un énoncé E à n jobs.
Soit Ô=A1(E) = O1 Jk .
O1 est optimal pour J-{Jk} (induction et structure récursive de
l’algorithme)
D’après la propriété précédente, il existe un ordonnancement
optimal O* = O2 Jk.
On a alors :
fmax(Ô) = max{fmax(O1),fk(P)} " max{fmax(O2),fk(P)} = fmax(O*)
Il en résulte que Ô est optimal.
1 / prec, pmtn, rj / fmax
Première étape :
Rendre les dates de disponibilité rj «$compatibles$» avec G.
Propriété :
Soit O un ordonnancement quelconque.
Si (Ji,Jj) " prec alors : Sj # ri + pi .
max{ri+pi, rj} est donc aussi une date de disponibilité pour Jj .
Algorithme pour modifier les dates de disponibilité rj.
Supposons que (J1,J2,…,Jn) soit une liste topologique de prec.
(i.e : (Ji,Jj) " prec # i < j)
Algorithme B1(E)
r’1 := r1 ;
Pour j de 2 à n faire
r’j := max(Ji,Jj) "prec {r’i + pi}
FinPour ;
Retourner(r’).
Propriété des dates r’j :
Les valeurs r’j sont des dates de disponibilité pour E.
Pour tout Jj, r’j # rj ;
Pour tout (Ji,Jj) " prec : r’j # r’i .
On supposera dans la suite que les dates de disponibilité
rj sont compatibles avec prec.
Deuxième étape :
Calcul de l’ordonnancement au plus tôt non préemptif O
pour la séquence des jobs associée aux rj croissants au sens
large.
Notations :
B : bloc ;
Un bloc B possède :
•une date de début notée début(B) ;
•une date de fin notée fin(B) ;
•un ensemble de jobs noté jobs(B).
Rappel :
On suppose que :
1. les rj sont compatibles avec G ;
2. r1 " r2 " ……… " rn
Algorithme B2(E) ;
% retourne la liste des blocs de l’ordonnancement O%
i := ArgMin{rj,j"J} ;
t := Min{rj,j"J} ;
début(B) := t ; jobs(B) := {i} ;
Tantque i < n et ri+1 " t + pi faire
jobs(B) := jobs(B) $ {Ji+1} ;
t := t + pi ;
i := i + 1
FinTantque ;
fin(B) := t +pi ;
Si jobs(B)=J alors retourner((B))
sinon
Ê := <J-B ; G(J-B) ; pj,j"J-B ; rj,j"J-B ; fj,j"J-B > ;
Retourner ((B,B2(Ê)))
FinSi
1 / 22 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !