FR 3090957 A1 20200626 FR 1873380 A 20181219 Description Titre de l'invention - dispositif et procédé d'ordonnancement de tâches Domaine technique [0001] La présente invention concerne une méthode et un dispositif d'ordonnancement de tâches pour une pluralité de ressources. Etat de la technique [0002] Chaque projet industriel peut être défini par un ensemble de tâches assignées à des ressources. Différents critères et/ou facteurs de risques doivent pouvoir être pris en compte simultanément : des critères de réduction des ressources (nombre de ressources matérielles nécessaires à l'exécution des tâches, degré possible de parallélisation entre les tâches, etc), de délais (délais d'exécution des tâches, délais de production d'un ou plusieurs produits, réduction du temps total d'exécution de l'ensemble des tâches) et/ ou des facteurs de risques d'origines diverses (techniques, jmidiques, etc...) liés à l'exécution du projet et de ses tâches Ainsi une difficulté réside dans la codification de multiples critères à appliquer pour réaliser l'ordonnancement. [0003] Il apparaît ainsi un besoin de solution technique d'ordonmuicement de tâches permettant à la fois d'améliorer le taux d'utilisation des ressources et la durée totale d'exécution des tâches et en même temps de prendre en compte différents critères spécifiques à un projet, tout en conservant un caractère générique à la solution de sorte qu'elle soit applicable à tout type de projets industriels et à la multiplicité des ressources de ces projets. [0004] En particulier, un ordonnancement efficace des tâches devrait pouvoir être réalisé en temps réel ou quasi-temps réel, être applicable à tout type de projets industriels et produire des résultats pertinents par rapport à des critères spécifiques à un projet considéré. [0005] Résumé [0006] Selon un premier aspect, la présente description concerne un procédé d'ordonnancement d'une pluralité de tâches à exécuter par une pluralité de ressources. Le procédé est mis en oeuvre par ordinateur et comprend une réception, en provenance d'un dispositif source, de données de description de la pluralité de tâches, les données de description comprenant pour chaque tâche : une identification parmi la pluralité de ressources d'une ressource à laquelle la tâche est affectée, des informations sur les successeurs éventuels de la tâche considérée ; une obtention d'un indicateur du caractère prioritaire ou non prioritaire d'une 2 tâche considérée parmi les tâches affectées à une ressource; une obtention de coefficients de pondération, les coefficients de pondération comprenant un coefficient de pondération d'un potentiel de déblocage de tâche affecté à au moins une tâche et un coefficient de pondération de risque exogène affecté à au moins une tâche; un calcul, pour chacune des tâches à ordonner, d'un niveau de risque intrinsèque au projet et d'un niveau d'impact de la tâche sur ses successeurs sur la base des données de description et des coefficients de pondération obtenus; un calcul, pour chacune des tâches à ordonner, d'un niveau de priorité global sur la base du niveau de risque, du niveau d'impact et du caractère prioritaire ou non prioritaire; un ordonnancement des tâches pour au moins une ressource en respectant les éventuels successeurs de chaque tâche et dans lequel les tâches sont classées sur la hase du niveau de priorité global; une transmission, vers le dispositif destinataire, d'une liste ordonnée d'au moins une tâche pour au moins une des ressources de la pluralité de ressources. [0007] Dans au moins un mode de réalisation, le procédé comprend une mise à disposition d'une interface d'entrée configurée pour acquérir au moins une valeur d'au moins un desdits coefficients de pondération. [0008] Dans au moins un mode de réalisation du procédé selon le premier aspect, le niveau de priorité global d'une tâche est le résultat d'une fonction de pondération du niveau de risque et du niveau d'impact, la fonction de pondération étant une fonction croissante du niveau de risque et une fonction croissante du niveau d'impact. [0009] Dans au moins un mode de réalisation du procédé selon le premier aspect, le niveau d'impact d'une tâche est une fonction croissante d'un potentiel de déblocage de tâches, du coefficient de pondération du potentiel de déblocage de tâches et du coefficient de pondération de risque exogène affectés à la tâche considérée. [0010] Dans au moins un mode de réalisation du procédé selon le premier aspect, le potentiel de déblocage de tâches associé à une tâche est une fonction décroissante du nombre de ressources qui sont affectées aux tâches successeurs de la tâche et qui diffèrent de la ressource affectée à la tâche. [0011] Dans au moins un mode de réalisation du procédé selon le premier aspect, le niveau de risque d'une tâche est une fonction décroissante du nombre de ressources capables d'exécuter la tâche considérée. [0012] Dans au moins un mode de réalisation du procédé selon le premier aspect, les coef- ficients de pondération comprennent un coefficient de pondération du niveau d'impact par rapport au niveau de risque appliqué dans le calcul de ladite fonction de pon- 3 dération. [0013] Dans au moins un mode de réalisation du procédé selon le premier aspect, le l'ordonnancement des tâches comprend : une identification pour chaque ressource d'une première tâche à exécuter parmi un premier ensemble d'au moins une tâche à ordonner, affectée à la ressource considérée et dont tous les prédécesseurs sont tous terminés et/ou ordonnés, la première tâche à exécuter étant soit une tâche prioritaire s'il en existe une dans le premier ensemble, soit la tâche de niveau de priorité global le plus élevé parmi les tâches non prioritaires dans le premier ensemble ; une identification pour chaque ressource d'au moins une deuxième tâche à exécuter suite à la première tâche, la deuxième tâche étant choisie parmi un deuxième ensemble d'au moins une tâche constitué par la ou les tâches non encore ordonnées qui sont affectées à la ressource considérée et dont tous les prédécesseurs sont tous terminés et/ou ordonnés, la deuxième tâche étant une tâche prioritaire s'il en existe une dans le deuxième ensemble, soit la tâche de niveau de priorité global le plus élevé parmi les tâches non prioritaires dans le deuxième ensemble. [0014] Dans au moins un mode de réalisation du procédé selon le premier aspect, l'ordonnancement des tâches est effectué en appliquant un algorithme génétique à un ensemble de projets candidats, dans lequel, pour chaque projet candidat une liste de tâches ordonnées est générée quasi-aléatoirement en respectant les éventuels successeurs et/ou prédécesseurs de chaque tâche et un score est calculé pour le projet candidat comme fonction croissante des niveaux de priorité globaux des tâches du projet candidat et dans lequel, une ou plusieurs générations de projets candidats sont générées par croisement et/ou mutation aléatoire d'un pourcentage des projets candidats de score le plus élevé de la génération précédente. [0015] Ces différents modes de réalisation sont combinables entre eux. [0016] Selon un deuxième aspect, la présente description concerne un dispositif comprenant des moyens de mise en oeuvre des étapes d'un procédé selon le premier aspect. [0017] Selon un troisième aspect, la présente description concerne un programme d'ordinateur comportant des instructions de programme pour l'exécution des étapes d'un procédé selon le premier aspect. [0018] Selon un quatrième aspect, la présente description concerne un support d'enregistrement lisible par un ordinateur sur lequel est enregistré un programme d'ordinateur comprenant des instructions de programme pour l'exécution des étapes d'un procédé selon le premier aspect. Présentation des figures [0019] D'autres avantages et exemples de réalisations sont décrits ci-après par référence aux figures dans lesquelles : 100201 Ifig.11 représente de manière schématique un exemple de système informatique pour la mise en oeuvre d'un procédé d'ordonnancement de tâches selon un exemple de réalisation. [0021] [fig.2] est un organigramme d'un procédé d'ordonnancement de tâches scion un exemple de réalisation. [0022] [fig.3] représente des aspects d'un procédé d'ordonnancement de tâches scion un exemple de réalisation. [0023] [fig.4] représente des aspects d'un procédé d'ordonnancement de tâches scion un exemple de réalisation. Description détaillée [0024] La Fig. 1 représente de manière schématique un exemple de système informatique pour la mise en oeuvre d'un procédé d'ordonnancement de tâches selon un exemple de réalisation Cc système informatique 100 comprend un dispositif de contrôle 110 et un dispositif d'ordonnancement 120. [0025] Chaque dispositif 110, 120 est un dispositif informatique qui présente globalement l'architecture d'un ordinateur, incluant des constituants d'une telle architecture : mémoire(s) de données, processeur(s), bus de communication, interface(s) utilisateur 112, 123, interface(s) matérielle(s) pour la connexion de ce dispositif informatique à un réseau ou un autre équipement, etc. Il peut s'agir d'un dispositif fixe ou mobile. [0026] Ce système informatique 100 comprend en outre une hase de données 115 pour le stockage de données de description de tâches et une hase de données 116 pour le stockage de données de d'ordonnancement de tâches (rangs des tâches ordonnées). [0027] Les deux dispositifs informatiques 110 et 120 communiquent entre eux via une ou plusieurs liaisons 150 de transmission de données. Selon un mode de réalisation, le dispositif d'ordonnancement 200 accède en temps réel aux données de description de tâches produites par le dispositif de contrôle 110, par exemple via hase de données 115. Le dispositif de contrôle 110 et/ou la hase de données 115 peuvent servir de dispositif source pour la description de tâches. [0028] Le dispositif d'ordonnancement 120 comprend des moyens 121, 122 de mise en oeuvre d'un procédé d'ordonnancement selon la présente description. Le dispositif d'ordonnancement 120 comprend des moyens 122 d'obtention de données de description de tâches générées par le dispositif de contrôle 120 et des moyens 122 de transmission au dispositif de contrôle 120 de données d'ordonnancement de tâches. Le dispositif d'ordonnancement 120 comprend des moyens 121 d'analyse et traitement des données de description de tâches générées par le dispositif de contrôle 120 et des moyens 121 de génération de données d'ordonnancement de tâches. [0029] La Fig. 2 représente un organigramme d'un procédé d'ordonnancement selon un exemple de réalisation. Bien que les différentes étapes de l'organigramme soient présentées et décrites de façon séquentielle, l'homme de l'art comprendra que certaines ou toutes les étapes peuvent être exécutées dans un ordre différent, peuvent être combinées ou omises, et certaines ou toutes les étapes peuvent être effectuées en parallèle. Les étapes de la méthode peuvent être mises en oeuvre par un dispositif d'ordonnancement 120 tel que décrit par référence à la Fig. 1 [0030] A l'étape 200, des données de description d'une pluralité de tâches sont reçues en provenance d'un dispositif source. Cette réception peut être mise en oeuvre par exemple via une interface de programme (API) se connectant dynamiquement au dispositif 110 de contrôle et/ou à la base de données 115. Cette transmission des données de description peut avoir lieu dès que changement est détecté dans ces données de description ou sur requête du dispositif d'ordonnancement 120. [0031] Une ressource est par exemple un matériel spécifique d'exécution de tâches, un composant électronique, un logiciel, un ordinateur, un robot, un composant matériel et/ ou logiciel d'une chaîne de production, etc. Le procédé décrit ici est toutefois applicable à tout type de ressource. [0032] Les données de description peuvent comprendre pour chaque tâche Ti un ou plusieurs des informations suivantes: une identification d'une ressource R; auquel la tâche est affectée ; un indicateur du caractère prioritaire ou non prioritaire Pi de la tâche considérée; une date limite de début de réalisation, par exemple une date de début au plus tôt, une date limite de fin de réalisation, par exemple une date de fin au plus tard, une durée, par exemple une durée prévisionnelle ; un degré d'avancement de l'exécution de la tâche; ce degré d'avancement peut être codé par une valeur entre 0 et 1, où la valeur 0 correspond à une tâche non commencée et la valeur 1 à une tâche terminée ; un temps éventuellement déjà passé sur la tâche ; un ensemble de tâches (appelées ici tâches prédécesseurs PT; de la tâche Ti) qui doivent être réalisées avant que la tâche considérée ne puisse débuter, cet ensemble pouvant être vide; une ensemble de tâches (appelées ici tâches successeurs ST; de la tâche Ti) qui ne pourront commencer que si la tâche considérée est achevée, cet ensemble pouvant être vide. 6 [0033] Marre [0034] Dans un exemple de réalisation, la marge d'une tâche non encore commencée est l'intervalle de temps qui sépare les dates limites de début (de préférence date de début au plus tôt) et de fin d'une tâche (de préférence date de fin au plus tard), moins la durée de cette tâche. [0035] La marge d'une tâche déjà commencée (degré d'avancement non nul) peut être calculée de la manière suivante. On calcule d'abord un temps correspondant au temps restant à faire (RAF) comme suit : [0036] RAF = temps passé / degré d'avancement - temps passé [0037] Puis on calcule la marge comme suit : [0038] marge = date de fin - (date courante + RAF) [0039] Une tâche qui est en retard a une marge nulle ou négative. [0040] La Fig. 3 montre 3 tâches TI, T,, T; dontla première TI est en retard (marge négative), la deuxième tâche a une marge positive T, et la troisième tâche une marge nulle. [0041] Caractère prioritaire ou non prioritaire d'une tâche [0042] Le fait d'être prioritaire ou non pour une tâche n'a de sens qu'au sein d'un ensemble de tâches. Le caractère prioritaire ou non prioritaire d'une tâche est déterminé de manière automatisée en fonction des données de description de cette tâche. [0043] On définit ainsi l'ensemble Ei des tâches affectées à la ressource Ri qui sont non ordonnées et disponibles. Une tâche est ici dite disponible si tous ses prédécesseurs sont tous terminés et/ou ordonnés. [0044] Dans un exemple de réalisation, une tâche de l'ensemble Ei est considérée comme prioritaire si, pour toutes les autres tâches de l'ensemble Ei, la marge de cette tâche est plus petite que la durée de la tâche la plus courte parmi les autres tâches. Les tâches déjà en retard ont une marge nulle ou négative, et seront donc considérées comme prioritaires. [0045] Le caractère prioritaire est pris en compte dans l'ordonnancement des tâches. Par exemple si, parmi l'ensemble de tâches à ordonner, une tâche prioritaire n'est pas exécutée en premier, cette tâche prendra du retard et les conséquences sur le projet peuvent être multiples : on augmente les risques et retards possibles pour l'exécution dans les délais convenus de l'ensemble des tâches. [0046] Notion de successeurs / prédécesseurs [0047] De manière pratique, une tâche ne peut être exécutée que si l'ensemble des tâches dont elle dépend ont déjà été réalisées. De même, aucune tâche successeur ne pourra être exécutée tant que cette tâche n'est pas terminée. Ainsi, la notion de tâches prédécesseurs PT; de la tâche T; et de tâches successeurs ST; de la tâche T; sert à prendre en compte les liens de dépendance entre les tâches. Un arbre des dépendances ou 7 hiérarchie entre les tâches (voir par exemple la Fig. 4) peut être déterminé pour représenter ces liens de dépendances. [0048] La Fig. 4 montre un ensemble de tâches T1 à T6 dans lequel les tâches T2 et T3 sont les successeurs de T1, T4 et T5 sont les successeurs de T2 et T6 est le successeur de T3. [0049] A l'étape 210, une interface d'entrée, configurée pour acquérir des coefficients de pondération, est mise à disposition d'un utilisateur U2, par exemple le chef de projet. Cette interface d'entrée est par exemple une interface utilisateur de saisie de données (clavier alphanumérique, interface vocale, interface tactile, etc) du dispositif 120 d'ordonnancement. [0050] Puis, lors de l'étape 210, au moins un coefficient de pondération est acquis via ladite interface d'entrée. Cette acquisition se fait suite à l'entrée par l'utilisateur U2 d'un ou plusieurs coefficients de pondération. [0051] Le ou les coefficients de pondération obtenus peuvent comprendre un ou plusieurs des coefficients de pondération suivants : un coefficient CI de pondération de risque exogène affecté à une, plusieurs ou toutes les tâches; un coefficient de pondération d'un potentiel de déblocage affecté à unc, plusieurs ou toutes les tâches; un coefficient a de pondération de niveau de priorité affecté à une, plusieurs ou toutes les tâches ; [0052] A défaut d'obtention de valeurs de ces coefficients pour certaines tâches, des valeurs par défaut sont utilisées pour les étapes suivantes. [0053] A l'étape 220, un niveau de priorité global SC (appelé également score d'une tâche) est calculé pour chacune des tâches à ordonner. Dans un ou plusieurs exemples de réalisation, le calcul du niveau de priorité global SC, est effectué sur la base des données de description et/ou d'un ou plusieurs des coefficients de pondération obtenus. [0054] Ce niveau de priorité global peut être calculé de différentes manières. [0055] Dans un ou plusieurs exemples de réalisation, le niveau de priorité global SC; d'une tâche Ti est calculé comme pondération d'un niveau de risque NRi et d'un niveau d'impact NI, calculés pour la tâche considérée. [0056] Dans un ou plusieurs exemples de réalisation, le niveau de priorité global SC; d'une tâche Ti est calculé comme pondération d'un niveau de risque NRi et d'un niveau d'impact NIi sur la base du coefficient a de pondération obtenu. A défaut d'obtention à l'étape 210 d'un coefficient a de pondération pour une tâche Ti donnée, une valeur par défaut de 0,5 peut être utilisée de sorte à ne pas donner plus d'importance au niveau de risque NRi ou au niveau d'impact NT pour la tâche Ti. [0057] Par exemple : 8 [0058] SC; = a * NI, + (1- a) * NR, [0059] SC; = (1+ NI,)"+ (1+NR;)0- ci) [0060] Le coefficient a sert ainsi à pondérer l'importance qu'accorde le chef de projet aux tâches à fort niveau d'impact NT par rapport aux tâches à fort niveau de risque NR;. Le coefficient a est ainsi un coefficient de pondération du niveau d'impact par rapport au niveau de risque appliqué dans le calcul de la fonction de pondération choisie. [0061] Dans un ou plusieurs exemples de réalisation, le niveau de priorité global SC; d'une tâche T, prend en compte en outre le caractère prioritaire d'une tâche, ainsi que le niveau de risque NR; et le niveau d'impact NI,. [0062] Par exemple : [0063] SC; = a * NI, + (1- a) * NR, + P; [0064] SC; = (1+ Nlyz+ (1+NR;){,-,)+ Pi [0065] où Piprend une première valeur (par exemple P; = 2) si la tâche est prioritaire et une deuxième valeur plus faible (par exemple Pi = 0) que la première valeur (par exemple 0) si la tâche est non prioritaire. De cette manière le niveau de priorité global d'une tâche prioritaire est toujours supérieur au niveau de priorité global d'une tâche non prioritaire. [0066] Ainsi le niveau de priorité global SC, d'une tâche T représente un niveau de priorité global qui prend en compte différents types de risques, caractère critique / importance et/ou l'impact de la tâche sur l'ensemble du projet. [0067] Niveau de risque [0068] Dans un ou plusieurs exemples de réalisation, l'étape 220 de calcul du niveau de priorité global SC comprend une sous-étape de calcul d'un niveau de risque NR pour chacune des tâches Ti à ordonner sur la base des données de description. [0069] Le niveau de risque NR est utilisé pour quantifier un risque intrinsèque au projet, par exemple un risque lié à l'exécution de la tâche. Ce risque peut être quantifié sur la base des données de description des tâches du projet. Le niveau de risque NRi peut être utilisé pour quantifier un risque lié à l'exécution de la tâche sur la base des données de description des tâches du projet. Le niveau de risque NR peut être quantifié sur une échelle prédéfinie, par exemple entre 0 et 1 ou entre 0 et 100. [0070] Dans un exemple de réalisation, le niveau de risque NR peut servir pour quantifier un risque relatif aux ressources, notamment un risque relatif à la disponibilité et/ou au nombre de ressources adaptées à la réalisation de la tâche. Par exemple, ce risque est mesuré relativement au nombre de ressources xi capables d'exécuter la tâche T; et au nombre y total de ressources du projet. Le niveau de risque NRi peut être défini par une fonction décroissante du nombre de ressources capables de réaliser cette tâche. [0071] Par exemple : [0072] 9 [Math.10] R 1 = ( 1 - log,, x 1 [0073] avec [0074] [Math.11] x i, y e et 1 X 1 y [0075] Ou bien : [0076] NR= 1-logyx, [0077] NR, = 1-xi/y [0078] NR, = 1/ x, [0079] NR, = - x, [0080] En pratique, plus la valeur du niveau de risque NR,d'une tâche est élevée, moins il y a de ressources capables de la réaliser, et plus la tâche devrait être commencée tôt. Ainsi le niveau de risque NR; est utilisé pour déterminer le niveau de priorité global SC d'une tâche. [0081] Niveau d'impact [0082] Dans un ou plusieurs exemples de réalisation, l'étape 220 de calcul du niveau de priorité global SC comprend une sous-étape de calcul d'un niveau d'impact NI, pour chacune des tâches T, à ordonner sur la hase des données de description et/ou du coefficient X. de pondération d'un potentiel de déblocage de tâches et/ou coefficient Cl de pondération de risque exogène. [0083] Lc niveau d'impact d'une tâche est un niveau d'impact d'une tâche sur ces suc- cesseurs. Le niveau d'impact d'une tâche est représentatif notamment de son potentiel de déblocage de tâches. [0084] Dans un ou plusieurs exemples de réalisation, le calcul du niveau d'impact NI, comprend une sous-étape de calcul d'un potentiel de déblocage de tâches Dipour chacune des tâches à ordonner sur la base des données de description et/ou du coefficient X. de pondération de potentiel de déblocage obtenu. [0085] Lc niveau d'impact NI, peut être quantifié sur une échelle prédéfinic, discrète ou continue, par exemple entre 0 et 1 ou entre 0 et 100. [0086] A défaut d'obtention à l'étape 210 d'une valeur pour le coefficient X de pondération de potentiel de déblocage, la valeur par défaut du coefficient X peut être fixée à 1. [0087] Lc coefficient X de pondération d'un potentiel de déblocage de tâches est utilisé pour accentuer ou au contraire diminuer le degré de parallélisation des tâches dans l'ordonnancement calculé. En pratique, plus l'exécution d'une tâche T; débloque des tâches critiques ou importantes, ou débloque un nombre élevé de tâches pour d'autres ressources, plus cette tâche a un potentiel de déblocage D; élevé. [0088] Pour déterminer le potentiel de déblocage de tâches affecté à une tâche Ti, on peut par exemple déterminer, sur la base des données de description des tâches, le nombre 0 de ressources qui sont affectées aux tâches des successeurs directs ST, de la tâche T, et qui diffèrent de la ressource affectée à la tâche T. [0089] Dans l'exemple de la Fig. 4, une première ressource est affectée aux tâches T1, T2, T3 et T6, une deuxième ressource est affectée à la tâche T4 et une troisième ressource est affectée à la tâche T5. Dans cet exemple 01=0 parce que les tâches T2 et T3 sont affectées à la même ressource que Tl, 02=2 parce que les tâches T4 et T5 sont affectées à deux ressources différentes, qui sont également différentes de la ressource affichée à T2 et 03 = 04= 05 = 06 = 0. Dans la détermination de 0i, on prend en compte uniquement les successeurs directs d'une tâche puisque l'information « remonte » d'un niveau à un autre par récursivité. [0090] Le potentiel de déblocage d'une tâche T, peut être défini comme une fonction croissante de 0, et de k, ce coefficient X permettant d'accentuer ou diminuer le degré de parallélisation des tâches. Par exemple : [0091] [Math.20] D i log ( ( 1 + 100921 ou 100931 IMath.301 Di'- ( A 'e ) 100941 ou bien [0095] [Math.40] D i (1 + log (1+ ) )1 2 [0096] Le coefficient CI de pondération de risque exogène d'une tâche est utilisé pour prendre en compte des informations (facteurs de risques notamment) qui ne sont pas explicitement représentés dans les données de description des tâches reçues du dispositif source. Le coefficient CI de pondération de risque exogène peut servir par exemple de coefficient de pondération de risques exogènes tels que risques financiers, juridiques, etc. Une tâche critique d'un point de vue financier et/ou juridique peut donc avoir un coefficient CI de pondération de risque exogène élevé pour prendre en compte des risques « exogènes » (qui ne résultent notamment pas des données de description des tâches) associés à l'exécution de cette tâche et faire en sorte que cette tâche soit exécutée dès que possible. [0097] Le coefficient CI de pondération de risque exogène peut être codifié sur une échelle prédéfinie, continue ou discrète. Dans un exemple de réalisation, le coefficient CI de pondération de risque exogène peut prendre 5 valeurs sur une échelle discrète selon le niveau de risque associé à la tâche : « peu important » (0.5), « normal » (I), « important » (2), « très important » (3), « extrêmement important » (4). Ce coefficient 11 CI peut donc être utilisé pour pondérer l'importance de la tâche du point de vue des risques associés à la tâche et plus généralement, de pondérer son niveau de priorité global SC, du point de vue de risques exogènes. [0098] Dans un ou plusieurs exemples de réalisation, le niveau d'impact NI, pour la tâche Ti est calculé sur la base du potentiel de déblocage D, et/ou du coefficient Cli de pondération niveau de risque de la tâche Ti considérée. Par exemple, le niveau d'impact NI pour la tâche Ti est une fonction croissante du potentiel de déblocage D, et/ou du co- efficient de pondération niveau de risque de la tâche Ti considérée. [0099] Dans un ou plusieurs exemples de réalisation, le niveau d'impact NI, est en outre une fonction croissante du niveau d'impact total S, des tâches successeurs de la tâche T. Ainsi le niveau d'impact NI, d'une tâche dépendra des niveaux d'impact NI, de ces successeurs, ce qui permet de prendre en compte le projet dans son ensemble. [0100] Par exemple : [0101] Ni, * Di * Si [0102] ou [0103] Ni, + Di + Si [0104] ou encore [0105] Ni, *(1 + (Di * Si)) [0106] Cc niveau d'impact Ni; peut être normalisé sur une échelle prédéfinie, par exemple entre 0 et 1 ou entre 0 et 100 en prenant les valeurs NI,', et NI,'in correspondant respectivement à la plus grande et plus petite valeur de niveau d'impact de toutes les tâches du projet. [0107] Par exemple : [0108] [Math.50] (N/ - ) normal ( NI ax NI PTI n ) 101091 Le niveau d'impact total Si des tâches successeurs de la tâche Ti peut être calculé comme somme, éventuellement pondérée, des niveaux d'impact NI; des tâches successeurs T; de la tâche Ti. Le niveau d'impact total S, des tâches successeurs de la tâche Ti peut également être calculé comme produit des niveaux d'impact Nfi des tâches successeurs T; de la tâche Ti. 101101 Lors de l'étape 220 de calcul des niveaux de priorité des tâches, les tâches sont d'abord triées de sorte à traiter les tâches par ordre topologique inverse, c'est-à-dire en commençant par les tâches n'ayant pas de successeurs puis leurs prédécesseurs, et ainsi de suite, de niveau en niveau en suivant l'arbre des dépendances des feuilles vers la racine. 101111 A l'étape 225, l'état de chacune des tâches est mis à jour. L'état d'une tâche correspond à si elle est ordonnée dans une liste de tâches d'une ressource et/ou 12 disponible. [0112] A l'étape 230, une ressource Ri est sélectionnée et l'ensemble des tâches dis- ponibles et non encore ordonnées, qui sont affectées à la ressource Ri est analysé. Puis, le nombre NT; de tâches prioritaires de l'ensemble F.; est déterminé. [0113] Cette sélection d'une ressource peut être effectuée sur la base de différents critères. [0114] Selon un premier critère, la sélection d'une ressource peut être effectuée de manière aléatoire parmi les ressources dont l'ensemble Ei est non vide. [0115] Selon un deuxième critère, la sélection d'une ressource peut être effectuée sur la hase de la somme des durées des tâches affectées à cette ressource en sélectionnant une ressource pour laquelle cette somme est la plus élevée. [0116] Selon un troisième critère, la sélection d'une ressource peut être effectuée sur la base des niveaux de priorité globaux des différentes tâches en sélectionnant une ressource ayant une tâche de plus haut niveau de priorité global. [0117] Selon un quatrième critère, la sélection d'une ressource en sélectionnant une ressource ayant le nombre de successeurs disponibles le plus élevé. [0118] Selon un cinquième critère, la sélection d'une ressource en sélectionnant une ressource à laquelle est affectée le plus grand nombre de tâches disponibles. [0119] Toute combinaison de ces critères est envisageable. [0120] Selon un exemple de réalisation combinant ces différents critères, la sélection d'une ressource parmi les ressources est effectuée de façon « raisonnable », c'est-à-dire qu'on choisit : soit une ressource qui est affectée à une tâche non ordonnée qui ne possède pas de prédécesseurs, ou dont tous les prédécesseurs ont été ordonnés (premier critère), soit une ressource qui est affectée à une tâche ordonnée dont tous les successeurs sont non résolus et disponibles (deuxième critère). [0121] Si plusieurs ressources vérifient le premier critère, on choisit aléatoirement une ressource parmi les ressources qui vérifient le premier critère. Si aucune ressource ne vérifie le premier critère, on choisit aléatoirement une ressource paimi les ressources qui vérifient le deuxième critère. [0122] Si aucune ressource n'est sélectionnée, on détecte s'il existe une situation d'interblocage dans le mécanisme de sélection d'une ressource. Les successeurs non ordonnés d'une tâche ordonnée forment avec cette tâche une grappe, cette grappe étant un ensemble connexe. Un interblocage peut exister entre 2 (ou plusieurs) grappes. Un interblocage apparait par exemple si l'une des tâches d'une première grappe possède comme successeur une tâche appartenant à une autre grappe et réciproquement qu'une tâche de l'autre grappe possède comme successeur une tâche appartenant à la première grappe. La ressource sélectionnée est alors celle affecté à la tâche de plus haut niveau de priorité global parmi les tâches concernées par l'interblocage, c'est-à-dire parmi toutes les tâches concernées dont un successeur est dans une grappe différente. 13 [0123] Si aucune ressource ne répond à ce critère, alors on sélectionne une ressource selon une règle par défaut. Par exemple, la ressource affectée à la tâche déjà ordonnée qui possède le plus de successeurs disponibles est sélectionnée. Sinon on sélectionne la ressource à laquelle est affectée le plus grand nombre de tâches disponibles. [0124] A l'étape 232, une première tâche à exécuter par la ressource Ri est identifiée dans l'ensemble Ei selon la manière suivante. La première tâche à exécuter est soit une tâche ayant le caractère prioritaire s'il en existe une (NT; >= 1) dans l'ensemble Ei, soit la tâche de niveau de priorité global SC; le plus élevé de l'ensemble Ei. S'il existe plusieurs tâches prioritaires dans l'ensemble Ei, on sélectionne la première tâche parmi ces tâches prioritaires. [0125] Cette sélection de la première tâche peut être effectuée de plusieurs manières. [0126] S'il existe plusieurs tâches prioritaires dans l'ensemble Ei, cela signifie qu'au moins une tâche va être en retard sur sa date d'échéance. [0127] Par exemple, les tâches Tl et T2 sont prioritaires et affectées à la même ressource : elles commencent à la date courante, par exemple le 11/12/2018 et doivent se terminer avant le 16/11/2018. Si on suppose par exemple que la durée de Ti et T2 est de 5 jours, la marge de Tl est égale à Fin(T1) - Début(T1) - 5 = 0 et la marge de T2 est égale à Fin(T1) - Début(T1) - 5 = 0 donc les deux tâches, ce qui représente 10 jours de travail pour une seule ressource qui a une capacité de travail de 5 jours. Par conséquent au moins une des tâches Ti ou T2 sera en retard. [0128] Selon un premier exemple de réalisation, on cherche à minimiser le retard sur les dif- férentes tâches et on sélectionne comme première tâche à exécuter la tâche prioritaire de l'ensemble Ei avec le retard le plus petit. [0129] Selon un deuxième exemple de réalisation, on calcule le retard pour chaque tâche et on effectue un tri des tâches prioritaires en trois groupes 1. Celles qui ne sont pas en retard et qui ont une marge positive. 2. Celles qui ne sont pas en retard et qui ont une marge nulle. 3. Celles qui sont en retard [0130] S'il y a des tâches sans retard avec une marge, la tâche avec la plus grande marge est sélectionnée. Sinon, s'il y a des tâches sans retard mais sans marge, la tâche avec la plus petite durée est sélectionnée. S'il n'y a que des tâches avec retard, la tâche avec le plus petit retard est sélectionnée. [0131] Puis, lors de l'étape 232, un rang K égal à 1 est affecté à la tâche identifiée comme première tâche à exécuter par la ressource Ri et cette tâche est supprimée de l'ensemble El des tâches non encore ordonnées et affectées à la ressource Ri. [0132] Les étapes 230-232 sont répétées pour chaque ressource jusqu'à ce qu'une première tâche à exécuter ait été identifiée pour chacune des ressources. [0133] A l'étape 240, une ressource Ri est sélectionnée et l'ensemble Ei des tâches non 14 encore ordonnées et affectées à la ressource Ri est analysé. [0134] Cette sélection d'une ressource peut être effectuée selon la méthode décrite pour la sélection de la ressource à l'étape 230. [0135] A l'étape 240, le nombre NT; de tâches prioritaires de l'ensemble E; associé à la ressource Ri sélectionnée est ensuite déterminé. [0136] A l'étape 242, une tâche suivante à exécuter par la ressource Ri est identifiée dans l'ensemble Ei comme à l'étape 232. [0137] Puis, à la fin de l'étape 242, un rang Ki égal à Ki-F1 est affecté à la tâche identifiée comme tâche suivante à exécuter par la ressource Riet cette tâche est supprimée de l'ensemble E; des tâches non encore ordonnées et affectées à la ressource Ri. [0138] A l'étape 245 on détermine si toutes les tâches sont ordonnées. S'il reste des tâches non ordonnées, les étapes 240-242 sont répétées. S'il ne reste plus de tâche à ordonner, l'étape 250 est exécutée suite à l'étape 245. [0139] A l'étape 250, une transmission, vers un dispositif destinataire (soit le dispositif 110 de contrôle, soit la hase de données 116), d'une liste ordonnée d'au moins une tâche pour chacun des ressources de la pluralité de ressources est effectuée. Un affichage d'une ou plusieurs listes ordonnées peut être réalisé pour une ou plusieurs ressources correspondantes sur le dispositif de contrôle 110. [0140] Un utilisateur Ul peut alors contrôler et/ou surveiller l'exécution des différentes tâches par les différentes ressources sur la base des listes ordonnées, recevoir des informations sur l'état d'avancement de l'exécution des tâches et/ou déclencher l'exécution de tâches au moyen du dispositif de contrôle HO, par exemple par l'intermédiaire de commandes appropriées à chaque ressource concernée. [0141] Dans un mode de réalisation, les listes ordonnées de tâches sont traitées par un dispositif d'envoi de commande de sorte à déclencher de manière automatique l'exécution de tout ou partie des tâches selon l'ordonnancement calculé, par exemple par envoi de commande. [0142] Pour chaque ressource, un certain nombre de données sont gardés en mémoire tout on long du processus. A chaque fois qu'une tâche a été sélectionnée comme tâche suivante, son rang correspond au rang courant Ki de la ressource Ri puis ce rang est incrémenté de 1. De même, le temps courant d'un point de vue de l'utilisateur est alors incrémenté de la durée de la tâche qui vient d'être classée. Enfin, la tâche ordonnée est notée comme non-disponible, et chacun de ses successeurs sera noté comme disponible si leurs autres prédécesseurs sont eux aussi ordonnés. L'ensemble Ei des tâches disponibles à ordonner pour la ressource i est mis à jour en conséquence. [0143] Dans une autre variante de réalisation de l'ordonnancement des tâches des étapes 230-232 et 240-245, on met en oeuvre un algorithme évolutif (du type algorithme génétique) se basant sur les différents critères énoncés ci-dessous pour pouvoir l'exécuter en temps réel. Dans cette variante, on cherche à optimiser un projet dans son ensemble, ce qui revient à minimiser la somme des niveaux de priorité globaux (scores) des tâches. [0144] Pour trouver cet optimum, on génère un ensemble de projets candidats (correspondant aux individus de l'algorithme génétique) au sein desquels on génère pour chaque ressource du projet candidat une liste de tâches ordonnée quasi-aléatoirement en respectant a minima les éventuels successeurs de chaque tâche. On calcule alors un score pour chacun de ces projets candidats comme étant la somme des niveaux de priorité globaux (scores) des tâches du projet candidat. On peut également rajouter d'autres critères à ce score de projet candidat, tel que la date de fin globale du projet candidat, le taux d'occupation des ressources etc... De cette manière il est possible de garantir que le temps total passé sur un projet et/ou le taux d'occupation des ressources sera optimisé. [0145] On ordonne alors les projets candidats de la population en fonction de leur score, on sélectionne les x% meilleurs projets candidats, puis on réalise des croisements entre les projets candidats de la population ainsi que des mutations aléatoires. On crée alors une nouvelle génération de la population, sur laquelle on recommence les opérations précédentes. [0146] A chaque génération, le meilleur individu (i.e. projet candidat) est généralement meilleur que le meilleur individu (i.c. projet candidat) de la génération précédente. [0147] On arrête l'algorithme lorsqu'il n'y a plus de progression, i.e. sur n générations le score du meilleur élément s'améliore de moins de z %. [0148] Plus de détails sur les algorithmes génétiques peuvent être trouvés sur la page web : https://ti.wikipedia.org/wiki/Algorithme_g%C3%A9n%C3%A9tique [0149] Selon un mode de réalisation, tout ou partie des étapes d'un ou des procédés décrits dans ce document sont mises en oeuvre par un logiciel ou programme d'ordinateur. [0150] Les fonctions et procédés décrits dans ce document peuvent ainsi être mises en oeuvre par logiciel (par exemple, via un logiciel sur un ou plusieurs processeurs, pour exécution sur un ordinateur à usage général (par exemple, via l'exécution par un ou plusieurs processeurs) afin d'implémenter un ordinateur à usage spécifique ou similaire) et/ou puissent être mises en oeuvre dans du matériel (par exemple, en utilisant un ordinateur à usage général, un ou plusieurs circuits intégrés spécifiques (ASIC) et/ou tout autre équivalent matériel). [0151] La présente description concerne ainsi un logiciel ou programme d'ordinateur, sus- ceptible d'être exécuté par un dispositif informatique (par exemple, un ordinateur), au moyen d'un ou plusieurs processeurs de données, ce logiciel / programme comportant des instructions pour cause l'exécution par ce dispositif informatique de tout ou partie des étapes de l'un ou des procédés décrits dans ce document. Ces instructions sont 16 destinées à être stockées dans une mémoire d'un dispositif informatique, chargées puis exécutées par un ou plusieurs processeurs de ce dispositif informatique de sorte à causer l'exécution par cc dispositif informatique du procédé concerné. [0152] Cc logiciel / programme peut être codé au moyen de n'importe quel langage de pro- grammation, et être sous la forme de code source, code objet, ou de code intermédiaire entre code source et code objet, tel que dans une forme partiellement compilée, ou dans n'importe quelle autre forme souhaitable. [0153] Le dispositif informatique peut être mis en oeuvre par une ou plusieurs machines phy- siquement distinctes. Le dispositif informatique peut présenter globalement l'architecture d'un ordinateur, incluant des constituants d'une telle architecture : mémoire(s) de données, processeur(s), bus de communication, interface(s) matérielle(s) pour la connexion de ce dispositif informatique à un réseau ou un autre équipement, interface(s) utilisateur, etc. [0154] Dans un mode de réalisation, tout ou partie des étapes d'un ou plusieurs procédés d'ordonnancement décrits dans ce document sont mises en oeuvre par un dispositif d'ordonnancement doté de moyens de mise en oeuvre de ces étapes du ou des procédés concernés. [0155] Ces moyens peuvent comprendre des moyens logiciels (software) (par ex. des ins- tructions d'un ou plusieurs composants d'un programme) et/ou moyens matériels (hardware) (par ex. mémoire(s) de données, processeur(s), bus de communication, interface(s) matérielle(s), etc). [0156] Des moyens mettant en oeuvre une fonction ou un ensemble de fonctions peuvent également correspondre dans ce document à un composant logiciel, à un composant matériel ou bien à un ensemble de composants matériels et/ou logiciels, apte à mettre en oeuvre la fonction ou l'ensemble de fonctions, selon ce qui est décrit ci-dessous pour les moyens concernés. [0157] La présente description concerne aussi un support d'informations lisible par un processeur de données, et comportant des instructions d'un programme tel que mentionné ci-dessus. [0158] Le support d'informations peut être n'importe quel moyen matériel, entité ou dispositif, capable de stocker les instructions d'un programme tel que mentionné ci-dessus. Les supports de stockage de programme utilisables incluent les mémoires ROM ou RAM, les supports de stockage magnétiques tels que des disques magnétiques et des bandes magnétiques, les disques durs ou des supports de stockage de données numériques à lecture optique, etc ou toute combinaison de ces supports. [0159] Dans certains cas, le support de stockage lisible par ordinateur n'est pas transitoire. Dans d'autres cas, le support d'informations peut être un support transitoire (par exemple, une onde porteuse) pour la transmission d'un signal (signal électroma- 17 gnétique, électrique, radio ou optique) porteur des instructions de programme. Ce signal peut être acheminé via un moyen de transmission approprié, filaire ou non filaire : câble électrique ou optique, liaison radio ou infrarouge, ou par d'autres moyens. [0160] Un mode de réalisation concerne également un produit programme d'ordinateur comprenant un support de stockage lisible par ordinateur sur lequel sont stockées des instructions de programme, les instructions de programme étant configurées pour causer la mise en oeuvre par le dispositif informatique de tout ou partie des étapes d'un ou des procédés décrits ici lorsque les instructions de programme sont exécutées par un ou plusieurs processeurs et/ou un ou plusieurs composants matériels programmables. 18 [Revendication 1] [Revendication 2] [Revendication 3]