Documente Academic
Documente Profesional
Documente Cultură
s.fr http://www.ismans.fr
Tuteur : Monsieur El Kaabouchi Chef de Projet : Meyer Michal Groupe: Chauvet Floriane Allard Jean-Franois Bazin Frdric Bianchini Rmi Celli Marc-Antoine Girault Nicolas
Anne 2008/2009
V.2.ii Algorithme en rcursif.............................................................................................................................8 a) Algorithme.......................................................................................................................................................8 V.2.iii Algorithme en itratif...........................................................................................................................10 a) Dclaration des matrices utilises lors de l'algorithmique............................................................................10 Dclaration de la matrice M1...........................................................................................................................10 a) Dclaration de la matrice intermdiaire M2..................................................................................................11 V.2.iv Algorithme en rcursif..........................................................................................................................12 a) Algorithme.....................................................................................................................................................12 b) Conclusion.....................................................................................................................................................13 V.2.v Algorithme en itratif............................................................................................................................13 a) Algorithme ....................................................................................................................................................14 b) Rsultat MATRICE FINALE il nous reste plus ka faire la difference entre duree o plus tard et duree o plus tot. Pour chaque resultat nul, la tache appartien o chemin critique. Sinon, le resultat obtenu nous donne la marge associe a chke tache........16 c) Conclusion et commentaires..........................................................................................................................16 V.2.vi Exemple pour une installation industrielle...........................................................................................17 a) Tableau des tches.........................................................................................................................................17 b) Rsultat obtenu avec Matlab.........................................................................................................................17 VI Applications sur l'ordonnancement : Le Viaduc de Millau.........................................................................18 VI.1 Exemples de tches...........................................................................................................................18 VI.2 Intrt de l'ordonnancement ...........................................................................................................19 VI.3 Deux types d'ordonnancement..........................................................................................................19 VII Conclusion .............................................................................................................................................19 VIII Annexes..................................................................................................................................................20 VIII.1 Algorithme prsence......................................................................................................................20 VIII.2 Fichiers Matlab..............................................................................................................................20
Projet: Ordonnancement
IAbstract
II Remerciements Nous tenons remercier M. EL KABOUCHI , notre tuteur, pour sa disponibilit, et ses conseils. Nous souhaitons galement remercier M. PUJOS pour les renseignements qu'il a pu nous apporter.
Projet: Ordonnancement
III Introduction L'objectif de ce projet est de dterminer le chemin critique en ordonnancement ainsi que les marges associes chaque tches. En effet, l'ordonnancement est une technique qui permet de grer l'ordre des tches dans lequel elles doivent tre effectues afin de ne pas perturber l'chance d'un projet. Ce dossier tudiera dans un premier temps la thorie de l'ordonnancement. Dans une seconde partie il abordera les questions de l'algorithmique en rapport au problme de l'ordonnancement, afin de dterminer le chemin critique. Puis il voquera le dveloppement d'une application sous le logiciel Matlab pouvant traiter tous les types de problmes d'ordonnancement. Une interprtation d'un exemple simple fournit comme directive pour le projet sera donne, puis le traitement d' un exemple plus complexes sera abord, ce qui permettra de prendre plus de recul sur l'ordonnancement et sa relation au programme Matlab. Pour finir le dossier abordera une application de l'ordonnancement dans le milieu industriel. IVPrsentation gnrale IV.1 Dfinition de l'ordonnancement Un problme d'ordonnancement est un sous problme de planification. Ce problme permet de raliser dans le temps, la ralisation des tches compte tenu des contraintes temporelles (dlais et contraintes d'enchanement). La thorie d'ordonnancement s'intresse au calcul des dates d'excution optimales des tches. De manire plus prcise, on parle d'ordonnancement lorsqu'on fixe la date de dbut et de fin de chacune des tches. IV.2 Dfinition des taches Une tches est une entit lmentaire de travail localise dans le temps par une date de dbut t i et/ou de fin c i , dont la ralisation ncessite une dure p i=ci t i Lorsque les taches ne sont soumises aucune contrainte de cohrence technologique (par exemple les contraintes d'enchainement), elles sont dites indpendantes. A chaque tache, on peut associer deux dates diffrentes : la date au plus tt et la date au plus tard. La date au plus tt est la date laquelle la tacha pourra tre commence au plus tt, en tenant compte du temps ncessaire l'excution des taches prcdentes. Et la date au plus tard est la date laquelle la tache doit tre commence tout prix si l'on ne veut pas retarder l'ensemble du projet.
IV.3 Dfinition des contraintes Les contraintes expriment des restrictions sur les valeurs que peuvent prendre simultanment les variables de dcision. On distingue deux types de contraintes temporelles : Les contraintes de temps allou, qui sont issues d'impratifs de gestion et et dpendantes des dates limites des tches ou de la dure totale du projet.
Projet: Ordonnancement
Les contraintes de cohrence technologique, appeles contraintes d'antriorit, qui dcrivent l'ordre relatif qui doit tre respect entre les tches.
Puis on traduit le tableau sous forme de graphe en liant les taches qui se suivent. Pour effectuer une tache, il faut que les contraintes soient acheves. Donc dans notre graphe, toutes les tches dans la colonne contrainte seront suivies des tches qu'elles contraignent.
Projet: Ordonnancement
Prenons l'exemple pour comprendre: La tache b est dans la colonne contrainte. Elle contraint les taches d et e. Et donc dans le graphe la tache b sera suivie des taches d et e. Puis on fait de mme pour toutes les taches, et ainsi notre graphe d'exemple se construit :
a d Dpart b e c
Illustration 1: Graphe des tches de l'exemple
VAlgorithme V.1 Dmarche et problmes rencontrs Premire approche du sujet
Fin
A la lecture du sujet, nous avons fait un rapprochement avec le cours de Monsieur Raynal, Professeur de Management l'ISMANS. En effet, lors de ce cours nous avions pu voir l'une des mthodes d'ordonnancement, qui tait le PERT ( Programm Evaluation and Review Technique - technique d'ordonnancement et de contrle des programmes). Premire dmarche A l'aide de cette mthode, nous avons mis au point un algorithme permettant de calculer: le jour au plus tt o la tche peut tre effectue, le jour au plus tard o une tche peut tre effectue,
afin de pouvoir dduire la marge associe chaque tche, c'est dire la dure maximale de retard possible sur une tche. Cette dure est la diffrence entre le jour au plus tt et le jour au plus tard o la tche peut tre effectue, sans que cela perturbe la dure totale du projet. Un problme d'ordre Mais nous avons eu un problme lors de la ralisation de l'algorithme du jour au plus tard, car nous nous sommes rendus compte que si les tches n'taient pas ordonnes, l'algorithme ne fonctionnait pas. Aprs une recherche sur internet,nous avons envisag d'effectuer un algorithme pour ordonner les tches par niveau : Mthode des niveaux (http://www.logistiqueconseil.org/Fiches/Logistique/Pert.pdf ) Cette mthode permet de distinguer les diffrents niveaux qui apparaissent dans le problme d'ordonnancement. On effectue des manipulations sur les lignes d'un tableau, et les niveaux du problme d'ordonnancement se distinguent. A l'aide de cette mthode, on peut en dduire le graphe des niveaux suivant pour notre exemple.
Projet: Ordonnancement
a d Dpart b e c
Niveau 1 Niveau 2
g
Niveau 3 Niveau 4
Fin
0 0 0 A= 0 0 1 0
0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 a b c d
Les lignes correspondent aux tches raliser, et les colonnes aux tches ralises, sachant que le nombre de lignes et de colonnes correspond aux nombres tches ordonnancer. Pour expliquer la construction de la matrice, prenons l'exemple :
a b c A= d e f g
0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0
f g a et d acheves c,e et f acheves
La tche f est raliser, pour cela il faut que les tches a et d soient ralises. Ainsi dans la matrice a(6,1) et a(6,4) prennent la valeur 1. De mme pour les autres tches.
Projet: Ordonnancement
Deuxime dmarche Mais suite la premire runion de tutorat, nous avons t orient vers une nouvelle piste o ordonner les tches n'tait pas ncessaire. Nous nous sommes alors dirigs vers la construction d' une nouvelle matrice M2, elle permet d' intgrer directement les dures associes pour effectuer les tches. Ce qui a permis cette fois-ci d'aboutir des algorithmes permettant de calculer le jour au plus tt et le jour au plus tard de chaque tche. Problme de la rcursivit sous Matlab Cependant, ces algorithmes mis au point, utilisent des principes de rcursivit, or le logiciel MATLAB pose un problme au bout de 500 rcursivits. Ceci peut entrainer des erreurs dans le cas des problmes d'ordonnancement comportant de nombreuses tches couples entre elles (majorit des cas industriels). Lors de nos runion de tutorat, nous avons t rdig vers une mthode itrative pour viter ce problme de saturation. Dmarche itrative Nous nous sommes donc dirigs vers une mthode itrative. Dans cette mthode, nous utilisons de plusieurs matrices pour rsoudre le problme d'ordonnancement.
M1 est la matrice qui reprsente le tableau du problme. C'est l'utilisateur en rpondant chaque questions poses par le programme qui va la remplir. M2 est la matrice qui dfinie les dures des tches.
Pour dterminer le jour au plus tard, on procde de la manire suivante : Aprs avoir crit la matrice M2, on crit ensuite la matrice M3, dans laquelle on calcule le maximum des colonnes pour obtenir le rsultat, cest notre matrice de sortie. Puis nous utilisons une matrice qui sert de stockage du chemin que lon est en train de parcourir, c'est la matrice M4. Elle permet de pouvoir continuer le chemin. Cette matrice permet davoir une dmarche de proche en proche pour obtenir le rsultat. Et enfin une dernire matrice, M5, sert la mise en place dune condition darrt sur chaque nud, c'est-dire que tant que les chemins qui aboutissent un mme nud ne sont pas entirement faits, on ne calcule pas le jour max de ce nud. Et de manire analogue, on construira les matrices M6, M7 et M8 pour dterminer le jour au plus tard. V.2Algorithmes Premier Algorithme a) Algorithme Ordonnancement ( T: TABLEAU[0,N][1,6]) % N nombre de tches Pr-condition: % a dfinir Post-condition: % a dfinir % dbut de l'algorithme permettant de dfinir le jour le plus court de chaque tche.
Projet: Ordonnancement
Ralisation: iN Tant que iN Rpter Si T(i,3)=0 Alors T(i,4)T(i,2) Sinon T(i,4)T(i,2) + MAX(T(i,3)) % on prend la valeur maximale des contraintes prsentes la ligne i et la colonne 3 du tableau d'entre Fin Si ii+1 Fin Tant que => Utilisation du MAX MAX ( TABLEAU[0,N][1,6], ): ENTIER k2 j1 r : premier charactere % a sera le rsultat du MAX mNombre_caractre(T(i,3)) Tant que k m Rpter Si disp(ch(j)) disp(ch(k)) % disp correspond la fonction qui assimile un caractre un nombre. Alors kk+1 et rdisp(ch(j)) Sinon jj+1 Fin Si Fin tant que b) Conclusion Ce premier algorithme fonctionne seulement si les tches sont ordonnes, c'est dire si elles sont mis dans l'ordre chronologique ds le dpart.
j: ENTIER k: ENTIER Ralisation: j1 Si k=1 Alors rsultat 0 Sinon Tant que J N+1 Rpter Si B[j;k] =0 Alors C[j,k]0 Sinon C[j,k] B[j;k]+DUREE_MAX( B[j,k-1]) Fin Si jj+1 Fin Rpter A[k+1;4]MAX(C[i;k]) % on prend la valeur maximale de la colonne k que l'on fait varie Fin Si JOUR_MAXI ( M1: TABLEAU [ENTIER] [1, N+1] [1, 6]: ENTIER; M2: TABLEAU [ENTIER] [1, N+1] [1, N]: ENTIER): M1: TABLEAU [ENTIER] [1, N] [1, 6]: ENTIER Prcondition: M2 remplit Post-condition: le rsulta de la ligne i et de la colonne 4 contient la dure minimal o la tache i peut tre effectu. Dclaration de variables: Ralisation: k1 Tant que k N Rpter M1[k+1;4]DUREE_MAX(M3[i;k]) % on calcule la dure maximale sur la colonne k (qui correspond regarder le jour minimal de la tche k dans M2 ou k+1 dans M1 (mme tche) kk+1 Fin Rpter Fin JOUR_MAXI
b) Conclusion
k: ENTIER
Nous n'avons pas continu avec cette mthode, car le logiciel Matlab aurait bloqu au bout de 500 rcursivits, et nous aurions t limit 25 tches.
Projet: Ordonnancement
Dclaration de la matrice M1 N=input ('Entrer le nombre de taches:') % N reoit le nombre de tches M=zeros(N+1,1) % M matrice remplie de 0 de N+1 ligne et de une colonne Pour i = 2 jusqu' i =N+1 M(i,1) = input (['Entrer le nom de la tache ' num2str(i-1) ':']) % M (i,1) reprsente le coefficient de la i me ligne, premire colonne de la matrice M
% La premire colonne de la matrice M1 est remplie par le nom de chaque tche.
M(i,2) = input (['Entrer la dure de la tache ' num2str(i-1) ':']) % M (i,2) reprsente le coefficient de la i me ligne, deuxime colonne de la matrice M
% La seconde colonne de la matrice M1 est remplie par la dure associe chaque tche.
Si k1 Pour j =1 jusqu' j=k M(i,j+2) = input(['Entrer la tache effectuer avant la tache ' num2str(i-1) ':'])
% prend le nom de la tche effectuer avant la tche correspondante a la ligne i
Fin Sinon Si k 1 M(i,3)=0 % si il n'y pas de tches effectuer avant la tche correspondante la ligne i,
le nom de la tche effectuer avant est gal zro.
0 1 2 M1= 3 4 5 6 7
0 6 3 6 2 4 3 1 0 0 0 0 2 2 1 3 0 0 0 0 0 0 4 5 0 0 0 0 0 0 0 6 10
Projet: Ordonnancement
6 0 0 M2= 0 0 0 0 0
3 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 4 0 0 0 0 0 0 3 0 0 3 0 0 0 0 0 0 1 0 1 1 0 11
Projet: Ordonnancement
Nous avons galement besoin de dfinir dM3, qui est de la mme dimension que M2, est la matrice finale, sur laquelle on fait le maximum des colonnes. M3 pour l'exemple:
6 0 0 0 M3= 0 0 0 0
3 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 4 0 0 0 0 0 0 3 0 0 3 0 0 0 0 0 0 1 0 1 1 0
Dclaration de la matrice M4: M4[N+1,N] est la matrice qui stocke le jour maximale de chaque chemin calcul. D'autre part elle permet de se rappeler quel chemin nous faisons.
0 0 0 M4 initial = 0 0 0 0 0
de M5
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
12
M5[2,N] est la matrice qui pose la condition sur chaque noeud. C'est a dire qu'elle permet le franchissement d'un
Projet: Ordonnancement
noeud, une fois que tous les chemins la joignant sont calcul.
a) Algorithme
REMPLISSAGE_M4(M2,M4):M4 Prcondition: Post-condition: Dclaration de variables: j: ENTIER Ralisation: j1 Tant que jN Rpeter jj+1 Fin Rpter Fin REMPLISSAGE_M4 REMPLISSAGE_M5(M2,M5):M5 Prcondition: Post-condition: Dclaration de variables: v: ENTIER w: ENTIER Ralisation: v1 w1 Tant que v N Rpter Tant que w N Rpter Si M2[w,v]0 Alors M5[1;v]M5[1;v]+1 Fin Si ww+1 Fin rpter Si M2[1;j]0 Alors M4[1,j]M2[1;j] Fin Si
vv+1 Fin rpter FIN REMPLISSAGE_M5 exemple de remplissage M5 : Chaque valeur correspond au nombre de chemin arrivant sur une tache. C'est a dire, il y a un chemin qui arrive sur a, 1 sur b,..., 2 sur f, 3 sur g.
M5= 1 1 1 1 1 2 3 0 0 0 0 0 0 0
13
Projet: Ordonnancement
JOUR_MAX(M2,M3,M4,M5): M3 Prcondition: Post-condition: Dclaration de variables: p: ENTIER k: ENTIER m: ENTIER Ralisation: p1 k1 m1 Tant que p N+1%on est sur la ligne p de M4 Rpter Tant que k N % on est sur la colne k de M4 Rpter Si M4[p;k] 0%on regarde les valeur non nulles de M4 a la ligne p et la colone k Alors Tant que m N Rpter si M3[k+1;m] 0 Alors M3[k+1,m]M3[k+1;m]+M4[p;k] % la matrice M3 prend la valeur de son chemin, qui etait stock dans M3, plus celle de M4 qui correspond au jour Max %des taches antecedantes. Et M5[2,m]M5[2;m]+1 % on increment la colonne equivalente dans M5, signifiant qu'un chemin supplementaire a ete calcul. Et Si M5[1,m] = M5[2,m] % on regarde si tous les chemins precedants la tache ont ete calcul. alors M4[p+1,m]max(M3[1...n+1;m]) % on active un nouveau chemin a calculer dans M4. Ce chemin prend le jour max de la tache antecedante. Fin Si Fin Si mm+1 Fin Rpter M1 Fin Si kk+1 Fin Rpter pp+1 k1 Fin Rpter FIN JOUR_MAX <<<On applique la meme demarche que pour jour max, seul change la condition d'arret. Pt=1 kt=1 mt=2 M3T=M2 Tant que P t N+1 Rpter Tant que: kt N Repeter Si M4T[kt,Pt] 0 alors tant que: mt N Rpter Si M3T[mt,kt] 0 Alors M3T[mt,kt] = M4T[Pt,kt]-M3T[mt,kt] M5T[mt,2] = M5T[mt,2]+1 Si M5T[1,2] M5T[1,1] % il s'agit de la condition d'arret, si tous les chemins de la premiere tache sont activs, alors tous les jours min ont ete %calcul. Projet: Ordonnancement
14
Si M5T[mt,2] = M5T[mt,1] Alors M4T[Pt+1,mt-1] = MIN(M3T[mt,:]) %n active un nouveau chemin a calculer dans M4T. Ce chemin prend le jour min de la tache suivante. Fin Si Fin SI Fin Si mtmt+1 Fin Rpter mt1 Fin Si ktkt+1 Fin Tant que PtPt+1 kt1 Fin Tant que
Alors
b) Rsultat MATRICE FINALE il nous reste plus ka faire la difference entre duree o plus tard et duree o plus tot. Pour chaque resultat nul, la tache appartien o chemin critique. Sinon, le resultat obtenu nous donne la marge associe a chke tache c) Conclusion et commentaires Cet algo nous permet d'obtenir les tache qui appartien o chemin critike rechercher AINSI QUE LES MARGE DE TEMPS ASSOCIER A CHAQUE TACHE. En effet, il nous donne une matrice finale dans lakelle on trouve..... Exemple pour une installation industrielle a) Tableau des tches Les tches et leur dures, ainsi que leur contraintes associes sont prsentes dans le tableau suivant: Description des oprations 1- Descente en temprature et en pression 2- Dmontage des circuits infrieurs 3- Remontage refroidisseur 4- Remontage des circuits infrieurs 5- Nettoyage refroidisseur et remplacement des tubes 6- Rgnration du catalyseur 7- Essai de tenue en pression 8- Dmontage du refroidisseur 9- Inspection colonne infrieure et
Projet: Ordonnancement
Contraintes
1 7,4 8 2 3 9 1 3
15
rparation des tubes 10- Remontage du catalyseur 11- Dmarrage rel 20 5,6
VIApplications sur l'ordonnancement : Le Viaduc de Millau Depuis la fin des anne 80, la stratgie dans les entreprises prend une place importante. L'organisation des taches accomplir pour raliser un projet doit tre efficace. De ce fait, l'ordonnancement des tches joue un rle essentiel afin de pouvoir respecter l'chance du projet. A travers ce projet, il nous a t possible de mettre en uvre une mthode d 'ordonnancement et ainsi tester nos algorithmes sur un exemple simple, limit quelques tches. Il serait maintenant intressant d'utiliser cet algorithme sur des problmes plus industriels prsentant de nombreuses tches. Par exemple sur la construction d'un grand ouvrage d'art tel que du Viaduc de Millau. En effet la construction de ce Viaduc s'est fait en une multitude tapes, toutes s'effectuant dans un ordre prcis et certaines pouvant se raliser simultanment.
Projet: Ordonnancement
16
VI.1 Exemples de tches Construction des piles: - Semelle de soutien - lvation de la pile - lvation de la grue Assemblage du tablier Mise en place des bquilles provisoires Mise en place du tablier par poussage Soudure du tablier Mise en place des pilonnes suprieurs et des haubans Suppression des bquilles provisoires Pose de l'enrob VI.2 Intrt de l'ordonnancement L'ordonnancement permet de grer dans le temps les interventions successives des centaines de sous traitant impliqus dans la ralisation du Viaduc de Millau. Exemples pour les piles : - matre d'ouvrage - livraison du btons - fourniture des semelles de construction - grues de connaitre les dates auxquelles un bureau de certification peut certifier un nouvel quipement spcial dans
Projet: Ordonnancement
simultanment
17
un atelier. d'identifier des priodes au cours desquelles l'activit d'une quipe peut tre accrue ou doit tre diminue faute de ressources suffisantes de savoir l'incidence sur les cot de dveloppement. VI.3 Deux types d'ordonnancement En conception et en exploitation: - l'analyse des tches, leur dfinitions, leur dures - les antriorits - la planification - le chemin critique En contrle de projet: - Suivi des dlais et des cot - Prise de dcisions ( affectation des ressources par exemple)
VII Conclusion
VIIIAnnexes VIII.1 Algorithme prsence presence (Ch: CHAINE, CAR: CARACTERE):BOOLEEN si premier(ch)= ensemble vide alors r <- FAUX sinon si premier(ch)=CAR alors r <- VRAI sinon r <- presence( fin(ch),CAR) fin si
fin si
Projet: Ordonnancement
18
Projet: Ordonnancement
19