# Théorie de l'ordonnancement

La théorie de l'ordonnancement est une branche de la recherche opérationnelle qui s'intéresse au calcul de dates d'exécution optimales de tâches. Pour cela, il est très souvent nécessaire d'affecter en même temps les ressources nécessaires à l'exécution de ces tâches. Un problème d'ordonnancement peut être considéré comme un sous-problème de planification dans lequel il s'agit de décider de l'exécution opérationnelle des tâches planifiées.

## Définition

Un problème d'ordonnancement consiste à organiser dans le temps la réalisation de tâches, compte tenu de contraintes temporelles (délais, contraintes d'enchaînement) et de contraintes portant sur la disponibilité des ressources requises.
En production (manufacturière, de biens, de service), on peut le présenter comme un problème où il faut réaliser le déclenchement et le contrôle de l'avancement d'un ensemble de commandes à travers les différents centres composant le système.
Un ordonnancement constitue une solution au problème d'ordonnancement. Il est défini par le planning d'exécution des tâches (« ordre » et « calendrier ») et d'allocation des ressources et vise à satisfaire un ou plusieurs objectifs. Un ordonnancement est très souvent représenté par un diagramme de Gantt.

## Les tâches

Une tâche est une entité élémentaire localisée dans le temps par une date de début et/ou de fin, dont la réalisation nécessite une durée, et qui consomme un moyen selon une certaine intensité. Certains modèles intègrent la notion de date due, une date à laquelle la tâche doit être finie; dans ces cas, le retard induit une pénalité.
Selon les problèmes, les tâches peuvent être exécutées par morceaux, ou doivent être exécutées sans interruption ; on parle alors respectivement de problèmes préemptifs et non préemptifs. Lorsque les tâches ne sont soumises à aucune contrainte de cohérence, elles sont dites indépendantes.
Plusieurs tâches peuvent constituer une activité et plusieurs activités peuvent définir un processus.

## Les ressources

La ressource est un moyen technique ou humain destiné à être utilisé pour la réalisation d'une tâche et disponible en quantité limitée, sa capacité.
Plusieurs types de ressources sont à distinguer. Une ressource est renouvelable si après avoir été allouée à une ou plusieurs tâches, elle est à nouveau disponible en même quantité (les hommes, les machines, l'équipement en général); la quantité de ressource utilisable à chaque instant est limitée. Dans le cas contraire, elle est consommable (matières premières, budget) ; la consommation globale (ou cumul) au cours du temps est limitée. Une ressource est doublement contrainte lorsque son utilisation instantanée et sa consommation globale sont toutes deux limitées (l'argent en est un bon exemple).
Qu'elle soit renouvelable ou consommable, la disponibilité d'une ressource peut varier au cours du temps. Sa courbe de disponibilité est en général connue a priori, sauf dans les cas où elle dépend du placement de certaines tâches génératrices.
On distingue par ailleurs principalement dans le cas de ressources renouvelables les ressources disjonctives qui ne peuvent exécuter qu'une tâche à la fois (machine-outil, robot manipulateur) et les ressources cumulatives qui peuvent être utilisées par plusieurs tâches simultanément mais en nombre limité (équipe d'ouvriers, poste de travail).

## Les contraintes

Les contraintes expriment des restrictions sur les valeurs que peuvent prendre simultanément les variables de décision. On distingue :
* des contraintes temporelles
** les contraintes de temps alloué, issues généralement d'impératifs de gestion et relatives aux dates limites des tâches (délais de livraison, disponibilité des approvisionnements) ou à la durée totale d'un projet ;
** les contraintes de cohérence technologique, ou contraintes de gammes, qui décrivent des relations d'ordre entre les différentes tâches ;
* des contraintes de ressources
** les contraintes d'utilisation de ressources qui expriment la nature et la quantité des moyens utilisés par les tâches, ainsi que les caractéristiques d'utilisation de ces moyens ;
** les contraintes de disponibilité des ressources qui précisent la nature et la quantité des moyens disponibles au cours du temps. Toutes ces contraintes peuvent être formalisées sur la base des distances entre débuts de tâches ou potentiels.

## Les objectifs

Dans la résolution d'un problème d'ordonnancement, on peut choisir entre deux grands types de stratégies, visant respectivement à l'optimalité des solutions, ou plus simplement à leur admissibilité.
L'approche par optimisation suppose que les solutions candidates à un problème puissent être ordonnées de manière rationnelle selon un ou plusieurs critères d'évaluation numériques, construits sur la base d'indicateurs de performances. On cherchera donc à minimiser ou maximiser de tels critères. On note par exemple ceux
* liés au temps :
** le temps total d'exécution ou le temps moyen d'achèvement d'un ensemble de tâches
** le stock d'en-cours de traitement
** différents retards (maximum, moyen, somme, nombre, etc.) ou avances par rapport aux dates limites fixées ;
* liés aux ressources :
** la quantité totale ou pondérée de ressources nécessaires pour réaliser un ensemble de tâches
** la charge de chaque ressource ;
** liés à une énergie ou un débit ;
** liés aux coûts de lancement, de production, de transport, etc., mais aussi aux revenus, aux retours d'investissements.

## Ordonnancement robuste

La recherche en ordonnancement s'est souvent fondée sur l'hypothèse d'un univers prédictible où toutes les données du problème sont connues à l'avance et qu'aucun problème de la vie réelle ne vient compromettre la planification. Dans la pratique divers types de perturbations peuvent survenir : pannes de machines, absences d'employés, retards de livraison. Dans ce cas, il est nécessaire de réviser l'ordonnancement et un très bon ordonnancement calculé selon les données initiales peut perdre de sa qualité.
L'ordonnancement robuste est une branche assez récente de l'ordonnancement, qui ne vise plus seulement à fournir des ordonnancements optimaux (ou quasi-optimaux), mais avant tout des ordonnancements robustes. La robustesse est la capacité d'un ordonnancement à garder ses performances malgré l'occurrence de perturbations.
Il existe plusieurs types d'approches robustes:
* les approches proactives visent à créer des ordonnancements robustes qui anticipent les perturbations
* les approches réactives permettent de réviser intelligemment les ordonnancements en prenant en compte les perturbations qui arrivent

## Problèmes classiques

* Problème de gestion de projet à contraintes de ressources et sa représentation graphique, le réseau PERT
* Problème d'ordonnancement d'atelier
** Job-shop
** Flow-shop
** Open-shop
* Problèmes d'ordonnancement dans les systèmes d'exploitation
* Problèmes d'ordonnancement de travaux informatiques