Problème de gestion de projet à contraintes de ressources

Le problème de gestion de projet à contraintes de ressources est un problème d'optimisation combinatoire, étudié en ordonnancement. Il est connu sous l'acronyme anglophone RCPSP (Resource-Constrained Project Scheduling Problem).

Le problème est NP-difficile au sens fort, il ne peut donc être résolu optimalement que par des algorithmes de complexité exponentielle. L'état de l'art permet de le résoudre optimalement dans un temps raisonnable, sur des instances de 60 tâches au plus.

Description modifier

Concepts modifier

Les ressources sont des moyens de production renouvelables, mais limités en capacité. Une équipe de quatre ouvriers ayant les mêmes compétences peut être considérée comme une ressource de capacité 4.

Les tâches sont des travaux définis par une durée et une quantité de chaque ressource qui est nécessaire à son exécution. Les tâches sont supposées non-préemptives: une fois que l'exécution a commencé, elles se poursuit sans interruption jusqu'à la fin. Un bien manufacturé peut prendre deux heures de fabrication, et nécessiter le travail de deux ouvriers et d'une machine.

Il existe entre les tâches des relations de précédence, qui signifient classiquement qu'une tâche ne peut débuter que si certaines autres tâches sont finies. Ces relations permettent de représenter l'organisation du projet par un graphe de précédence (ou réseau PERT) : une tâche est figurée par un nœud, chaque relation de précédence est un arc orienté du prédécesseur vers le successeur, qui est valué par la durée du prédécesseur. Un graphe de précédence ne doit pas présenter de circuit, une tâche ne pourrait, directement ou indirectement, être son propre prédécesseur.

Classiquement, le problème consiste à minimiser la date de fin du projet, étant donné les contraintes de précédence et de ressources.

Formalisation modifier

Soient n tâches et q ressources.

Les ressources sont notées   et leurs capacités sont notées  .

Les tâches sont désignées par   et leur durées sont  , une tâche i demande une quantité   de la ressource k. Deux tâches fictives sont ajoutées en général, elles ont une durée nulle et ne consomment pas de ressources:   est le prédécesseur des autres tâches (sommet source du graphe),   est le successeur de toutes les tâches (sommet puits du graphe de précédence). Les précédences sont déclarées par un ensemble  .

Une solution S au problème est un vecteur de   contenant les dates de début de chacune des tâches.

Il existe deux types de contraintes:

  • les contraintes de précédence: soient des tâches   et   telles que   (  précède  ),   ne peut pas commencer avant la fin de  ,  
  • les contraintes de ressources: à tout instant et pour chaque ressource  , la somme des demandes des tâches en cours d'exécution n'excède pas  

Méthodes de résolution modifier

Un certain nombre d'outils ont été employés pour résoudre le problème:

Algorithmes de liste modifier

Les premières méthodes, créées dans les années 1960, sont des heuristiques à base de listes. Les listes de priorité définissent une priorisation dans l'exécution des tâches, selon des critères souvent heuristiques comme le temps de traitement de tâches ou la marge. Une liste de priorité doit respecter les contraintes de précédence.

L'algorithme d'ordre strict consiste à placer les tâches une par une, au plus tôt possible, dans l'ordre exact de la liste de priorités.

 
Tant que la liste de priorité est non vide
  soit la tâche   que l'on retire au début de la liste de priorité
    la date à laquelle on peut ordonnancer   au plus tôt (  est la durée de la tâche j)
  soit  , la première date à laquelle les ressources sont disponibles pour l'exécution
  placer la tâche à la date  
   
Fin Tant Que

Détermination d'une borne inférieure modifier

Etant donnée la complexité du problème, il est souvent illusoire de vouloir déterminer des solutions exactes au problème. En recherche opérationnelle, pour évaluer concrètement une méthode de résolution, on évalue la qualité d'une solution en comparant la date de fin obtenue   avec une borne inférieure  . La borne inférieure est une valeur qu'on sait inférieure à la date de fin de la solution optimale, mais on doit obtenir une valeur assez haute pour bien approcher la valeur optimale. La qualité d'une solution se mesure en pourcentage d'écart avec la borne inférieure:  .

Méthode du chemin critique modifier

Chemin critique amélioré modifier

Raisonnement énergétique modifier

Extensions modifier

Le modèle basique du RCPSP a été adapté à de nombreuses applications industrielles, d'où l'apparition de variantes du problème.

Gestion de projet multi-compétence modifier

Cette variante est adaptée à la planification de projet dans des sociétés de service, notamment des SSII. On définit un ensemble de compétences, les ressources représentent les personnes participant au projet, la capacité de chaque ressource est 1. Une tâche ne se définit plus par des quantités exigées de chaque ressource, mais par des nombres de personnes ayant telles compétences. Par exemple, une tâche "Tests unitaires" peut nécessiter deux personnes ayant la compétence "Développeur" et une personne ayant la compétence "Analyste".

Tâches multi-mode modifier

Une même tâche peut être exécutée de différentes manières, ou modes. Chaque mode définit une durée propre et des demandes en ressources. Le choix d'un mode pour exécuter une tâche fait partie du problème.

Ordonnancement robuste modifier

Des approches d'ordonnancement robuste ont été développées pour le RCPSP. Les modèles robustes en gestion de projet considèrent quatre types de perturbations[1]:

  • perturbations du graphe de projet: des tâches (ou des liens de précédence) sont ajoutées ou supprimées
  • perturbations sur les tâches: modifications des durées, des demandes
  • perturbations sur les ressources: des ressources deviennent indisponibles (pannes, absences) ou leur capacité est temportairement limitée
  • changements de délais

Voir aussi modifier

Articles connexes modifier

Sources et références modifier

  1. Gang Yu,Xiangtong Qi Disruption management : framework, models and applications, 2004