Recherche Opérationnelle Ordonnancement
Transcription
Recherche Opérationnelle Ordonnancement
Recherche Opérationnelle - Ordonnancement Recherche Opérationnelle Ordonnancement Yves Correc Yves Correc 26/02/2007 3–1 Recherche Opérationnelle - Ordonnancement Sommaire 3. 3.1. 3.2. 3.3. 3.4. 3.5. 3.6. 3.7. 3.8. 3.9. ORDONNANCEMENT...............................................................................................................3–3 Caractérisation d'un projet .....................................................................................................3–3 Représentation graphique......................................................................................................3–4 Problématique du chemin critique..........................................................................................3–6 Méthode (française) potentiel-tâche: MPM ...........................................................................3–7 Méthode (américaine) potentiel-étape: PERT ......................................................................3–9 Modifications du projet .........................................................................................................3–10 Contraintes disjonctives .......................................................................................................3–11 Contraintes cumulatives.......................................................................................................3–14 Optimisation du coût et de la durée d'un projet ...................................................................3–24 Yves Correc 26/02/2007 3–2 Recherche Opérationnelle - Ordonnancement 3. ORDONNANCEMENT 3.1. CARACTÉRISATION D'UN PROJET L'organisation d'un grand projet pose des problèmes dont la complexité et la taille ont nécessité le développement de méthodes de planification. La première étape est la caractérisation du projet: Celui-ci est décomposable en un certain nombre d'opérations (plus ou moins) élémentaires appelées tâches. Ce découpage est un délicat compromis: trop fin, il devient inextricable, trop grossier il masque l'importance de certaines opérations élémentaires. En pratique, on procède souvent par niveaux, chaque tâche identifiée pouvant être à son tour considérée comme un petit projet décomposable à un niveau inférieur. Une tâche est définie par 4 caractéristiques : - i = nom (ou code) de la tâche, - ti = date de début de la tâche (on note parfois fi la date de fin) - di = durée de tâche (di = fi – ti), - γik = quantité du moyen k (personnel, matière, coût...) nécessaire à l'accomplissement de la tâche i . Elle est évidemment liée à di, et peut varier au cours du temps. γik ti ti + di On appellera ordonnancement d'un projet tout ensemble de valeurs données aux caractéristiques ( ti, di, γik ) pour toute tâche i d'un projet. Ces tâches sont l'objet de contraintes (on ne peut faire n'importe quoi n'importe comment !…). Ces contraintes sont de trois types : (1) contraintes de type potentiel: tj - ti ≥ aij - Localisation temporelle absolue (une tâche doit débuter après telle date, ou bien être achevée pour telle date). - Succession entre tâches (localisation temporelle relative: une tâche ne peut commencer avant l'achèvement d'autres tâches) (2) contraintes de type disjonctif : [ti , ti + di ] ∩ [ tj , tj + dj ] = ∅ - Deux tâches ne peuvent être réalisées simultanément (utilisation des mêmes moyens par exemple). On peut dans certains cas se ramener au type potentiel. (3) contraintes de type cumulatif : ∑γ i( t ) ik ≤ Γk ( t ) - Difficiles à prendre en compte, elles proviennent de la limitation des moyens disponibles à un instant donné. Résoudre un problème d'ordonnancement consistera dans ces conditions à rechercher un ordonnancement (s'il existe) qui satisfasse les contraintes imposées et optimise un certain objectif. Ce dernier pourra par exemple être la durée totale de réalisation du projet, que l'on cherchera à minimiser. On ne traitera pas dans un premier temps les contraintes de moyens. Yves Correc 26/02/2007 3–3 Recherche Opérationnelle - Ordonnancement 3.2. REPRÉSENTATION GRAPHIQUE On se propose de représenter graphiquement les tâches que l'on vient de définir, et si possible les contraintes correspondantes. La méthode la plus ancienne , la seule disponible avant 1960, est le planning à barres ou diagramme de Gantt (Henry Gantt 1917). Ce type de diagramme utilise deux échelles perpendiculaires de coordonnées: l'axe des abscisses pour le temps, et l'axe des ordonnées pour les différentes tâches. On représente alors chaque tâche par un segment de droite horizontal dont la longueur est proportionnelle à la durée de la tâche. Exemple : Soit un projet constitué de 4 tâches: A (durée 3 semaines) doit précéder B durée (2 semaines) et D (durée 6 semaines) non exclusives, ainsi que C (durée 3 semaines) qui suit B. durée 1 2 3 4 5 6 7 8 9 10 A B C D Cette représentation est très parlante pour figurer l'état d'avancement d'un projet (en rouge) par rapport aux prévisions (en gris). Mais elle est limitée aux petits projets et ne permet pas de traduire convenablement les contraintes existant entre tâches. Enfin les renseignements véritablement intéressants sont les dates effectives ti de début des tâches, ainsi que les éventuelles marges disponibles sur certaines d'entre elles (pour répondre à la question de savoir si un retard sur une tâche particulière peut se répercuter à l'ensemble du projet, ou non). C'est pourquoi sont apparues des méthodes plus modernes basées sur la théorie des graphes. Méthode américaine (PERT) La méthode américaine PERT (Program Evaluation and Review Technique, 1959) développée pour l'US Navy par Malcom, Roseboom, Clark et Fazar, a permis un gain de temps de 2 à 3 ans sur le développement du programme de missiles Polaris. A la même époque, Walker et Kelley mettaient au point pour DuPont la méthode CPM (Critical Path Method, 1959), analogue à la précédente sauf sur certains points de détail. On ne distinguera pas, dans la suite, ces deux méthodes regroupées sous le vocable de "méthode américaine". Ce sont en fait des extensions du diagramme de Gantt, obtenues en construisant un graphe dont les arcs correspondent aux segments du diagramme, et les sommets aux étapes de la réalisation, c'est à dire à la fin de certaines tâches et au début d'autres: S'il est dit qu'une tâche doit en précéder deux autres, les arcs associés seront adjacents, et partageront un tel sommet qui sera l'étape "fin de la première tâche et début de la seconde et de la troisième". tache j tache i étape i-jk tache k Ce type de représentation du projet, sous la forme d'un graphe dont les arcs représentent les tâches et les sommets des étapes, est appelée "potentiel - étape" , par analogie avec un réseau électrique dont les nœuds sont portés à un certain potentiel (qui dans le cas présent est en fait le temps). Yves Correc 26/02/2007 3–4 Recherche Opérationnelle - Ordonnancement On poursuivra l'exemple précédent, en construisant ce graphe à partir du diagramme de Gantt. Pour cela on identifiera les nœuds-étapes (E1, E2, E3, E4, E5, FIN) avec les jonctions des segments du diagramme, pour obtenir le graphe suivant: durée 1 2 3 4 5 6 7 8 9 10 A B C D E3 E1 E5 E2 FIN E4 Chaque arc sera ensuite valué par la durée de la tâche qu'il représente. Il convient de souligner l'aspect relativement artificiel de cette construction, qui n'est pas toujours évidente à réaliser, et qui surtout supporte mal les modifications ultérieures du projet. On ne peut pratiquement traduire avec ce type de représentation que les contraintes de type potentiel. On obtient sur cet exemple le graphe suivant: E3 B E1 t1 A 3 2 t3 C E5 3 t5 E2 t2 FIN D 6 t4 E4 Méthode française (MPM) Vers la même époque (1958), Bernard Roy introduisait la méthode des potentiels METRA (MPM), souvent appelée "méthode française", caractérisée par une représentation "potentiel – tâche", et utilisée pour la construction du paquebot France (1959). Chaque sommet du graphe représente ici une tâche, et chaque arc une contrainte de potentiel, c'est à dire une relation temporelle entre tâches. On affectera donc à chaque arc-contrainte sortant d'un sommet la durée de la tâche associée à ce sommet, pour répercuter vers la tâche extrémité de l'arc la contrainte correspondante (on doit avoir achevé cette tâche dont on donne la durée avant de pouvoir commencer la suivante). On pourra donc définir très simplement le graphe à partir de la liste des tâches, ce qui nous donne immédiatement les sommets, et du dictionnaire des précédents qui est la traduction directe des relations d'antériorité entre tâches (au contraire de la méthode américaine dont la gymnastique de construction des sommets –E1, E2, E3, E4 sur l'exemple précédent- auxquels vont être connectés les arcs-tâches n'est pas toujours évidente). Yves Correc 26/02/2007 3–5 Recherche Opérationnelle - Ordonnancement On introduira dans les deux cas un sommet "début de projet" noté α, et un sommet "fin de projet" noté ω. L'application de la méthode française "potentiel-tâche" au même exemple donne le graphe suivant: B tB 2 α C 3 2 tC A t-début 0 tA ω 6 2 D t-fin tD Cette méthode est donc beaucoup plus puissante que la méthode PERT pour le traitement des contraintes que l'on peut rencontrer. Elle permet en effet l'adjonction de nouvelles contraintes par simple adjonction d'arcs, sans remanier profondément le graphe. Le résultat de tout cela est qu'une évolution de la méthode MPM (PDM : Precedence Diagram Method, 1980) est aujourd'hui universellement utilisée, même si l'on parle souvent, par abus de langage, d'un "PERT", comme on dit un "frigidaire" au lieu d'un réfrigérateur… Nous détaillerons ces deux méthodes au moyen d'un exemple (construction d'un pavillon). Les travaux à réaliser, leur durée, et leurs précédents obligatoires (les autres travaux qui devront impérativement être achevés pour que la tâche considérée puisse commencer – typiquement on ne pourra débuter la couverture qu'après en avoir terminé avec la charpente, etc), sont résumés dans le tableau qui suit. tâche désignation durée précédents A maçonnerie 7 ∅ B C charpente couverture 3 1 A B D plomberie électricité 8 A E F revêtements extérieurs menuiseries 2 1 CD CD G H Aménagement jardin plâtres 1 2 CD F J K peinture finitions 2 1 H EGJ 3.3. PROBLÉMATIQUE DU CHEMIN CRITIQUE Comme nous l'avons vu plus haut, une simple description des travaux à réaliser ne suffit pas à bâtir un projet efficace. Les questions qui se posent sont: • Quelle va être la durée totale du projet? • Quand peuvent effectivement débuter chacune des tranches de travaux envisagées? • Des délais sont-ils admissibles sur certaines d'entre elles? Si oui, lesquels? La réponse à ces questions va impliquer la définition pour chaque tâche d'une date au plus tôt de début d'exécution ti (quand peut-on effectivement commencer à travailler sur la tâche i compte tenu de l'achèvement préalable de toutes les tâches qui doivent la précéder?), et d'une date au plus tard de début d'exécution Ti (jusqu'à quand peut-on repousser le début d'exécution de cette tâche sans mettre en péril la date d'achèvement prévue de l'ensemble du projet, par une répercussion malencontreuse sur les tâches aval du délai envisagé?). Yves Correc 26/02/2007 3–6 Recherche Opérationnelle - Ordonnancement Les notions introduites sont alors celles de marge mi (délai admissible Ti - ti ) et de tâche critique (marge nulle : tout retard sur cette tâche se répercutera immanquablement à l'ensemble du projet). La réponse aux deux premières questions va nous conduire à tenter de réaliser au plus tôt l'ensemble des tâches proposées, compte tenu de leurs relations de précédence et de leur durée. Il est évident que le projet sera pénalisé par les tâches les plus longues et les plus lentes, dont l'achèvement conditionnera l'avancement général (il faudra pour progresser attendre la fin de ces tâches-là). La détermination de la durée minimale du projet nous conduira donc à rechercher dans les graphes précédents le plus long chemin entre l'entrée et la sortie, entre le début et la fin du projet (et non le plus court car celui-ci laisserait de côté les tâches longues qui resteraient inachevées!…). Nous trouverons sur ce plus long chemin l'ensemble des tâches dont la longueur et la place sont telles qu'elles impactent tout le projet, que tout retard les touchant se répercute jusqu'à la sortie au travers de l'ensemble des tâches critiques. Les méthodes que nous allons voir procèdent donc en deux temps: • Phase 1: trouver ce plus long chemin, ou chemin critique, au moyen d'un premier balayage en avant du graphe au cours duquel on calculera les dates au plus tôt. • Phase 2: calculer les éventuelles marges disponibles pour les autres tâches, au moyen d'un balayage en arrière du graphe partant de la fin déterminée du projet, au cours duquel on calculera les dates au plus tard et les marges. 3.4. MÉTHODE (FRANÇAISE) POTENTIEL-TÂCHE: MPM On a vu que la représentation correspondante associe à chaque tâche un sommet du graphe et à chaque relation d'antériorité un arc du graphe. C'est sur ce graphe que l'on va déterminer le chemin critique, en calculant de proche en proche les dates de début de chaque tâche, en fonction des contraintes induites par les tâches antérieures. L'algorithme de recherche de chemin extrémal sousjacent sera celui de Roy, vu au chapitre précédent. Mais sa justification intuitive apparaitra ici clairement. L'étape préliminaire indispensable sera la décomposition en niveaux du graphe (qui garantit la progression monotone du calcul, sans retours en arrière intempestifs…). On ne détaillera pas cette étape, qui conduit au graphe ordonné suivant (avec autant de sommets réels que de tâches, plus les pseudo-tâches début et fin): B 3 1 C A 7 8 D 8 2 E K 1 ω 2 0 1 α 1 1 7 G 8 F 1 H 2 J Niveaux 0 1 Yves Correc 26/02/2007 2 3 4 5 6 7 8 3–7 Recherche Opérationnelle - Ordonnancement Comment déterminer la date au plus tôt tj de début d'une tâche j ? Phase 1: Cette tâche est supposée précédée d'un certain nombre de tâches i qui devront toutes être achevées pour que puisse débuter la tâche j. t1 1 t2 2 d1 d2 j tj d3 t3 3 i Chaque tâche i débute au plus tôt à ti, s'achève à ti + di, et doit être finie avant le début de la tâche j. La date de début au plus tôt de la tâche j est par conséquent égale à tj = max ( ti + di ) -1 i ∈Γ (j) La première phase de la méthode (balayage en avant) consistera donc à calculer les dates au plus tôt tj de toutes les tâches j au moyen de cette formule en balayant les sommets du graphe par niveaux croissants, à partir de tα = 0, jusqu'à la sortie (fin du projet) dont la date au plus tôt tω est la durée du projet. Nous connaissons maintenant la durée minimale du projet, que nous verrouillons en décidant que c'est aussi la date au plus tard Tω = tω d'achèvement de celui-ci. Phase 2: Comment déterminer les dates au plus tard Ti d'achèvement des tâches i , dates qui devront rester compatibles avec l'objectif d'achèvement global à Tω = tω ? Considérons une tâche i précédant plusieurs tâches j, chacune pouvant débuter au plus tard à Tj. 1 di Ti i di 2 T1 T2 di 3 T3 j A quelle date au plus tard Ti peut-on commencer la tâche i pour que les tâches j puissent démarrer au plus tard à Tj ? La tâche i sera terminée à Ti + di , qui doit vérifier Ti + di ≤ Tj pour toutes les tâches j suivantes. La date de début au plus tard de la tâche i est donc égale à Ti = min ( Tj ) - di j ∈Γ(i) On en déduit la marge mi , différence entre la date au plus tard et la date au plus tôt, mi = Ti - ti . La seconde phase de la méthode (balayage en arrière) consistera donc à calculer les dates au plus tard Ti de toutes les tâches i au moyen de cette formule en balayant les sommets du graphe par niveaux décroissants, depuis la fin du projet (Tω = tω) jusqu'à son début. Yves Correc 26/02/2007 3–8 Recherche Opérationnelle - Ordonnancement On pourra ensuite calculer les marges mi de toutes les tâches, et identifier le chemin critique, constitué de l'ensemble des tâches dont la marge est nulle (tâches critiques): Si l'une d'entre elles prend du retard, la durée minimale de l'ensemble du projet en sera allongée d'autant. Ces calculs peuvent être faits sur une représentation en dictionnaire, mais il est plus parlant de les résumer sous forme graphique (il sera préférable d'adopter une convention de notation telle que : vert pour les dates au plus tôt, rouge pour les dates au plus tard, bleu pour les marges, et rouge pour le chemin critique): B 0 0 C 4 7 7 7 8 D 0 15 19 1 G E 8 0 1 F 15 15 0 4 0 1 3.5. 2 3 20 20 2 3 8 Niveaux 1 4 15 18 1 A 10 14 1 α 0 4 7 3 16 16 H 0 K 2 1 21 21 0 18 18 J 0 5 6 7 8 MÉTHODE (AMÉRICAINE) POTENTIEL-ÉTAPE: PERT On définit de la même manière que précédemment une étape "début" et une étape "fin" du projet. Les tâches seront les arcs du graphe, et les sommets des étapes. Ces étapes i seront définies par l'achèvement d'un ensemble de tâches, et le début d'un autre ensemble de tâches. Si une tâche j doit succéder à une tâche i, l'origine de l'arc (j) doit être l'extrémité de l'arc (i). La construction du graphe n'est pas immédiate (et peut même poser des problèmes sérieux dans certains cas…), car elle demande la définition de ces étapes: Si l'on se donne pour -1 chaque tâche i, l'ensemble Γ (i) des tâches qui doivent la précéder, les différentes étapes du projet -1 correspondront aux différents ensembles Γ (i). -1 Dans l'exemple traité, les différentes étapes du projet sont données par la colonne Γ (i) du tableau, c'est-à-dire : (fin de A), (fin de B), (fin de C et D), (fin de F), (fin de H), (fin de E,G,J), (fin de K), (fin du projet). Le graphe correspondant est donné ci-dessous, et les calculs sont menés de la même manière que dans la méthode MPM. Par contre il est nécessaire de déterminer ensuite pour chaque arc/tâche les dates au plus tôt et au plus tard à partir des dates calculées pour les nœuds (qui représentent ne l'oublions pas les étapes intermédiaires entre tâches, que l'on avait construites au préalable). 10,14 0,0 A 7,7 7 début B 3D 8 1 E C 15,15 2 1 F 16,16 H G 1 K J 2 18,18 1 20,20 2 21,21 fin Nous avons ici affaire à un multigraphe car il peut exister plusieurs arcs entre deux sommets (tâches en parallèle): par exemple E et G. Yves Correc 26/02/2007 ω 0 2 7 11 3–9 Recherche Opérationnelle - Ordonnancement 3.6. MODIFICATIONS DU PROJET D'éventuelles modifications du projet à ordonnancer n'entraînent dans le cas MPM que l'adjonction des sommets-tâches correspondants avec les arcs-contraintes associés, tandis que pour le PERT les aménagements à apporter au graphe peuvent être considérables. Par la suite on n'utilisera plus que la méthode française (MPM). Pour modifier l'ordonnancement, on reprendra le balayage avant du graphe pour recalculer les dates au plus tôt à partir du point de modification et jusqu'à la sortie ω du graphe. Le balayage arrière devra lui être repris complètement. Exemple : La construction d'une centrale hydroélectrique nécessite les travaux suivants: tâches désignation A B C D E F G H I Construction des routes d'accès Préparation des carrières et terrassements Logements et bureaux pour le personnel commande du matériel électrique et hydraulique construction de la centrale construction du barrage, des digues, de l'évacuateur Construction des galeries et conduites forcées montage des machines essais de fonctionnement ω fin des travaux durées (mois) 4 6 4 12 10 24 7 10 3 0 précédents ∅ A ∅ ∅ B,C B,C A D,E,G F,H I Déterminer un ordonnancement des travaux de durée minimale (calculer les dates au plus tôt, les dates au plus tard, les marges, et déterminer les opérations critiques). Le calcul sera effectué directement sur la représentation graphique, mais on pourrait tout aussi bien travailler sur une représentation en dictionnaire (c'est d'ailleurs ainsi qu'on pourrait le programmer). On adoptera ici la convention consistant à représenter en vert les dates au plus ti , en rouge les dates au plus tard Ti (et en bleu éventuellement les marges mi si on les affiche). 0,12 D 12 4,17 7 10 0 0 4 10,14 4,4 4 A 0 0,6 C Yves Correc 26/02/2007 20,24 10 G 0,0 α H 6 B 4 4 6 E I 10,10 24 34,34 3 ω 37,37 F 3–10 Recherche Opérationnelle - Ordonnancement Supposons maintenant que les travaux préparatoires (B,G) à la construction de la centrale (E) et du barrage (F) déclenchent un mouvement de contestation écologiste (M) de grande ampleur (manifestations, procès,…) dont l'effet sera un retard prévisible de 3 mois (sur E et F). Que devient l'ordonnancement du projet? L'introduction de cette nouvelle tâche M amène celle d'un niveau supplémentaire dans le graphe, sur lequel on recalcule un ordonnancement de durée minimale. 0,16 D 12 4,4 H 7 α 0 4 A 4,5 B 0 0,10 7 11,11 6 M 4 14,18 3 E 3 4 C 10 0 4 0,0 10 G 24,28 I 14,14 24 38,38 3 ω 41,41 F On remarquera l'effet de cascade de cet impondérable: le retard apporté de 3 mois se traduit en fin de projet par un retard de 4 mois. Les marges de D et C s'allongent. B n'est plus une tâche critique. G le devient, ainsi que M… et c'est ainsi que l'on en arrive à tenter de réduire la durée de M en faisant appel aux forces de l'ordre… (NB. Cet exercice est une fiction totale!) 3.7. CONTRAINTES DISJONCTIVES Le traitement d'une contrainte disjonctive entre deux tâches A et B peut se faire en étudiant les deux cas "A précède B" et "B précède A" séparément pour choisir ensuite sur un critère à définir la meilleure solution. On construit donc les deux ordonnancements en ajoutant la contrainte de type potentiel correspondante. Exemple: Une réalisation industrielle comporte un certain nombre d'opérations définies comme suit: Tâches A B C D E F G H I J K L Durée 1 7 6 13 21 4 11 4 7 3 2 24 Précédents ∅ A A A BC CE DF D GF GL IJ H Yves Correc 26/02/2007 (1) Donner le graphe (décomposé en niveaux) associé à la méthode potentiel-tâche de Roy. (2) Au moyen de cette méthode, déterminer les dates au plus tôt, au plus tard, les marges et les tâches critiques. Indiquer le chemin critique sur le graphe. (3) Les opérations I et J ne peuvent avoir lieu en même temps car elles mobilisent le même outillage (contrainte disjonctive). Quelle en est l'incidence sur l'ordonnancement déterminé plus haut? Que peut-on recommander? 3–11 Recherche Opérationnelle - Ordonnancement On effectue la décomposition en niveaux sur le dictionnaire des précédents: A B C D E F G H I J K L B C D E F G H I J K L A A A BC CE DF D GF GL IJ H E F G H I J K L BC CE DF D GF GL IJ H F G I J K L E F GF GL IJ H G I J K F GF GL IJ I J K G G IJ K IJ Et on construit le graphe résultant: 7 B 0 6 1 A 6 C I 4 7 F K 2 11 α 21 1 E ω 3 4 1 13 D 13 H 4 11 G L J 24 Niveaux La première variante est obtenue avec la contrainte additionnelle "I précède J": B 0 A 1 6 6 C I 4 7 F K 2 11 α E 21 1 7 Niveaux Yves Correc 26/02/2007 7 3 4 1 D 13 13 H 4 G L 11 24 J 3–12 ω Recherche Opérationnelle - Ordonnancement La seconde variante est obtenue avec la contrainte additionnelle "J précède I": 7 B A 1 I 4 6 C F 4 3 13 13 H Niveaux 4 2 K 11 1 D 7 3 0 21 6 1 α E 11 G L J 24 Le calcul des dates au plus tôt (balayage avant du graphe), des dates au plus tard (balayage arrière), et des marges est résumé dans les trois tableaux qui suivent, pour le graphe originel d'abord, pour les deux variantes ensuite: I et J sans lien Chemin critique: I précède J Chemin critique: J précède I Chemin critique: F A B C D E H Date au +tôt 0 1 1 1 8 14 29 18 33 44 44 51 53 Date au + tard 0 1 2 7 8 20 29 24 33 44 48 51 53 Marge 0 0 1 6 0 6 0 0 4 Date au +tôt 0 1 1 1 8 14 29 18 33 44 51 54 56 Date au + tard 0 1 2 10 8 23 29 27 33 44 51 54 56 Marge 0 0 1 9 0 9 0 0 0 0 L 6 G I J K ω Tâches 0 0 A B E F G I K 0 9 0 0 A B E F G I J K Date au +tôt 0 1 1 1 8 14 29 18 33 47 44 54 56 Date au + tard 0 1 2 3 8 16 29 20 33 47 44 54 56 Marge 0 0 1 2 0 2 0 0 0 2 0 0 0 A B E F G J I K On constate que la durée totale du projet passe de 53 à 56 dans les deux cas. Mais il est préférable de réaliser I avant J car les marges sur les tâches D, H et L sont alors rallongées de 7 unités. Yves Correc 26/02/2007 3–13 ω Recherche Opérationnelle - Ordonnancement 3.8. CONTRAINTES CUMULATIVES On peut rencontrer deux catégories de problèmes: • Minimiser la durée totale du projet en respectant certaines contraintes sur des moyens particuliers (matériels ou personnels). • Lisser l'usage des moyens avec une contrainte sur la durée totale du projet. Mais le problème le plus fréquent consiste en fait à trouver un compromis entre une utilisation optimale de moyens coûteux et la durée globale du projet. La méthode classique des potentiels ne permettant pas de gérer les contraintes dues à la limitation des ressources, on utilisera une heuristique (méthode sérielle), et l'on introduira préalablement la notion de diagramme de charge associé au projet, afin de visualiser l'utilisation des moyens pendant son déroulement. A cet effet, on représentera sur un graphe les moyens nécessaires à l'avancement du projet, avec en abscisse le temps (généralement échantillonné par valeurs entières: jours, semaines, …), et en ordonnée la quantité de moyens consommée à l'instant t. Cela suppose bien sûr que ces moyens sont réductibles à une unité commune (nombre d'ouvriers, budget, …). On devra dans le cas contraire envisager plusieurs diagrammes séparés, ce qui compliquera les choses… Sur ce diagramme de charge, que l'on peut aussi voir comme une forme d'évolution du diagramme de Gantt, l'utilisation pour la tâche A d'un niveau de moyens égal à 2 pendant 3 unités de temps sera représentée par un rectangle de hauteur 2 et de longueur 3, positionné à partir de la date au plus tôt de démarrage de la tâche. mo yens 5 lim ita tio n des moye ns 4 3 C 2 1 B A 1 2 3 4 5 temp s D iag ram m e de c harge associé à un o rdo nna nce m e n t On a fait là sans le dire une hypothèse assez forte sur le déroulement des tâches élémentaires: on suppose que la consommation de moyens y est constante sur leur durée, ce qui est évidemment un peu réducteur, mais donnera des méthodes de résolution assez simples, comme la méthode sérielle. On pourrait bien sûr tenter de réguler la charge en faisant varier la consommation d'une tâche entre son début et sa fin, ou en jouant sur sa durée qui ne serait plus alors une donnée fixe du problème. C'est certainement plus réaliste, mais cela introduit beaucoup plus de degrés de liberté qui, s'ils peuvent éventuellement améliorer la solution, compliquent énormément la résolution. On se limitera donc dans ce cours à l'hypothèse de tâches de durée fixe, à décaler en bloc si besoin est. Yves Correc 26/02/2007 3–14 Recherche Opérationnelle - Ordonnancement On devine à ce stade que le calcul d'un ordonnancement sous contraintes de moyens et/ou de durée va s'apparenter d'un peu loin à une partie de Tetris où l'on va essayer de faire tenir dans la grande boîte délimitée par ces contraintes globales l'ensemble des rectangles associés aux tâches (et non les figures déformables qui apparaîtraient si l'on pouvait jouer à la fois sur la charge et la durée de la tâche), et dans un ordre compatible avec leur exécution… Cet ordre va dépendre bien sûr des contraintes de précédence entre tâches, mais aussi de l'intérêt que pourra présenter la réalisation d'une tâche plutôt qu'une autre quand les moyens font défaut... On entame à un moment donné la réalisation d'une tâche à sa date au plus tôt: oui, mais que fait-on si elle est en concurrence au niveau des moyens avec une autre tâche? A laquelle vaut-il mieux allouer préférentiellement les moyens? Laquelle supportera le moins mal (pour le projet global) de prendre du retard de ce fait? Plusieurs critères sont envisageables pour aider ce choix. Les données disponibles au terme d'un ordonnancement sans contraintes de moyens sont: date au plus tôt, date au plus tard, marge, durée, moyens… Le bon sens conduit à privilégier les tâches les plus "urgentes", soit dans l'absolu parce que leur date butée est proche (date au plus tard), soit en relatif parce que l'on a une marge faible ou nulle dessus (marge) avec une répercussion immédiate sur l'ensemble du projet. L'heuristique que nous utiliserons ici, baptisée méthode sérielle parce que l'on va y balayer séquentiellement l'ensemble des tâches du projet pour déterminer dans quelles conditions (nominales ou retardées) elles pourront être exécutées, comporte trois étapes: 1) Résolution du problème d'ordonnancement classique (sans contrainte de moyens) et construction du diagramme de charge. Si les moyens nécessaires sont compatibles avec les limitations imposées, fin de l'algorithme, sinon: 2) Classement des tâches suivant l'un de ces critères: par dates au plus tôt croissantes, par dates au plus tard croissantes, par marges croissantes, par durées croissantes. On utilisera de préférence le deuxième ou le troisième. 3) Reconstruction séquentielle de l'ordonnancement en réalisant les tâches dans l'ordre prévu en fonction de la disponibilité des moyens: On étudie les tâches l'une après l'autre suivant l'ordre défini par le classement (2), en vérifiant à chaque fois si elle peut commencer à la date au plus tôt initialement prévue. Cela nécessite que: • • Toutes les tâches qui la précèdent doivent avoir été achevées. Tous les moyens nécessaires à sa réalisation doivent être disponibles pendant toute sa durée prévue. Si ces deux conditions sont vérifiées, la tâche peut s'exécuter comme prévu. Dans le cas contraire, on doit retarder son démarrage jusqu'au moment où les moyens nécessaires sont enfin disponibles. Deux cas de figure apparaissent alors: Si le retard est inférieur à la marge, il n'y a pas d'impact sur le projet, sinon des répercussions sont à prévoir sur l'ensemble du projet qui prendra du retard (difficile à prévoir exactement sans faire le calcul: attention à l'effet domino évoqué au paragraphe 3.6.). Yves Correc 26/02/2007 3–15 Recherche Opérationnelle - Ordonnancement On illustrera cette méthode sur l'exemple défini par le tableau suivant: Tâches précédents moyens durée A ∅ 3 6 B ∅ 2 3 C ∅ 1 6 D B 1 2 E B 3 4 F AD 3 3 G CEF 2 1 (1) Déterminer l'ordonnancement au plus tôt (dates, marges), et le diagramme de charge associé. (2) Trouver un ordonnancement correspondant à des moyens limités globalement à 5 unités. Après décomposition en niveaux, on obtient le graphe représentatif du projet, sur lequel on calcule (date au plus tôt, date au plus tard): 0,0 A 0 α 0 0 6,6 F 6 3,4 D 3 0,1 B 3 0,3 3 3,5 E 6 C 2 9,9 4 G 1 10,10 ω Le diagramme de charge associé est : Moyens 8 7 6 5 C 4 B 3 2 1 E D C A F G 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Yves Correc 26/02/2007 t 3–16 Recherche Opérationnelle - Ordonnancement On applique la méthode sérielle avec pour critère de classement la date au plus tard. On donne en colonne 3 les moyens restant disponibles au moment de commencer une tâche (à la date au plus tôt): Tâche Date au plus tard Moyens nécessaires Moyens disponibles A 0 3 5 OK B 1 2 2 OK C 3 1 0 puis 2 D 4 1 1 E 5 3 1 puis 4 Doit attendre la fin de A, décalage de 3 F 6 3 1 puis 2 puis 5 Doit attendre la fin de E, décalage de 4 G 9 2 5 Remarques: Doit attendre la fin de B, décalage de 3, sans conséquences OK OK après F Le diagramme de charge résultant est le suivant (allongement de la durée du projet à 14): Moyens 8 7 6 5 4 3 2 1 Limitation des moyens à 5 unités D B C E A F C G 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Yves Correc 26/02/2007 t 3–17 Recherche Opérationnelle - Ordonnancement Exercice 1 (construction d'une maison avec limitation des moyens) La construction d'un édifice comporte un certain nombre de tâches. Pour chacune d'elle sont précisés ci-dessous le libellé, la durée (en jours), les moyens requis (nombre d'ouvriers), et les contraintes sur le début : A pose des cloisons 10 j B menuiserie 12 j C vitrerie 14 j D ossature 10 j E1 électricité-plomberie 6j E2 électricité-plomberie 14 j F charpente 11 j plus tard 20 jours avant le début de B G couverture 13 j H électricité-chauffage 15 j I revêtements muraux 16 j 3 ouv 2 ouv 2 ouv 6 ouv 1 ouv 2 ouv 3 ouv au plus tôt à la fin de E1 et G au plus tôt à la fin de A et G au plus tôt à la fin de B au plus tard 5 jours après début des travaux au plus tôt à la fin de D au plus tôt à la fin de A au plus tôt lorsque les 4/5 de D sont achevés et au 2 ouv 2 ouv 1 ouv au plus tôt à la fin de F au plus tôt à la fin de E et I au plus tôt à la fin de C (1) Déterminer, au moyen de la méthode "potentiel-tâche" de ROY, un ordonnancement de durée minimale (dates au plus tôt, au plus tard, marges et chemin critique). (2) Etablir le diagramme de charge associé. Commentaires ? Peut-on lisser la charge sans retarder la livraison ? Y a-t-il un intérêt quelconque à retarder la livraison ? NB. On prendra pour résoudre cet exercice l’hypothèse surréaliste que la main d'oeuvre concernée est universellement compétente et parfaitement interchangeable... Solution: On effectue la décomposition en niveaux sur le dictionnaire des précédents, qui résulte immédiatement de l'énoncé des contraintes de précédence entre tâches: A E1,G A E1,G A G A B A,G B A,G B A,G B A C C B C B C B C B E2 D E1 E2 A E2 A E1 D E2 A G H E,I E2 A F H E,I I C I C F 4/5D G F G F H E,I H E,I I C I C C B B H E,I I C H H I I C I H I niveaux D E1, F G A B, E2 C I H Ce qui permet de construire le graphe associé au projet, décomposé en niveaux, sur lequel va être effectué successivement le calcul des dates au plus tôt (balayage avant, en vert), au plus tard (balayage arrière, en rouge), et des marges (en bleu). Le chemin critique est indiqué en rouge. Yves Correc 26/02/2007 3–18 Recherche Opérationnelle - Ordonnancement 10 10 E2 14 H 13 D 0à5 A 8 F G 11 10 α 6 E1 B 13 C 12 I 14 ω 15 16 20 Graphe décomposé en niveaux 1 0 0à5 3 10 26 E1 6 4 8 8 8 F 11 5 6 32 32 42 70 10 A E2 19 19 G 10 α 0 0 D 10 2 13 0 13 14 42 42 B 7 12 54 54 C 14 68 68 I 8 9 84 84 H 99 99 ω 15 16 20 Calcul des dates au plus tôt, et au plus tard 1 0 0à5 0 3 10 26 E1 6 4 8 0 19 19 G 0 13 20 7 14 28 0 11 6 32 32 42 70 10 A E2 16 8 8 F 5 10 α 0 0 D 10 2 13 0 42 42 B 0 12 54 54 C 0 14 68 68 I 8 9 84 84 H 99 99 ω 16 0 15 0 0 Calcul des marges, et chemin critique 0 1 2 3 4 5 6 7 8 9 On détermine ensuite le diagramme de charge associé à ces ordonnancement au plus tôt, sans contraintes de ressources: Yves Correc 26/02/2007 3–19 Recherche Opérationnelle - Ordonnancement On observe un pic de consommation de ressources (9) dû au démarrage de la tâche F avant la fin de la tâche D. Par ailleurs, compte tenu des marges sur E1 et E2, supérieures respectivement aux durées de F, et de B+C, il apparaît possible de retarder le début de E1 après la fin de F, et le début de E2 après la fin de C, de manière à lisser quelque peu la charge durant la plus grande partie de la construction sans augmenter sa durée totale (99), réduisant ainsi le nombre maximal d'ouvriers nécessaires pendant cette période de 4 à 3, comme l'indique le diagramme de charge modifié qui suit: Si l'on veut aller plus loin, il est nécessaire d'effacer le pic précité en retardant le démarrage de F après la fin de D, ce qui retarde globalement la construction de 2 jours car F est sur le chemin critique. La durée totale passe alors de 99 à 101 jours, ce qui requiert 6 ouvriers pendant 10 jours, puis 3 ouvriers au plus jusqu'à l'achèvement: Yves Correc 26/02/2007 3–20 Recherche Opérationnelle - Ordonnancement Exercice 2 Une réalisation industrielle comporte un certain nombre d'opérations définies par le tableau suivant: Durée (jours) 15 10 10 15 5 30 25 60 20 5 25 35 40 20 20 20 35 55 5 Tâche A B C D E F G H I J K L M N O P Q R S Tâches précédentes B Aucune A Aucune C D E F A C H I G J K L B M N 0 K K P Q R 1. Donner le graphe (décomposé en niveaux) associé à la méthode potentieltâche de ROY. 2. Au moyen de cette méthode, déterminer les dates au plus tôt, au plus tard, les marges et les tâches critiques. Indiquer le chemin critique sur le graphe. 3. Construire le diagramme de charge associé sachant qu'un seul ouvrier est affecté à chaque tâche. 4. Peut-on lisser la charge? Solution La décomposition en niveaux, conduite à partir du dictionnaire des précédents ci-dessus, nous donne en partant du début du projet les niveaux suivants: (B D), (A N), (C H), (E I), (F J), (G), (K), (L Q R), (M), (O), (P), (S). Et le graphe correspondant est: 15 20 E I H G 25 60 20 J L 25 K 5 25 A 15 30 35 M 40 O Q 20 P S 5 10 F 25 C 5 10 B 15 0 10 N 20 α D 10 0 35 ω 55 R Yves Correc 26/02/2007 3–21 Recherche Opérationnelle - Ordonnancement La suite des dictionnaires de précédents correspondant à la construction de ces niveaux est la suivante: Niv 1 = B, D A B C D E F G H I J K L M N O P Q R S Niv 2 = A, N B A CD E F A CH I GJ K L B M NO K K PQR A C E F G H I J K L M N O P Q R S Niv 7 = K K L M O P Q R S A C E F A CH I GJ K L M NO K K PQR Niv 3 = C, H C E F G H I J K L M O P Q R S Niv 8=L,Q,R L M O P Q R S K L M O K K PQR L M O PQR C E F CH I GJ K L M O K K PQR Niv 4 = E, I E F G I J K L M O P Q R S Niv 9 = M M O P S M O P Niv 5 = F, J E F I GJ K L M O K K PQR F G J K L M O P Q R S Niv 10 = 0 O P S F GJ K L M O K K PQR Niv 6 = G G K L M O P Q R S Niv 11 = P O P P S G K L M O K K PQR Niv 12 = S P S - Le calcul des dates au plus tôt ti (balayage avant, en vert) et des dates au plus tard Ti (balayage arrière, en rouge) donne: 0,35 0 15 0 35,50 2 10,210 0 25,40 C 85,85 I H 60 25,25 170,170 L 25 35 K 110,110 J 20 105,105 5 25 A 10,101 5 25 135,135 M O 40 20 210,210 Q 230,230 P 250,250 S 5 10 5 40,55 30 G 25 B 70,85 F 10 0,0 E 10 10 N 20 α D 15 0,0 35 135,215 55 ω 255,255 R 135,195 C'est à dire, pour les marges mi (en bleu) et le chemin critique (en rouge): Yves Correc 26/02/2007 3–22 Recherche Opérationnelle - Ordonnancement 35 D 0 15 15 200 0 5 15 C 0 1 5 I 60 H 0 20 0 0 G L M 25 25 K 5 J 0 35 40 O 0 0 25 A 15 30 15 20 P 0 S 0 5 10 F 25 B 10 0 E 10 10 N 20 20 α 15 0 35 Q 80 ω 0 55 R 60 0 Enfin le diagramme de charge associé à cet ordonnancement (on aura pris soin de commencer par les tâches du chemin critique, par définition incompressibles, qui vont ainsi constituer en quelque sorte les "fondations" de la figure…) nous permet de conclure que la charge qui peut temporairement atteindre 3 unités est susceptible d'être lissée à 2 unités sans retarder le projet. Deux façons de procéder existent pour chaque pic observé: Pour effacer le pic N, on peut décaler N après G (figure ci-dessous), ou bien insérer N entre D et C, les marges sur C, E, F, G le permettant. Le décalage de N est sans doute préférable car il permet de conserver les marges sur C, E, F, G. Pour effacer le pic Q, on peut repousser Q après R (figure), ou bien R après Q, les marges le permettant aussi. Le choix le moins risqué sera de décaler R (la plus petite marge résiduelle est supérieure dans ce cas). On n'a pas eu recours ici à la méthode sérielle, vu la simplicité du diagramme de charge à traiter. 3 N 2 Q N D N CE F B A H N G Q R 1 0 50 Yves Correc 26/02/2007 I J 100 K L 150 M 200 O P S 250 3–23 Recherche Opérationnelle - Ordonnancement 3.9. OPTIMISATION DU COÛT ET DE LA DURÉE D'UN PROJET On a supposé que les moyens et les durées étaient fixes, le problème consistant uniquement à déterminer les dates de début des tâches, voire à la rigueur comme l'a vu au paragraphe précédent, à déterminer la durée du projet en fonction des contraintes sur les moyens. Il est généralement possible en fait d'accélérer une ou plusieurs tâches au prix d'une augmentation de leur coût, jusqu'à un certain point, et donc de réduire la durée totale du projet. Le coût global du projet peut alors être considéré comme une fonction décroissante de sa durée T . Par contre le retard apporté à l'achèvement d'un projet peut se traduire par des coûts indirects liés à ce retard (par exemple un manque à gagner sur un retard de construction: immobilisation financière ou mise en location différée ). Le coût total, somme des coûts directs et indirects, présente souvent une forme voisine de celle de la figure qui suit. C o û t Coût global = direct+indirect Coût indirect Coût direct Durée T On peut alors vouloir déterminer la durée optimale Tmin qui minimise le coût global du projet. Pour cela, on va chercher à établir une relation entre coût et durée, c = f(d). Pour chaque tâche on peut déterminer deux couples de valeurs (durée-coût), les valeurs correspondant à une tâche "normale" (di, ci), et les valeurs correspondant à une tâche "accélérée" (Di, Ci), et supposer que dans l'intervalle le coût varie linéairement en fonction de la durée. Ce qui permet d'approcher la courbe par un segment de droite ayant pour pente le coût marginal relatif à la tâche i: cmi = (Ci - ci) / (Di - di) Si l'on appelle δi la durée de chaque tâche (ajustable dans l'intervalle [di , Di ]), on peut alors prendre pour objectif de minimiser, en jouant sur les δi, le coût du projet c = Σ (ci + cmi (δi - di)), soit à une constante près: Min Σi cmi δI sous les contraintes de potentiel durée globale durée chaque tâche δi ≤ tj - ti tn – t1 ≤ d di ≤ δi ≤ Di C'est un problème de programmation linéaire, pour d fixé, et l'on devra donc en envisager la résolution paramétrée par le second membre (en d), ce qui s'avérera très lourd (mind c, où la fonction coût est décroissante et linéaire par morceaux en fonction de d). Une approche plus simple consiste à employer la méthode de résolution heuristique qui suit: On construit l'ordonnancement au plus tôt correspondant aux durées "normales" di des tâches. On cherche ensuite à réduire la durée globale du projet, en accélérant la tâche du chemin critique de coût marginal minimum, puis la suivante, etc. On recalcule au cours de ce processus le chemin critique du projet, qui est susceptible de changer (l'apparition d'un nouveau chemin critique dans l'ordonnancement correspond à une discontinuité de la pente de la courbe c(d). La procédure se termine quand aucune amélioration (réduction de la durée d'une tâche d'un chemin critique) n'est plus possible. Yves Correc 26/02/2007 3–24