Wikiwand AI

Problème de gestion de projet à contraintes de ressources

From Wikipedia, the free encyclopedia

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.

Concepts

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

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 leurs 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

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

Algorithmes de liste

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

Extensions

Voir aussi

Related Articles

Timelines

Top Qs

Fact Checks