chapitre 1 ordonnancement no-idle - insa de lyon
Embed Size (px)
TRANSCRIPT

5
Chapitre 1
Ordonnancement no-idle
Nous nous intéressons, dans ce chapitre, à la présentation des problèmes d’ordonnancement d’une manière générale et à une synthèse bibliographique portant de façon particulière sur l’ordonnancement avec la contrainte no-idle.
1. De l’ordonnancement en général
1.1. Terminologie
L'ordonnancement est un champ d'investigation qui a connu un essor important ces quarante
dernières années, tant par les nombreux problèmes identifiés que par l'utilisation et le
développement de nombreuses techniques de résolution. Les problèmes d'ordonnancement se
rencontrent souvent dans le milieu industriel. Il s'agit de répartir un ensemble de travaux sur
des machines ou ateliers de production en respectant au mieux un ensemble de contraintes
(technologiques, temporelles,…) et en cherchant à optimiser un ou plusieurs objectifs
(cadence de production, délais, coûts,…). En informatique, on est également confronté aux
problèmes d'ordonnancement pour allouer des processeurs à l'exécution des programmes.
Nous citons brièvement d'autres domaines d'application des problèmes d'ordonnancement :
génie civil (suivi de projets), administration (gestion du personnel, emploi du temps) ou
encore toute structure automatisée.
Dans un problème d'ordonnancement, quatre notions fondamentales interviennent. Ce sont les
travaux (ou jobs), les ressources, les contraintes et les objectifs. Un travail (on dit aussi tâche)
est défini par un ensemble d'opérations qui doivent être exécutées. Une ressource est un

Chapitre 1 : Ordonnancement no-idle
6
moyen matériel (machine) ou humain intervenant dans la réalisation d'un travail. Les
contraintes représentent les limites imposées par l'environnement ou les ressources, tandis que
les objectifs sont les critères à optimiser. La résolution d'un problème d'ordonnancement
consiste à déterminer [Gotha, 93] :
- le placement des travaux dans l’espace, c’est-à-dire sur les ressources,
- le placement des travaux dans le temps, c'est-à-dire les instants de début d'exécution de
chaque travail sur chacune des ressources qui participent à sa réalisation. Ce placement
découle de l’ordre de prise en charge des travaux par les ressources.
Pour alléger l’exposé, nous utiliserons désormais le terme "machine" pour désigner une
ressource quel qu’en soit le type.
Dans de nombreux problèmes d'ordonnancement, deux hypothèses de base sont généralement
respectées :
- A chaque instant, une machine ne peut exécuter qu'un seul travail.
- A chaque instant, un travail peut être exécuté par une machine au plus.
Cependant, il y a des problèmes d'ordonnancement plus spécifiques :
- L'ordonnancement par lots (batch), où une machine peut exécuter plusieurs travaux
simultanément.
- L'ordonnancement avec chevauchements, où les opérations d’un même travail peuvent
être en cours d'exécution sur plusieurs machines à un même instant.
Aussi, deux modes d’exécution sont possibles :
- avec préemption : l'exécution d'une opération peut être interrompue puis reprise sur une
des machines,
- sans préemption : si une opération a commencé, elle doit être menée jusqu’au bout sur la
même machine, sans interruption.
Dans ce travail, nous nous intéressons aux problèmes respectant les deux hypothèses
présentées ci-dessus, avec mode d’exécution sans préemption.
On représente souvent un ordonnancement par un diagramme de Gantt. Un tel diagramme met
en évidence l'occupation des machines par les différents travaux ainsi que les temps morts. La
figure 1.1 présente un ordonnancement pour un problème à trois machines et trois travaux.

Chapitre 1 : Ordonnancement no-idle
7
Figure 1.1. Exemple de diagramme de Gantt
Un ordonnancement est dit sans délai si et seulement si la séquence des opérations composant
tout travail est exécutée sur les différentes machines sans aucune mise en attente.
Un ordonnancement est dit sans temps mort (ou sans arrêt) si et seulement si aucune machine
n’est mise en attente tant que tous les travaux qui lui sont affectés ne sont pas encore traités.
Les problèmes d'ordonnancement se divisent en deux grandes catégories selon le nombre
d'opérations nécessaires à la réalisation de chaque travail. La première catégorie regroupe les
problèmes pour lesquels chaque travail nécessite une seule opération, la deuxième regroupe
ceux pour lesquels chaque travail requiert plusieurs opérations.
La première catégorie se subdivise à son tour en plusieurs types de problèmes, en fonction de
la configuration de machines considérée :
- Machine unique : tous les travaux sont appelés à être exécutés sur une même machine
[Lenstra et al., 1977], [Koulamas, 1996], [Blazewicz et al., 1997]
- Machines dédiées : plusieurs machines, chacune étant spécialisée pour l’exécution de
certains travaux.
- Machines parallèles : plusieurs machines, qui remplissent toutes les mêmes fonctions.
Dans le dernier cas, on distingue trois modèles différents de machines en fonction des
vitesses de celles-ci:
- Machines identiques : toutes les machines présentent la même vitesse d’exécution quelle
que soit le travail [Karp, 1972], [Graham, 1966].
- Machines uniformes : la vitesse d'une machine diffère d’une autre par un coefficient de
proportionnalité [Graham et al., 1979], [Labetoulle et al., 1984].
- Machines indépendantes (on dit aussi non liées) : chaque machine présente une vitesse
particulière pour chaque travail ; la durée opératoire d'un travail dépend donc du travail et
de la machine qui l'exécute [Bruno et al., 1974], [Ibarra et Kim, 1977], [Lawler et
Labetoulle, 1978].
Temps mort
J3
J2
J1
J1
J3
J2
J1
J2 J3
Ji
Affectation
Temps
Machines

Chapitre 1 : Ordonnancement no-idle
8
Les problèmes de la deuxième catégorie sont dits problèmes d’atelier du fait de la nécessité
du passage de chaque travail sur deux ou plusieurs machines dédiées. Ils sont généralement
spécifiés par la donnée de m machines et de n travaux composés chacun de m opérations ;
chaque opération devant être exécutée par une machine différente. Trois sous-classes de
problèmes sont alors différenciées selon le mode de passage des opérations sur les différentes
machines, à savoir :
- Open-shop : l'ordre de passage des opérations sur les machines est libre [Gonzalez et
Sahni, 1976], [Kubiak et al., 1991], [Wagneur et Sriskweather, 1993].
- Flow-shop : l'ordre de passage des opérations sur les machines est le même pour tous les
travaux [Ignall et Schrage, 1965], [Garey et al., 1976], [Dannenbring, 1977], [Gonzalez et
Johnson, 1979], [Reeves, 1995].
- Job-shop : chaque travail a un ordre propre de passage des opérations sur les machines.
[Mellor, 1966], [Blackstone et al., 1982], [Pinedo, 1995].
Un problème flow-shop est dit de permutation s'il existe une contrainte selon laquelle toutes
les machines doivent exécuter les n travaux dans le même ordre [Johnson, 1954], [Lageweg et
Lenstra, 1978], [Monma et Rinnoy Kan, 1983], [Potts et al., 1991].
A partir de ces modèles de base, d’autres modèles d'ordonnancement peuvent être définis afin
de répondre à des problèmes industriels spécifiques. Dans le cas particulier du flow-shop,
lorsque une même opération peut être exécutée par une machine disponible en plusieurs
exemplaires, on parle de flow-shop hybride.
Dans cette thèse, nous nous intéressons principalement à des problèmes flow-shop (de
permutation ou non et hybride ou non).
1.2. Classification
Pour présenter un problème d'ordonnancement, nous adoptons un formalisme issu des travaux
de Conway [Conway et al., 1967] et Rinnoy Kan [Rinnoy Kan, 1976] permettant de distinguer
les problèmes d'ordonnancement entre eux et de les classer. Tel que repris par Blazewicz dans
[Blazewicz et al., 1996], ce formalisme contient trois champs séparés par des ″slashs″ (α/β/δ).

Chapitre 1 : Ordonnancement no-idle
9
Le premier champ α représente l'organisation des ressources et est spécifié par la
concaténation de deux éléments : α =α1α2
o Le paramètre α1 représente la configuration de machines utilisées: (α1∈ {∅, P, Q,
R, F, O, J})
α1 = ∅ : une seule machine est utilisée.
α1 = P : plusieurs machines identiques sont disponibles. (i.e. les ressources sont
composées de machines travaillant suivant la même cadence, disposées en
parallèle et pouvant exécuter tous les travaux).
α1 = Q : plusieurs machines parallèles uniformes sont disponibles. (i.e. les
cadences des machines sont différentes (selon un facteur de proportionnalité), mais
restent indépendantes des travaux.
α1 = R : plusieurs machines indépendantes non liées sont disponibles. (i.e. les
cadences des machines sont différentes et dépendent des travaux exécutés).
α1 = F : plusieurs machines dédiées fonctionnant en flow-shop. (i.e. les travaux
sont décomposés en plusieurs opérations qui doivent être exécutées sur l'ensemble
des machines, celles-ci étant disposées en série pour un même routage).
α1 = O : plusieurs machines dédiées fonctionnant en open-shop. (i.e. les travaux
sont décomposés en plusieurs opérations qui doivent être exécutées sur l'ensemble
des machines sans restriction sur le routage des travaux).
α1 = J : plusieurs machines dédiées fonctionnant en job-shop. (i.e. les travaux sont
décomposés en plusieurs opérations qui doivent être exécutées sur l'ensemble des
machines, mais peuvent avoir des routages différents).
o Le paramètre α2 permet de préciser le nombre de machines composant l’atelier ; il
peut être égal à vide ou à un entier m. Dans le premier cas, cela signifie que le
nombre de machines est quelconque. Dans le deuxième cas, cela signifie que
l’atelier est composé de m machines (m > 0).
Le deuxième champ β représente les contraintes et les caractéristiques de l’atelier. Il est
formé de huit sous-champs, β = β1β2β3β4β5β6β7β8.
o β1 ∈ {∅, preem} permet de préciser le mode d’exécution. β1 = ∅ indique le mode
sans préemption et β1 = preem indique le mode avec préemption.
o β2 ∈ {∅, res} caractérise les ressources supplémentaires nécessaires à l'exécution
d'un travail (outils, ressources de transport). β2 = ∅ indique qu'il n'y a pas de

Chapitre 1 : Ordonnancement no-idle
10
ressources complémentaires. β2 = res λδρ indique la nécessité des ressources
complémentaires ; cette nécessité est détaillée par les valeurs de λ, δ et ρ.
o β3 ∈ {∅, prec, tree, chain} précise un type de précédence entre travaux, c’est-à-
dire le fait qu'un travail doit être exécuté avant un autre. La valeur ∅ indique que
les travaux sont indépendants. Les valeurs prec, tree, chain indiquent l’existence,
respectivement, d’une relation de précédence générale, d’une relation de
précédence sous forme d’arbre et d’une relation de précédence sous forme de
chaîne.
o β4 ∈ {∅, rj} décrit les dates de disponibilité (i.e. dates au plus tôt) des différents
travaux dans le système. Ces dates peuvent être identiques et égales à zéro pour
tous les travaux (β4 = ∅ ) ou différentes suivant les travaux (β4 = rj ).
o β5 ∈ {∅, pj = p, p ≤ p≤ p } détaille les durées opératoires des différents travaux.
Ces durées peuvent être fonction de la machine. Différentes restrictions peuvent
également être considérées pour simplifier certains problèmes.
β5 = ∅ : les travaux ont des durées opératoires arbitraires.
β5 = pj = p : tous les travaux ont une durée opératoire égale à p.
β5 = p ≤ p≤ p : les durées opératoires des travaux sont comprises entre p et p .
o β6 ∈ {∅, dj, d~
j} indique les éventuelles dates d'échéance (ou dates au plus tard)
des travaux.
β6 = ∅ : les travaux n'ont pas de date d'échéance.
β6 = dj : chaque travail a une date d'échéance de fin d’exécution sous peine de
pénalisation.
β6 = d~ j : chaque travail a une date d'échéance impérative (date limite) qu'il faut
absolument respecter.
o β7 ∈ {∅, s, si, sij, nwt} permet de spécifier des contraintes temporelles sur les
enchaînements de travaux. Ces contraintes sont très souvent introduites afin de
mieux représenter les problèmes réels. Il est parfois nécessaire de considérer un
temps improductif entre l'exécution de deux travaux différents sur une même
machine pour représenter les changements et les réglages d'outils. Ces temps de

Chapitre 1 : Ordonnancement no-idle
11
changement peuvent être constants (s), fonction du nouveau travail (si) ou bien
fonction de l'enchaînement des deux travaux (sij). Egalement, pour le cas des
industries où l'on manipule de la matière en fusion, on doit pouvoir imposer que
toutes les opérations d'un travail soient exécutées sans temps d'attente (β7 = nwt
(no-wait)). Si on a besoin de spécifier que les machines, une fois qu’elles
commencent à travailler, ne doivent pas s’arrêter qu’après avoir terminé tous les
travaux, alors β7 prend la valeur no-idle.
o Enfin, le paramètre β8 ∈ {∅, Mj} indique, dans le cas de machines parallèles, des
restrictions sur la polyvalence des machines. L'ensemble Mj représente l'ensemble
des machines capables de réaliser le travail Jj. Lorsque β8 est vide, toutes les
machines sont capables d'exécuter tous les travaux.
Le troisième champ, γ, spécifie le critère à optimiser. Les critères les plus utilisés sont :
γ = Cmax : makespan. Date de sortie du système (le dernier travail). ( Cmax = maxj Cj où
Cj est la date de fin d'exécution du travail Jj).
γ = Σ Cj (ou _
C ) : somme des dates de fin d'exécution. La date Cj peut être pondérée et un
deuxième critère pourra être défini γ = Σ wj Cj, où wj est le poids associé au travail Jj.
γ = Lmax : décalage temporel maximal. Ce critère mesure la plus grande violation des
dates d'échéance (Lmax = maxj {Lj = Cj - dj} où dj est la date de fin au plus tard).
γ = Σ Uj : somme du nombre de travaux terminés avec retard (Uj = 1 si le travail Jj est
terminé après son échéance au plus tard). Un Uj peut être pondéré et un deuxième critère
pourra être γ = Σ wj Uj, où wj est le poids associé au travail Jj.
D’une façon générale, un critère Z est dit critère régulier si, et seulement si, Z est une fonction
croissante des dates de fin des travaux. Autrement dit, si et seulement si, quelles que soient les
solutions d’ordonnancement x et y de n travaux telles que Ci(x) ≤ Ci(y), on a Z(C1(x),…,
Cn(x)) ≤ Z(C1(y),…, Cn(y)) [Carlier et Chretienne, 1988].
Un sous-ensemble d’ordonnancements est dit dominant par rapport à un critère si ce sous-
ensemble contient au moins un ordonnancement optimal relativement à ce critère.

Chapitre 1 : Ordonnancement no-idle
12
1.3. Complexité
Nous nous intéressons dans cette sous-section au cadre mathématique dans lequel les
problèmes peuvent être classés en problèmes faciles ou difficiles. L'objectif est, d’une part, de
clarifier certaines affirmations et, d'autre part, de justifier la démarche adoptée dans ce travail
pour spécifier la complexité de certains problèmes étudiés. Plusieurs ouvrages [Blazewicz et
al., 1996] et [Xuong, 1992] développent la théorie de la complexité.
Un problème de décision est un énoncé auquel la réponse peut être uniquement oui ou non.
Les problèmes de décision sont de deux types : les problèmes décidables et les problèmes
indécidables.
Un problème est dit indécidable s'il est impossible d'écrire un algorithme qui permet de
décider de la réponse pour tous les cas de figures.
Un problème de décision P1 est dit réductible à un autre problème de décision P2 (on note
P1αP2) s'il existe une fonction polynomiale f qui transforme chaque énoncé de P1 en un autre
énoncé de P2 de telle manière que la réponse pour P1 est oui si, et seulement, si la réponse
pour P2 est oui.
Un algorithme est dit polynomial si sa complexité temporelle est bornée par un O(p(x)) où p
est un polynôme et x est la longueur d’une instance du problème. Il est dit pseudo-polynomial
si sa complexité est bornée par un polynôme en fonction de la taille de la plus grande instance
du problème.
Un problème de décision décidable est dit NP s'il existe un algorithme polynomial qui permet
de reconnaître une instance positive de ce problème (qui a la réponse oui). Parmi les
problèmes NP, on distingue, d'une part, les problèmes Polynomiaux et, d'autre part, les
problèmes dits NP-complets :
- Un problème de décision est dit polynomial (on dit aussi appartenant à la classe P) s'il
existe un algorithme polynomial en fonction de la taille des données qui permet de le
résoudre. Un tel problème est dit facile.
- Un problème NP-complet est un problème NP tel que tout problème NP est réductible
polynomialement en ce problème.
Pour démontrer qu'un problème Q est NP-complet, il faudra montrer qu’il est de la classe NP
et qu'il existe un problème R connu pour être NP-complet tel que RαQ.

Chapitre 1 : Ordonnancement no-idle
13
On note aussi qu'un problème NP-complet peut être NP-complet au sens fort ou au sens
faible :
- Un problème P est dit NP-complet au sens faible s'il est NP-complet et qu'il existe un
algorithme pseudo-polynomial pour le résoudre.
- Un problème P est dit NP-complet au sens fort s'il appartient à la classe NP et qu'il existe
un problème Q connu pour être NP-complet au sens fort tel que QαP.
Ainsi, il est nécessaire de connaître les problèmes classiques connus pour être NP-complets.
Le premier problème qui a été prouvé, en 1971, comme étant un problème NP-complet au
sens fort [Cook, 1971] est le problème de satisfiabilité (SAT) qui peut être défini comme suit :
Etant donnés un ensemble de n variables booléennes x1, x2,…, xn et un ensemble de m clauses
c1, c2,…, cm (une clause est un sous-ensemble des 2n littéraux nn xxxxxx ,...,,,,...,, 2121 où ix
désigne la variable complémentaire de xi), la question posée est : « Existe-t-il une affectation
de la valeur vrai ou faux à chacune des variables xi de sorte que pour chacune des m clauses,
au moins l’un des littéraux la constituant ait la valeur vrai ? ». Dans ce qui suit, nous
présentons d'autres problèmes NP-complets dont la NP-Complétude n'a pu être démontrée que
grâce à l'existence d'un premier problème NP-complet. Ce sont les six problèmes de base
exposés par Garey et Johnson dans [Garey et Johnson, 1979] :
- 3-satisfiabilité : Etant donné un ensemble de clauses de dimension 3, construites à partir
d'un ensemble fini de variables, existe-t-il une affectation de ces variables qui satisfait
toutes les clauses ?
- Couplage de dimension 3 : Etant donné un ensemble M de triplets (M ⊆ X × Y × Z, où X,
Y et Z sont des ensembles disjoints et de même cardinalité q), existe-t-il un ensemble M’
tel que M' ⊆ M, |M'| = q et les triplets de M' sont deux à deux disjoints ?
- Recouvrement : Etant donnés un graphe G = (V, E) et un entier k, existe-t-il X ⊆ V tel que
|X| ≤ k et toute arête de G a au moins une de ses extrémités dans X ?
- Clique : Etant donnés un graphe G = (V, E) et un entier k, existe-t-il X ⊆ V tel que |X| ≥ k
et tous les sommets de X sont deux à deux adjacents ?
- Cycle Hamiltonien : Etant donné un graphe G = (V, E), existe-t-il un cycle passant une
fois et une seule par chacun des sommets de V ?
- Partition : Etant donnés n entiers positifs s1, s2,…, sn, existe-t-il un sous-ensemble J ⊆ I =
{1, 2, …, n} tel que Σi∈J si = Σi∈I\J si

Chapitre 1 : Ordonnancement no-idle
14
Un problème d’optimisation est un problème pour lequel la réponse à une instance est une
solution ayant une valeur optimale pour une fonction objectif définie. Il est toujours possible
de faire correspondre un problème d’optimisation à un problème de décision. Dans le cas, par
exemple, de la minimisation d’une fonction objectif, le problème de décision peut être posé de
la façon suivante : le problème admet-il une solution dont la fonction objectif, est inférieure
ou égale à un seuil défini y. De même, dans le cas de la maximisation d’une fonction objectif,
le problème de décision peut être posé de la façon suivante : le problème admet-il une
solution dont la fonction objectif est supérieure ou égale à un seuil défini y.
Il est évident que la complexité d’un problème d’optimisation est supérieure ou égale à celle
du problème de décision correspondant. Ainsi, un problème d’optimisation est dit NP-difficile
si le problème de décision qui lui correspond est NP-complet.
1.4. Méthodes classiques de résolution
Les problèmes d’ordonnancement de la classe P disposent donc d’algorithmes polynomiaux
spécifiques qui permettent de les résoudre. Pour appréhender les problèmes NP-difficiles,
différentes méthodes de résolution (exactes ou heuristiques) sont proposées dans la littérature.
Nous allons passer en revue les méthodes les plus connues en les classant en méthodes
dédiées et méthodes génériques.
1.4.1. Méthodes dédiées
Nous classons dans les méthodes dédiées les méthodes qui ont été conçues pour résoudre un
problème d’ordonnancement particulier (_
// C , max//2 CF …).
1.4.1.1. Règles de tri
Parmi les règles de tri dédiées à un problème d’ordonnancement, nous citons les deux règles :
SPT (shortest processing time) et LPT (longest processing time) qui sont très utilisées dans la
résolution d’un problème flow-shop. La première consiste à ordonner les travaux dans l’ordre
croissant de leurs durées opératoires et la seconde dans l’ordre décroissant. La règle SPT est
optimale lors de la résolution du problème _
// C [Blazewicz et al., 1996].
La règle EDD (earliest due date), qui consiste à ordonner les travaux selon l’ordre croissant de
leurs dates de début au plus tôt, est optimale pour la résolution du problème max// L
[Jackson, 1955].

Chapitre 1 : Ordonnancement no-idle
15
L’algorithme de Johnson est optimal pour le problème max//2 CF [Johnson, 1954]. Il
consiste à appliquer, pas à pas, la règle suivante : « si Ji et Jj sont deux travaux de durées
respectives ),( 2,1, ii pp et ),( 2,1, jj pp sur les machines 1 et 2 et si ),min(),min( 1,2,2,1, jiji pppp ≤ alors
Ji est placé avant Jj ». Cet algorithme revient à partitionner les travaux en deux ensembles : le
premier contient tous les travaux vérifiant 2,1, jj pp < et le second tous les travaux avec
2,1, jj pp > . Les restants (ayant 2,1, jj pp = ) peuvent être mis dans l’un ou l’autre. Les travaux du
premier ensemble seront ordonnés selon l’ordre croissant de 1,jp (SPT) et ceux du second
ensemble selon l’ordre décroissant de 2,jp (LPT). L’ordre total sera alors celui du premier
ensemble concaténé à celui du second.
1.4.1.2. Algorithmes de liste
Nous retrouvons l’application de la règle LPT avec FAM (first avoid machine). Celle-ci
consiste à ordonner les travaux selon LPT et à affecter chaque travail à la première machine
libre. Cette heuristique est utilisée pour résoudre le problème max// CP en O(n*log(n))
[Blazewicz et al., 1996].
La concaténation de l’algorithme de Johnson avec la règle FAM est utilisée pour résoudre le
problème flow-shop hybride à deux étages.
Les travaux de Johnson ont été étendus d’une manière différente aux problèmes
d’ordonnancement de type flow-shop de permutation à m machines. Campbell, Dudek et
Smith, dans [Campbell et al., 1970], fournissent une solution approchée (algorithme CDS) au
problème max// CF , en étendant le comportement de l’algorithme de Johnson. En effet, ils
créent m-1 sous-problèmes effectifs à deux machines Mk,Mk+1 (la durée opératoire d’un travail
sur la machine Mk sera la somme de ses durées opératoires sur les machines M1.. Mk, et sur
Mk+1 la somme de ses durées opératoires sur les machines allant de Mk+1 à Mm) qu’ils
résolvent à l’aide de l’algorithme de Johnson et retiennent ensuite le meilleur ordonnancement
parmi les m-1 comme solution du problème originel. Cette heuristique s’est révélée
extrêmement fiable.
1.4.1.3. Autres méthodes
Les problèmes d’ordonnancement sur machines parallèles recouvrent un ensemble de
problèmes de gestion de production très vaste. L’une des méthodes de résolution élaborées

Chapitre 1 : Ordonnancement no-idle
16
pour appréhender de tels problèmes est celle de Bruno [Bruno et al., 1974] qui résout
optimalement le problème _
// CQ . En définissant une matrice de coûts machine-ordre/travaux,
l’auteur modélise le problème d’ordonnancement sur machines parallèles uniformes sous la
forme du problème d’affectation suivant :
- Les variables de décision sont x(i, j, k) (x(i, j, k) qui vaut 1 si le travail Ji est affecté à la
machine Mj, k places avant la fin).
- L’objectif est de minimiser ∑ ∑ ∑=i j k
jipkkjixz ,**),,( où pi, j est la durée opératoire du
travail Ji sur la machine Mj, sous les contraintes :
∑=
≤n
ikjix
11),,( ∀j, k
∑ ∑= =
=m
j
n
kkjix
1 11),,( ∀i
L’auteur propose ensuite de résoudre ce problème par la méthode hongroise [Kuhn, 1955]
(connue pour les problèmes d’affectation) qui offre une solution à temps polynomial ; la
solution est en fait recherchée pour le problème dual.
Nous pouvons aussi citer les travaux de [Taillard, 1990] et [Widmem et Hertz, 1989].
1.4.2. Méthodes génériques
Contrairement aux méthodes dédiées qui ont été concues pour des problèmes spécifiques, les
méthodes génériques proposent des approches de résolution qui sont applicables de façon
générale et beaucoup plus ouverte. Ces méthodes sont classées en méthodes exactes,
méthodes heuristiques constructives et méthodes heuristiques amélioratrices.
1.4.2.1. Méthodes exactes
Les trois familles de méthodes exactes sont : la programmation dynamique, la méthode de
séparation et évaluation (Branch and Bound) et la résolution à partir d'une modélisation
analytique. Ces méthodes se caractérisent par un temps de calcul exponentiel, ce qui explique
qu'elles ne sont utilisables que sur des problèmes de petite taille.
1.4.2.1.1. Programmation dynamique
Dans cette famille, un problème de dimension n est décomposé en n problèmes de dimension
1. Le système est constitué de n étapes que l'on résout séquentiellement, le passage d'une

Chapitre 1 : Ordonnancement no-idle
17
étape à une autre se fait à partir des lois d'évolution du système et d'une décision [Chevalier,
1977].
Cette méthode a été introduite par Bellmann [Bellmann, 1957]. Son principe d'optimalité est
basé sur l'existence d'une équation récursive permettant de décrire la valeur optimale du
critère à une étape donnée en fonction de sa valeur à l'étape précédente. Ainsi, pour appliquer
la programmation dynamique à un problème combinatoire, le calcul du critère pour un sous-
ensemble de taille k nécessite la connaissance de ce critère pour chaque sous-ensemble de
taille k-1, ce qui porte le nombre de sous-ensembles considérés à 2n (où n est le nombre
d'éléments considérés dans le problème), d’où sa complexité exponentielle. Pourtant, pour les
problèmes NP-difficiles au sens faible, il est souvent possible de construire un algorithme de
programmation dynamique pseudo-polynomial, pouvant être utilisé pour des problèmes de
dimension raisonnable.
1.4.2.1.2. Méthode de séparation et évaluation
Cette méthode est basée sur une énumération implicite et intelligente de l'ensemble des
solutions réalisables. La séparation consiste à décomposer l’ensemble des solutions en
plusieurs sous-ensembles qui sont décomposés à leur tour selon une démarche itérative. Ce
processus peut se visualiser sous la forme d'un arbre d'énumération ; les nœuds de l’arbre
correspondent aux sous-ensembles et les feuilles correspondent à des solutions réalisables.
Pour accélérer la recherche de la solution optimale en évitant l’exploration inutile de certains
nœuds, on utilise une procédure d’évaluation qui calcule, à chaque niveau de l’arbre, la valeur
de chaque nœud et permet ainsi de décider du nœud (sous-ensemble) à développer
(décomposer). Par exemple, dans le cas d’un problème de minimisation, cela revient à
calculer la borne inférieure pour tous les nœuds fils du niveau considéré et la descente dans
l’arbre est poursuivie avec le nœud donnant la borne inférieure. Par ailleurs, une borne
supérieure de la solution optimale est calculée et est utilisée pour éviter l'exploration de
nœuds dont la valeur de la borne inférieure est supérieure à la valeur de la borne supérieure
(certaines branches vont être élaguées). Cette borne supérieure est réactualisée lorsqu'une
solution réalisable de valeur inférieure est atteinte.
Enfin, des remontées et descentes par d’autres nœuds de l’arbre sont effectuées tant que la
borne calculée est inférieure ou égale à la valeur actualisée de la borne supérieure.
Ainsi, l'exploration de certaines branches de l'arbre est évitée, ce qui permet de ne pas
énumérer toutes les solutions réalisables. Il faut donc souligner que l'efficacité de la méthode

Chapitre 1 : Ordonnancement no-idle
18
(en termes du nombre de nœuds explorés) est déterminée par la qualité de la borne initiale par
la procédure d’évaluation considérée.
1.4.2.1.3. Modélisation analytique et résolution
La modélisation analytique d'un problème permet, non seulement de mettre en évidence
l'objectif et les différentes contraintes du problème, mais également de le résoudre. L'idéal est
de modéliser le problème sous la forme d’un programme linéaire dont les variables sont
réelles. Dans ce cas, il existe un bon nombre de solveurs permettant de le résoudre. Dès que
le problème comporte des coûts fixes ou des décisions nécessitant l'utilisation de variables
entières, les modèles deviennent beaucoup plus difficiles à résoudre. Il en est de même
lorsque le modèle n'est pas linéaire, mais quadratique par exemple.
Actuellement, plusieurs langages de modélisation existent tels que AMPL, GAMS, LINGO,
MPL. Ils permettent d'écrire les programmes linéaires de façon formelle, proche de l'écriture
mathématique ; lesquels programmes peuvent être exécutés par des solveurs tels que CPLEX,
OSL, XPRESS (selon le langage utilisé). Malheureusement, tous les problèmes ne peuvent
être résolus par cette approche car la résolution de programmes linéaires avec des variables
entières, par exemple, demande souvent beaucoup trop de temps de calcul.
1.4.2.2. Méthodes heuristiques constructives
Pour des problèmes NP-difficiles de grande taille, les méthodes exactes sont peu
envisageables à cause de leur temps de calcul. Il est alors possible d'utiliser des méthodes
approximatives qui donnent des solutions certes sous-optimales, mais en un temps de calcul
raisonnable. La performance de telles méthodes est généralement calculée par le rapport entre
la valeur de la solution fournie et la valeur de la solution optimale, ceci pour le pire des cas ou
dans le cadre d’une moyenne de plusieurs instances. Si la solution optimale est non
calculable, il est également possible d'étudier expérimentalement le comportement de
l'heuristique en comparant ses performances soit à celles d'autres heuristiques, soit à des
bornes inférieures de la solution optimale.
Ces méthodes par construction progressive sont, en définitive, des méthodes itératives où, à
chaque itération, une solution partielle est complétée. La plupart de ces méthodes sont des
algorithmes gloutons car elles considèrent les éléments (travaux ou processeurs) dans un

Chapitre 1 : Ordonnancement no-idle
19
certain ordre sans jamais remettre en question un choix une fois qu'il a été effectué. De
principe très simple, ces méthodes permettent de trouver une solution très rapidement.
Un premier type de telles méthodes consiste, dans une première phase, à calculer une liste qui
donnera l'ordre de prise en compte des éléments. Cette liste construite à priori, à partir d'un
critère bien défini, n'est plus remise en cause au cours de l'ordonnancement. La deuxième
phase de l'algorithme se réduit à considérer les éléments (travaux ou processeurs) dans l'ordre
de la liste pour construire l'ordonnancement.
Un deuxième type de méthode consiste à choisir, au cours de la construction, l'affectation d'un
travail à une machine en utilisant des règles de priorité. Ces méthodes peuvent également être
vues comme des méthodes sérielles dynamiques où les listes sont reconstruites à chaque
étape, selon un critère qui peut évoluer dans le temps (le nombre de travaux disponibles, par
exemple). Notons que si le choix du travail à ajouter est guidé par l'application d'un théorème
de dominance, cela permet de prouver l’optimalité d’une solution si certaines hypothèses sont
vérifiées [Pinedo, 1995]. Une revue détaillée des règles classiques couramment utilisées en
ordonnancement est proposée par Panwalker et Iskander dans [Panwalker et Iskander, 1977].
Pour chaque problème, de nombreuses règles ont été développées et les articles présentant ces
règles sont passés en revue.
1.4.2.3. Méthodes amélioratrices
Ces méthodes sont initialisées par une solution réalisable, calculée soit aléatoirement soit à
l'aide de l'une des heuristiques constructives exposées précédemment. Elles recherchent, à
chaque itération, une amélioration de la solution courante par des modifications locales. Cet
examen se poursuit jusqu'à ce qu'un critère d'arrêt soit satisfait. L'utilisation de ces
heuristiques itératives suppose que l'on puisse définir, pour toute solution S, un voisinage de
solution, N(S), contenant les solutions voisines (proches dans un certain sens). En général, le
voisinage d'une solution est généré en appliquant, plusieurs fois et de façon différente, une
petite transformation (échange de travaux par exemple). Ce voisinage est ensuite évalué et
comparé à la solution courante,…. Nous présentons ci-dessous les méthodes amélioratrices les
plus connues.
1.4.2.3.1. Méthode de descente
Cette méthode se caractérise par le fait qu’elle ne considère, à chaque itération, que des
solutions évoluant dans le sens de l’amélioration.

Chapitre 1 : Ordonnancement no-idle
20
Cette méthode ne conduit pas, en général, au minium absolu mais seulement à un minimum
local qui constitue la meilleure des solutions accessibles compte tenu de la solution initiale.
Pour améliorer l’efficacité, on peut évidemment l’appliquer plusieurs fois, avec des conditions
initiales différentes et retenir comme solution finale le meilleur des minimums locaux
obtenus ; cependant, cette procédure augmente sensiblement le temps de calcul de
l’algorithme et ne garantit pas de trouver la configuration optimale. Une autre idée pour
surmonter l’obstacle des minimums locaux consiste à autoriser, de temps en temps, des
mouvements de remontée lors du changement de la configuration courante tel que adopté par
la méthode du recuit simulé ou tabou.
La méthode d'échange de type r-optimal en est l’exemple type. Cette méthode d'optimisation
a été initialement proposée par Lin [Lin, 1965] pour résoudre le problème du voyageur de
commerce, mais elle s'applique également à tout problème combinatoire dont la solution
consiste en une permutation de r éléments parmi n.
Le terme r-optimal indique qu'une solution ne peut plus être améliorée en échangeant au plus
r éléments. La méthode consiste donc à sélectionner r éléments et à voir si, en les
interchangeant, on obtient une meilleure solution. Nous remarquons qu'une solution n-
optimale est une solution optimale (pour un problème de taille n). Ainsi, plus r augmente, plus
on se rapproche de la solution optimale, mais plus les calculs sont difficiles. En pratique, on
se limite à r = 2 ou 3.
1.4.2.3.2. Recuit simulé
Cette méthode est due aux physiciens Kirkpatrick, Gelatt et Vecchi [Kirkpatrick et al., 1983].
Elle s'inspire des méthodes de simulation de Métropolis en mécanique statistique définies
durant les années 50.
L'analogie historique s'inspire du recuit des métaux en métallurgie : un métal refroidi trop vite
présente de nombreux défauts microscopiques, c'est l'équivalent d'un optimum local pour un
problème d'optimisation combinatoire. Si on le refroidit lentement, les atomes se réarrangent,
les défauts disparaissent et le métal a alors une structure très ordonnée, équivalent à un
optimum global. Pour modifier l’état d’un matériau, le physicien dispose d’un paramètre de
commande : la température. Le recuit est précisément une stratégie de contrôle de la
température afin d’avoir un système physique dans un état de basse énergie.

Chapitre 1 : Ordonnancement no-idle
21
L’algorithme s’appuie sur ces deux résultats de la physique statistique :
- D’une part, lorsque l’équilibre thermodynamique est atteint à une température donnée, T,
la probabilité, pour un système physique, de posséder une énergie donnée E, est
exp(-E/Kb T) où Kb est la constante de Boltzmann.
- D’autre part, pour simuler l’évolution d’un système physique vers son équilibre
thermodynamique à une température donnée T, on peut utiliser l’algorithme de
Metropolis : partant d’une configuration donnée, on fait subir au système une modification
élémentaire ; si cette transformation a pour effet de diminuer la fonction objectif (ou
énergie) du système, elle est acceptée ; si elle provoque au contraire une augmentation de
l’énergie ∆E de la fonction objectif, elle est acceptée tout de même avec la probabilité
exp(-∆E/T) (en pratique, cette condition est réalisée en tirant au hasard un nombre compris
entre 0 et 1, et on accepte la configuration dégradant la fonction objectif de la qualité ∆E
si le nombre tiré est inférieur à exp(-∆E/T)). On répète ce processus jusqu’à ce que le
système soit figé : la température a atteint la valeur nulle, ou bien plus aucun mouvement
de remontée du coût n’a été accepté.
Les inconvénients du recuit simulé résident, d’une part, dans les ″réglages″, comme la gestion
de la décroissance par paliers de la température ; de bons réglages relèvent souvent du savoir-
faire de l’ingénieur. D’autre part, les temps de calcul peuvent devenir selon les cas très
importants. Par contre, les méthodes de recuit simulé ont l’avantage d’être souples et
rapidement implémentables lorsque l’on veut résoudre des problèmes d’optimisation
combinatoire, le plus souvent de grande taille. Cette méthode a l’intérêt d’admettre une
preuve de la convergence. Ainsi, lorsque certaines conditions sont vérifiées, on a la garantie
d'obtenir la solution optimale.
1.4.2.3.3. Recherche tabou
Cette méthode, dont l'origine remonte à 1977 [Glover, 1977], a été formalisée en 1986 par
Glover [Glover, 1986]. La principale particularité de la méthode tient dans la mise en œuvre
de mécanismes inspirés de la mémoire humaine dont le but est de tirer les leçons du passé.
Le principe de base de la méthode tabou est simple. A partir d’une solution initiale
quelconque, la méthode tabou engendre une succession de solutions ou configurations qui doit

Chapitre 1 : Ordonnancement no-idle
22
aboutir à une solution optimale. A chaque itération, le mécanisme de passage d’une
configuration (s) à la suivante (t) est le suivant :
- On construit l’ensemble de voisins de s, c’est-à-dire l’ensemble des configurations
accessibles en un seul mouvement élémentaire à partir de s ; soit V(s) l’ensemble de ces
voisins.
- On évalue la fonction objectif f du problème pour chacune des configurations appartenant
à V(s). La configuration t, qui succède s dans la chaîne construite par tabou, est la
configuration de V(s) pour laquelle f prend la valeur minimale.
Cependant, telle quelle, la procédure ne fonctionne généralement pas, car il y a un risque
important de retourner à une configuration déjà retenue lors d’une itération précédente, ce qui
provoque un cyclage. Pour éviter ce phénomène, qui concerne plutôt des configurations peu
éloignées (au sens du nombre de mouvements), on tient à jour, à chaque itération, une ″liste
tabou″ de mouvements interdits ; cette liste circulaire contient m mouvements inverses (t s).
La recherche du successeur de la configuration courante se restreint alors aux voisins de s qui
peuvent être atteints sans utiliser de mouvement de la liste tabou. La procédure est stoppée
dès qu’on a effectué un nombre donné d’itérations sans améliorer la meilleure solution
courante.
Des versions plus élaborées, permettant des recherches plus efficaces, ont été proposées par la
suite [Glover, 1989], [Glover, 1990]. Cette méthode donne de très bons résultats pratiques,
malgré l'inexistence de résultats théoriques garantissant la convergence de l'algorithme vers la
solution optimale.
1.4.2.3.4. Algorithmes génétiques
Les algorithmes génétiques sont des techniques de recherche inspirées de l’évolution
biologique des espèces et basées sur une imitation des phénomènes d’adaptation des êtres
vivants. L'application de ces algorithmes aux problèmes d'optimisation a été formalisée par
Goldberg [Goldberg, 1989].
On part d'une population (ensemble de solutions) initiale sur laquelle des opérations de
reproduction (de croisement ou de mutation) vont être réalisées dans l'objectif d'exploiter au
mieux les caractéristiques et les propriétés de cette population. Un algorithme génétique
consiste à faire évoluer progressivement, par générations successives, la composition de cette
population, en maintenant sa taille constante : d’une génération à la suivante, la compétence
de la population doit globalement s’améliorer. Les opérations de reproduction doivent mener
à une amélioration de l'ensemble de la population puisque les bonnes solutions sont

Chapitre 1 : Ordonnancement no-idle
23
encouragées à échanger par croisement leurs caractéristiques et à engendrer des solutions
encore meilleures. Toutefois, des solutions de très mauvaise qualité peuvent aussi apparaître
et permettent d'éviter de tomber trop rapidement dans un optimum local. En effet, dans la
phase de reproduction, les individus les plus compétents ont une probabilité de sélection plus
élevée. Cependant, les descendants n’éliminent pas leurs parents, qui demeurent dans la
population courante.
Les difficultés pour appliquer les algorithmes génétiques résident dans le besoin de coder les
solutions et de fixer les valeurs des différents paramètres (taille de la population, coefficients
de reproduction, probabilité de mutation,…). De plus, ces algorithmes demandent un effort de
calcul très important.
2. Etat de l'art sur les problèmes d'ordonnancement no-idle Selon la classification retenue ([Blazewicz et al., 1996], [Rinnoy et Kan, 1976]), max//CF
est un problème d'ordonnancement avec :
- un ensemble de machines, linéairement ordonné (une ligne de production),
- un ensemble de travaux à ordonner sur ces machines (où, pour chaque travail,
exactement une opération est à exécuter sur chaque machine),
- le critère à optimiser est la date d'achèvement du dernier travail sur la dernière
machine.
En matière d’ordonnancement de production, ce problème est le plus étudié dans la littérature.
Johnson, dans [Johnson, 1954], a établi une règle qui prouve l'aspect polynomial pour un
problème flow-shop de permutation à deux machines. Plusieurs recherches se sont intéressées
depuis à l’étude des flow-shops de permutation et flow-shops simples, tels que les travaux de
[Campbell et al., 1970], [Dannenbring, 1977], [Taillard, 1990], et [Widmem et Hertz, 1989].
Ultérieurement, des contraintes additionnelles ont été introduites. La contrainte sans délai
(no-wait) exprime qu'aucune attente entre deux opérations d'un même travail n’est permise.
La contrainte de blocage exprime qu'un travail ne doit libérer une machine que pour passer
directement sur la machine suivante. Finalement, la contrainte sans arrêt (no-idle) exprime le
fait qu'aucun temps mort n’est permis sur une machine entre le début de son activation et la
fin de la réalisation des opérations qui lui sont affectées.

Chapitre 1 : Ordonnancement no-idle
24
Le modèle de contrainte no-idle a été proposé pour deux situations industrielles différentes :
quand le système de production lui même le nécessite (travail continu, système de
chauffage,…) ou pour des considérations économiques (gestion de la main d’œuvre).
Les critères d’optimisation considérés sont de trois types :
- Délai : c’est la date d’échéance. Il s’agit généralement d’un critère à respecter
absolument ou à minimiser en dépit de ses implications sur les autres critères.
- Qualité : dans sa nouvelle définition, ″la qualité″ couvre diverses dimensions :
technique, humaine, service aux clients, économique et de management ; cette
dernière dimension consiste à définir des stratégies optimisant et harmonisant les
actions à conduire dans les autres dimensions pré-citées.
- Coût : l’optimisation de ce critère s’accommode d’un compromis sur des
optimisations d’autres critères et ce dans le but de minimiser une sommation
globale.
Ainsi, le coût d’un ordonnancement peut être mesuré aussi bien en durée d’exécution totale ou
en sommation de coûts directs de production (main d’œuvre, transport, changement
d’outils,…). La minimisation du coût peut être affectée de la contrainte no-idle pouvant être
introduite, par exemple, dans le cas de l’étude d’une fonderie où les machines ne doivent pas
s’arrêter afin que la coulée de fonte ne se solidifie pas. Un autre cas de figure sera la
minimisation du coût associé à la main d’œuvre. Ce coût est fixé par les durées opératoires et
par les temps morts pendant lesquels un opérateur ne fait rien, se déplace d’une ressource à
une autre, ou est en charge de plusieurs machines. Il sera alors intéressant d’éliminer ces
temps morts afin de réduire le coût total.
Dans cette thèse, nous nous intéressons au cas particulier de l’ordonnancement avec la
contrainte no-idle. Ce problème est peu étudié dans la littérature. Dans les sous-sections qui
suivent, nous définissons ce problème et nous présentons un résumé des principaux travaux.
2.1. Présentation du problème flow-shop avec contrainte no-idle
La solution d'un problème flow-shop avec contrainte no-idle consiste à ordonner n travaux
(J1, J2, .., Jn) sur m machines (M1, M2, .., Mm) de sorte à minimiser un critère donné tout en
s’interdisant des temps d’arrêt sur les machines. Un travail Ji (pour i = 1 .. n) possède au plus
m opérations (Oi,1, Oi,2, ..Oi,m). Chaque opération Oi,r doit être exécutée sur la machine Mr sans
interruption durant pi,r unités de temps. Ces temps sont fixes et positifs ou nuls (une valeur
nulle de pi,r signifie que le travail Ji n’a pas d’opération à exécuter sur la machine Mr). Deux

Chapitre 1 : Ordonnancement no-idle
25
opérations d'un même travail ne peuvent pas être exécutées simultanément, chaque machine
exécute au plus un travail à un instant donné, et chaque travail doit être exécuté au plus une
fois sur les machines qu’il requiert en suivant l'ordre 1, 2, …, m. Dans le cas particulier d’un
flow-shop de permutation, la séquence des travaux doit être la même sur toutes les machines.
Dans la suite de la thèse, nous nous situons dans ce cadre avec contrainte no-idle que nous
désignons par max// CidlenoF − .
Figure 1.2. Flow-shop sans contrainte no-idle
Figure 1.3. Flow-shop avec contrainte no-idle
Les figures 1.2 et 1.3 présentent respectivement un ordonnancement dans le cas d'un flow-
shop simple et dans le cas d'un flow-shop où aucun temps mort n’est permis.
2.2. Travaux antérieurs
Nous présentons ici en revue les principaux travaux ayant traité le problème de
l’ordonnancement avec contrainte no-idle. Il s’avère que le problème particulier du flow-shop
de permutation avec contrainte no-idle est peu étudié dans la littérature. Baptiste et Hguny
sont les seuls à avoir traité le problème max// CidlenoF − [Baptiste et Hguny, 1997].
2.2.1. Travaux de Narasimhan et Panwalkar
Partant de l’étude d’un système de production de câbles, Narasimhan et Panwalker
[Narasimhan et Panwalker, 1984] proposent l'heuristique CMD (Cumulative Minimum
Deviation) pour un flow-shop hybride à deux étages, ayant pour objectif de minimiser la
J1 J2 J3
J1 J2 J3
J1 J2 J3
Affectation Ji
Temps mort
5 10 15 20 25 30
M2
M1
M3
M1 J1 J2 J3
J1 J2 J3
J1 J2 J3
Affectation Ji
Temps mort
5 10 15 20 25 30
M2
M3

Chapitre 1 : Ordonnancement no-idle
26
somme des temps morts et des temps d’attente des travaux au deuxième étage, avec une
répartition des travaux au deuxième étage (problème noté FH2,(1,Q2)| split(2) | somme des
temps morts + temps d’attente des travaux au deuxième étage). Au premier étage, il y a une
seule machine qui fonctionne suffisamment rapidement pour qu'il n'y ait pas d'attente au
deuxième étage. De plus )2(
2,
)2(
1,
)1( *6.0*4.0 iii ppp += (où )(kip désigne la durée d’exécution du
travail i à l’étage k et )2(, jip désigne la durée d’exécution du travail i sur la machine j du
deuxième étage). Les auteurs ont appliqué et comparé SPT, LPT, MD (Medium Deviation) et
CMD. Pour cela, ils ont défini les quantités )1()2(
1, iii pp −=∆ et )1()2(
2, iii pp −=λ . Les règles SPT
et LPT sont appliquées sur les durées opératoires au premier étage. S'il y a indétermination
alors les travaux sont classés par ii λ+∆ croissant. La règle MD consiste à classer les
travaux par ii λ+∆ croissant. S'il y a indétermination pour la ième position alors on choisit
le travail Jh tel que 0]1[ ≥+∆ −ih λ . Enfin, la règle CMD place à la ième position le travail
qui minimise la quantité ajoutée à Z, où Z = temps d'inactivité + temps d’attente des travaux
au deuxième étage. S'il y a indétermination, on applique la même règle que dans MD ; CMD
s’est révélée la meilleure. En 1987, les auteurs généralisent la règle CMD, notée GCMD, pour
un problème de flow-shop hybride avec un nombre de machines différent de 1 au premier
étage et supérieur ou égal à 1 au deuxième étage [Narasimhan et Mangiameli, 1987].
Kadipasaoylu, Xiang et Khunawola [Kadipasaoylu et al., 1997] ont repris ces travaux, d'une
part, en rajoutant l'étude de deux règles économiques de séquencement (valeur ajoutée au
travail) dans le cas statique et, d'autre part, en effectuant une étude supplémentaire dans le cas
dynamique lorsque les travaux disposent de dates de fin souhaitées. Ils ont montré en outre
l'équivalence des règles SPT et MD dans les travaux originels en raison des conditions
d'expérimentation. Les ordonnancements sont évalués d'après de nombreux critères de
performances classiques. Dans le cas statique, les auteurs confirment le bon comportement de
GCMD, ils mettent en évidence qu'une minimisation des temps morts des machines et des
temps d'attente des travaux ne conduit pas nécessairement à une réduction de la durée totale et
ils montrent que les règles économiques de séquencement ont aussi un bon comportement.
Dans le cas dynamique, d'autres règles sont ajoutées pour tenir compte des dates échues des
travaux. L'étude montre un bon comportement global induit par les règles ajoutées alors que
GCMD se révèle beaucoup plus fragile que dans le premier cas. Les règles économiques ainsi
que SPT ne produisent pas de bons résultats vis-à-vis des retards. Dans tous les cas, LPT est
peu performante.

Chapitre 1 : Ordonnancement no-idle
27
2.2.2. Travaux de King et Spachis
Une première partie des travaux publiés dans [King et Spachis, 1980] s’intéresse au problème
général du flow-shop de permutation. Les auteurs proposent cinq heuristiques basées sur des
considérations de réduction des temps morts entre les travaux, dont LWBJD (Least Weighted
Between-Jobs Delay) qui révèle des techniques de couplage assorti. La seconde partie
concerne les problèmes max// CwaitnoF − .
Bien que s’agissant des problèmes max// CF , il nous a paru utile de nous attarder ici sur
l’algorithme LWBJD dans la mesure où, pour minimiser le makespan, les auteurs introduisent
la minimisation des temps morts entre les travaux. Les auteurs montrent que plus ces temps
apparaissent tardivement dans la séquence et plus ils sont indésirables. L’idée est de les
pondérer afin de pénaliser les plus tardifs. Les tests effectués ont porté sur des jeux générés
pour des problèmes de taille 10*4, 20*5, 35*5 (nombre de travaux * nombre de machines),
selon des distributions de ERLANG.
Nous proposons ici une version simplifiée de LWBJD [Grununberger et Souedet, 1989].
LWBJD repose sur le calcul de la somme totale des temps d'attente entre deux travaux sur les
différentes machines. Considérons l’exemple du problème de taille 3*3 représenté par la
figure 1.4.
M1
M2
M3
Figure 1.4. Diagramme de Gantt d’un ordonnancement flow-shop
pi,j désigne la durée opératoire du travail Ji sur la machine Mj et Ek désigne le temps d’attente,
entre le travail Ji et le travail Jj, sur la machine Mk+1.
Le temps total d'attente entre le travail J1 et le travail J2 est calculé par l’expression pondérée :
212,1 *2 EED += avec 211,21 ,ppE −= , et 3,12,212 ppEE −+=
En généralisant à m machines, le temps total d’attente entre le travail Ji et le travail Jj se
calcule par l’expression pondérée :
∑−
=
=1
1, *
m
kkji EkD , avec 00 =E et 1,,1,0max( +− −+= kikjkk ppEE ),
pour k = 1.. m-1, et Di, i = HV (une grande valeur).
p1,1 p2,1 p3,1
p1,2 p2,2 p3,2
p1,3 p3,3 p2,3
E1
E2

Chapitre 1 : Ordonnancement no-idle
28
Nous présentons dans ce qui suit l’algorithme LWBJD ainsi qu’un exemple illustratif.
Algorithme LWBJD :
0. lire les données
1. calcul de la matrice des Di,j pour i, j = 1 .. n.
2. soit (P*, Q*) = (P, Q) / DP,Q = mini,j Di,j
*)*,( QPO = et HVD Pi =*, , pour i = 1 .. n.
3. soit (Q*, R*) = (Q*,R) / DQ*,R = minj DQ*,j
O = O || R* et HVD Qi =*, , pour i = 1 .. n.
4. Q* = R* et on recommence à l'étape 3 jusqu'à ce que le nombre k de travaux constituant la
séquence O soit égal au nombre total de travaux à ordonnancer.
5. Edition des résultats.
Exemple 1.1. Soient les durées opératoires du problème flow-shop de la table 1.1 définies sur
trois machines et quatre travaux.
M1 M2 M3
J1 10 5 3
J2 8 2 9
J3 1 1 10
J4 3 12 4
Table 1.1. Problème flow-shop
Appliquons l’algorithme LWBJD au problème flow-shop décrit par la table 1.1 :
- Le pas 1 conduit à la construction de la matrice Di,j donnée par table 1.2.
1 2 3 4
1 HV 7 0 18
2 16 HV 0 8
3 17 7 HV 10
4 2 0 0 HV
Table 1.2. Première évaluation

Chapitre 1 : Ordonnancement no-idle
29
- Au pas 2 :
• En commençant par J1, si J2 suit on a (7), si J3 suit on a (0), si J4 suit on a
(18).
• En commençant par J2, si J1 suit on a (16), si J3 suit on a (0), si J4 suit on a
(8).
• En commençant par J3, si J1 suit on a (17), si J2 suit on a (7), si J4 suit on a
(10).
• En commençant par J4, si J1 suit on a (2), si J2 suit on a (0), si J3 suit on a
(0).
On peut retenir le minimum (P*, Q*) = (1, 3). On a alors O = (1, 3) et Di,1= HV pour i = 1...
n ; d’où l’on construit la nouvelle matrice Di,j donnée par table 1.3.
1 2 3 4
1 HV 7 0 18
2 HV HV 0 8
3 HV 7 HV 10
4 HV 0 0 HV
Table 1.3. Deuxième évaluation
- Au pas 3, on retient le minimum : (3, R*) = (3, 2). On a alors O = (1, 3, 2) et Di,3= HV
pour i = 1… n ; d’où l’on construit la matrice Di,j donnée par table 1.4.
1 2 3 4
1 HV 7 HV 18
2 HV HV HV 8
3 HV 7 HV 10
4 HV 0 HV HV
Table 1.4. Troisième évaluation
- Au pas 4, on retient le minimum : (2, R*) = (2, 4). On a alors O = (1, 3, 2, 4) et Di,2=
HV pour i = 1… n.

Chapitre 1 : Ordonnancement no-idle
30
Le nombre de travaux constituant la séquence O ayant atteint le nombre total des travaux à
ordonnancer, il ne reste plus qu’à éditer le résultat. Pour l’ordonnancement obtenu, O = (1, 3,
2, 4), le maxC est égal à 41.
Une amélioration de cet algorithme est donnée par Pigassou et Partant [Pigassou et Partant,
1992] en proposant, pour le calcul du temps mort entre le travail Jk et le travail Jl sur la
machine Mr, la formule :
⎭⎬⎫
⎩⎨⎧ −++= ∑∑
=
−−
−
=
r
jjkrrl
r
jjkr pEppE
1,11,
1
1, )(,0max
{ }rkrrl pEp ,11,,0max −+= −− avec 01 =E et ∑=
=m
rrErlkD
1*),( .
En fait, l'algorithme originel LWBJD de King et Spachis [King et Spachis, 1980] est
pratiquement identique à l’algorithme amélioré sauf qu'on y recalcule le profil de fin de
chacun des sous-ordonnancements partiels de Oi, sur chacune des machines Ml, chaque fois
que le travail J0 est ajouté en k+1ème position ( { } ljljljj pCCC ,01,0,101,0 ,max += −− )
2.2.3. Travaux de Adiri et Pohoryles
Adiri et Pohoryles sont les premiers à s’être intéressés à des problèmes flow-shop avec la
contrainte no-idle [Adiri et Pohoryles, 1982]. Ils ont étudié les problèmes
∑− iCidlenoF // et ∑− iCwaitnoF // pour des cas particuliers dont nous présentons ici
les résultats.
Définition 1.1. Un flow-shop est dit en no-idle si pour toute machine Mj, nous avons:
∑=
=−n
ijiji
iji
ipSC
1,,, )(min)(max
où Ci,j détermine la date d’achèvement du travail Ji sur la machine Mj et Si,j sa date de début.
Définition 1.2. Un travail bloquant sur une machine Mk dans une séquence en no-idle est
défini comme étant le premier travail sur Mk qui interdit le décalage de l’ordonnancement de
cette machine vers la gauche.
Définition 1.3. Une série de machines est dite série croissante de machines dominantes si, et
seulement si, la plus petite durée opératoire sur une machine est plus grande que la plus
grande durée opératoire sur la machine précédente.

Chapitre 1 : Ordonnancement no-idle
31
Définition 1.4. Une série de machines est dite série décroissante de machines dominantes si,
et seulement si, la plus grande durée opératoire sur une machine est plus petite que la plus
petite durée opératoire sur la machine précédente.
Ces définitions sont données dans [Adiri et Pohoryles, 1982]. Sur la base de ces définitions,
les auteurs démontrent les théorèmes suivants :
Théorème 1.1. Si dans un ordonnancement optimal pour ∑− CiidlenoF //2 , le travail
bloquant est le dernier, alors cet ordonnancement respecte la règle SPT sur M2, à l'exception
du travail bloquant qui est celui qui a la durée opératoire minimum sur M2.
Théorème 1.2. Les travaux qui précèdent et ceux qui succèdent le travail bloquant dans un
ordonnancement optimal du ∑− CiidlenoF //2 sont nécessairement dans un ordre SPT en
M2 qui respecte la contrainte no-idle.
Théorème 1.3. L'ordonnancement optimal pour un problème ∑− CiidlenoF // de
permutation sur une série croissante de machines dominantes s’obtient de la façon suivante :
on considère un ordonnancement des travaux selon la règle SPT sur la dernière machine, puis
on avance en première position le travail de rang i qui vérifie :
[ ]∑ ∑−
=
−
=
−−+=1
1
1
1,,,][ *)1(*
m
k
i
kmkmikii
ippipnvMin
La démonstration s’appuie sur le fait que, dans le cas d’une série croissante de machines
dominantes, tout ordonnancement respecte la contrainte no-idle. Il s’agit donc, pour
minimiser ∑Ci , de considérer un ordre SPT sauf pour le premier travail que l’on choisit de
façon à minimiser la date de début.
Théorème 1.4. L'ordonnancement optimal pour un problème ∑− CiidlenoF // de
permutation sur une série décroissante de machines dominantes s’obtient de la façon
suivante : on considère un ordonnancement des travaux selon la règle SPT sur la dernière
machine, puis on décale en dernière position le travail de rang i qui vérifie :
[ ]∑ ∑= +=
−−+=m
k
n
ikmkmikii
ippinpnvMin
2 1,,,][ *)(*
La preuve ici s’appuie sur le fait que tout ordonnancement envisagé provoquera
nécessairement n – 1 temps morts sur chacune des machines de M2 à Mm. L’élimination de ces

Chapitre 1 : Ordonnancement no-idle
32
temps morts oblige à procéder à un tassement vers la droite. Sur la dernière machine,
l’optimisation de ∑Ci consiste à considérer un ordonnancement des travaux selon la règle
SPT en mettant vers la fin le travail qui minimise la date de fin.
2.2.4. Travaux de Baptiste et Hguny
Dans [Baptiste et Hguny, 1997], Baptiste et Hguny ont tout d’abord étudié le problème
max// CidlenoF − dans le cas des séries de machines dominantes puis ont proposé une
solution exacte du problème général max// CidlenoF − . Nous ne reprenons ici que la
première partie. Celle concernant le problème général sera présentée de façon détaillée dans le
chapitre 2.
Les séries dominantes de machines présentent deux cas particuliers de configuration d'un
problème flow-shop (section 2.2.3 de ce chapitre) ; les séries dominantes de machines
croissantes et les séries dominantes de machines décroissantes. Dans le premier cas, nous
avons la particularité de n'avoir aucun temps mort quel que soit l'ordre des travaux (voir
exemple 1.2). Dans le second cas, il y a toujours des temps morts entre deux travaux et sur
toutes les machines quel que soit l'ordre des travaux (voir exemple 1.3).
Exemple 1.2. Problème d’ordonnancement de 5 travaux (J1 ,…, J5) sur une série croissante de
4 machines dominantes (M1,…, M4). Les données du problème sont présentées dans la table
1.5. Toute solution d’ordonnancement aurait l’allure de celle présentée en figure 1.5 illustrant
le cas du choix de la séquence J1, J2, J3, J4, J5.
J1 J2 J3 J4 J5
M1 1 2 2 1 2
M2 6 5 4 3 6
M3 9 6 8 7 8
M4 9 10 12 11 9
Table 1.5. Problème d’une série croissante de machines dominantes.
Figure 1.5. Ordonnancement des travaux de la table 1.5 60
M2 M3
45
J1 J2 J3 J4 J5
M4
M1
M2 M3
5 10 15 20 25 30 35 40 50 55 10 20

Chapitre 1 : Ordonnancement no-idle
33
Exemple 1.3. Considérons un problème d’ordonnancement de 4 travaux (J1,…, J4) sur une
série décroissante de 4 machines dominantes (M1,…, M4). Les données du problème sont
présentées dans la table 1.6. Toute solution d’ordonnancement aurait l’allure de celle
présentée en figure 1.6 illustrant le cas de choix de la séquence J1, J2, J3, J4.
J1 J2 J3 J4
M1 9 10 12 11
M2 9 6 8 7
M3 6 5 4 3
M4 1 2 2 1
Table 1.6. Problème d’une série décroissante de machines dominantes
Figure 1.6. Ordonnancement des travaux de la table 1.6
Baptiste et Hguny ont étudié, dans [Baptiste et Hguny, 1997], ces deux cas de séries de
machines dans le cadre d'un flow-shop avec contrainte no-idle et ont démontré que
l'ordonnancement optimal peut être obtenu simplement en utilisant les deux théorèmes
suivants :
Théorème 1.5. Tout ordonnancement commençant par un travail qui minimise ∑−
=
1
1,
m
jjip est un
ordonnancement de permutation optimal pour max// CidlenoF − pour une série croissante
de machines dominantes.
L’idée de la preuve se base sur le fait que dans une série croissante de machines dominantes,
tout ordonnancement est un ordonnancement no-idle. En effet :
)(min)(max 1,, +≤ jii
jii
pp ∀ i, j ∑∑−
=
+
=
+≤1
11,,
1,
i
kjkji
i
kjk ppp et 1,1,, +−+< jijiji CpC
alors, pour chaque ordonnancement S, on a ∑ ∑−
= =
+=1
1 1,,1max
m
j
n
imij ppC
M1
M2
M3
M4
60 5 20 25 30 35 40 45 50 55 65
J1 J2 J3 J4 J5
15 10

Chapitre 1 : Ordonnancement no-idle
34
et le second terme est une constante.
Théorème 1.6. Tout ordonnancement commençant par un travail qui minimise ∑=
m
jjip
2, est un
ordonnancement de permutation optimal pour max// CidlenoF − pour une série
décroissante de machines dominantes.
L’idée de la démonstration se base sur le fait que dans une série décroissante de machines
dominantes, tout ordonnancement est un ordonnancement contenant des trous entre chaque
paire de travaux et sur chaque machine. En effet :
)(max)(min 1,, +≥ jii
jii
pp ∀ i, j ∑∑−
=
+
=
+≥1
11,,
1,
i
kjkji
i
kjk ppp
alors, pour chaque ordonnancement S, on a ∑ ∑= =
+=m
j
n
iijn ppC
2 11,,max
et le second terme est une constante.
2.2.5. Travaux de Giaro
Dans son article [Giaro, 2001], l’auteur étudie des ordonnancements open-shop et flow-shop
compacts, c’est-à-dire des ordonnancements dans lesquels les contraintes no-idle et no-wait
sont toutes les deux imposées. L’auteur considère, en particulier, un type de système dans
lequel certains travaux peuvent ne pas avoir d'opérations sur certaines machines (i.e. chacun
des travaux peut présenter des durées opératoires nulles sur des machines données).
Pour ce faire, Giaro propose une modélisation par un graphe biparti dans lequel les nœuds
d'une partition correspondent aux machines et les nœuds de l'autre partition correspondent aux
travaux. Il y a un arc qui lie un nœud machine Mk à un nœud travail Ji si le travail Ji a une
durée opératoire non nulle sur la machine Mk ; l’arc est renseigné par un poids α (entier
naturel) égal à la durée opératoire. Dans le cas où certains travaux présentent des durées
opératoires nulles sur certaines machines, le graphe biparti est forcément non complet. Giaro
étudie les ordonnancements compacts sur ce graphe biparti en transposant des résultats de
coloriage de graphes ; un ordonnancement compact est alors défini par un graphe
d’ordonnancement. Un coloriage qui correspond à un ordonnancement no-wait&idle doit
vérifier les propriétés suivantes :
- Les arcs issus d’un même nœud travail doivent être de couleurs différentes. Ceci
traduit la condition qu’un travail ne peut être exécuté que par une machine à la fois.
- Les arcs incidents à un même nœud machine doivent être de couleurs différentes. Ceci
traduit la condition qu’une machine ne peut exécuter qu’un travail à la fois.

Chapitre 1 : Ordonnancement no-idle
35
- A chaque arc est affecté un intervalle temporel de longueur égale à son poids (durée
opératoire) et placé dans l’ordonnancement de l’activité de la machine correspondante
de telle sorte que :
• d’une part, les intervalles associés à une même machine soient contigus et
sans chevauchement. Ceci traduit la contrainte no-idle, et
• d’autre part, la juxtaposition des intervalles correspondants aux arcs issus
d’un même nœud travail soit également contiguë et sans chevauchement.
Ceci traduit la contrainte no-wait.
Pour des sous-classes particulières de systèmes dont le graphe d’ordonnancement (M) obtenu
est un cycle ou un chemin, Giaro montre que les problèmes open-shop du type
max/,&/ CpathMidlewaitnoO =− et max/,&/ CcycleMidlewaitnoO =− sont NP-
difficiles. De même, pour les systèmes flow-shop dont le graphe d’ordonnancement (M) est
un cycle, la question de l’existence d’un ordonnancement compact
/,&/ cycleMidlewaitnoF =− est NP-complet, tandis que la recherche d’une optimisation
max/,&/ CpathMidlewaitnoF =− est NP-difficile. Il conclut que le problème de
l’existence d’un ordonnancement compact même à deux machines, aussi bien pour les
systèmes open-shop que pour les systèmes flow-shop, est NP-difficile. Giaro démontre
néanmoins l’existence d’un algorithme linéaire fournissant une solution 4-approximé pour le
problème max/,&/ CpathMidlewaitnoF =− . Pour des systèmes dont le graphe
d’ordonnancement est un arbre ou un unicycle, Giaro démontre aussi l’existence d’un
algorithme linéaire 2-approximé pour les problèmes max/,&/ CtreeMidlewaitnoO =− et
max/,&/ CunicycleMidlewaitnoO =− .
2.3. Analyse de la complexité
Le problème max// CidlenoF − qui nous intéresse dans cette thèse a été mentionné en
[Tanarv et al., 1994] comme étant NP-difficile ; les auteurs font référence pour cela aux
résultats des travaux publiés dans [Strusevitch, 1981]. D’autres travaux ont traité des cas
particuliers des systèmes à deux machines et des systèmes à trois machines.
2.3.1. Complexité dans le cas de deux machines
Un flow-shop no-idle à deux machines peut être résolu optimalement en O(n*log(n)) par
l'algorithme de Johnson [Johnson, 1954]. A partir de la solution obtenue d'un flow-shop sans

Chapitre 1 : Ordonnancement no-idle
36
contrainte à deux machines, il suffit d’opérer un décalage à droite des opérations sur la
deuxième machine pour éliminer les temps morts et obtenir ainsi un ordonnancement no-idle
sans toucher à la date d’achèvement du dernier travail. Cet algorithme nécessite un temps de
calcul polynomial.
2.3.2. Complexité dans le cas de trois machines
Garey, Johnson et Sethi, dans [Garey et al., 1976], ont prouvé que le problème max//3 CF
est NP-complet. Se basant sur les démonstrations qui y sont fournies, Baptiste et Hguny, dans
[Baptiste et Hguny, 1997], ont apporté la preuve que le problème max//3 CidlenoF − est
NP-complet au sens fort. La complexité du problème max//3 CwaitnoF − est également
mentionné en faisant référence à l’équivalence entre ce problème et celui du voyageur de
commerce (recherche du plus court chemin pour visiter n villes).
Concernant le problème max//3 CidlenoF − , Baptiste et Hguny ont défini un problème
d’ordonnancement de 4n + 1 travaux sur trois machines, lequel problème est équivalent au
problème à 3-partitions qui a été démontré NP-complet dans [Garey et al., 1976]. Les données
du problème posé sont récapitulées dans la table 1.7 et l’ordonnancement des n + 1 premiers
travaux est illustré par la figure 1.7.
Travail J0 p0,1 = 0 p0,2 = B p0,3 = 2B
Travail Ji, ni <≤1 pi,1 = 2B pi,2 =B pi,3 = 2B
Travail Jn pn,1 = 2B pn,2 = B pn,3 = 0
Travail Ji, nin 4≤< pi,1 = 0 pi,2 = ai pi,3 =0
Table 1.7. Durées opératoires des travaux du problème posé
Où B et les ai, pour n < i ≤ 4n, sont des entiers vérifiant les deux contraintes :
nBan
nii∑ =
+=
4
1 et B / 4< ai ≤ B / 2
Figure 1.7. Ordonnancement des travaux du problème équivalent
n
0

Chapitre 1 : Ordonnancement no-idle
37
Sur la figure 1.7, on voit que l’ordonnancement des n + 1 travaux donne un temps de fin égal
à (2n + 1)*B sur la troisième machine mais avec n trous de taille B sur la deuxième machine.
Si l’on peut répartir les 3n travaux restants en n ensembles de trois travaux tel que chaque
ensemble totalise une durée égale à B, on obtient un ordonnancement no-idle de l’ensemble
des 4n + 1 travaux qui maintient l’échéance de (2n + 1)*B sur la machine 3. Un tel ordre ne
peut être obtenu que si, et seulement si, le problème à 3-partitions a une solution.
3. Conclusion Nous avons tenté, dans ce chapitre, une synthèse de la problématique générale de
l’ordonnancement qui nous a permis de situer le cas particulier de l’ordonnancement avec
contrainte no-idle. Le rappel que nous avons fait du formalisme de Conway, au delà de la
simplification d’écriture qui nous sera utile dans la suite, a mis en évidence la diversité de la
problématique de l’ordonnancement et a dégagé en même temps une classification. La
complexité du problème flow-shop avec la contrainte no-idle s’avère polynomiale pour le cas
particulier de deux machines, du fait que la solution no-idle se déduit directement de la
solution d’ordonnancement d’un flow-shop de permutation. Cependant, le problème devient
NP-complet à partir de trois machines. Dès lors, le recours aux heuristiques de complexité
plus faible pour la recherche de solutions approchées se justifie aisément. Ceci nous a mené à
faire un survol sur les méthodes classiques de résolution. Enfin, l’étude de l’état de l’art
montre que le problème d’ordonnancement avec la contrainte no-idle reste encore très peu
étudié.
Plus précisément, parmi les cinq travaux que nous venons de rappeler, deux seulement ont
abordé directement le problème de l’ordonnancement no-idle. En effet, les travaux de
[Narasimhan et Panwalker, 1984] et [Narasimhan et Mangiameli, 1987], d’une part, et ceux
de [King et Spachis, 1980], d’autre part, se sont intéressés à des optimisations qui admettent
l’existence de temps d’arrêt entre les machines. Les travaux de [Giaro, 2001] ont surtout
étudié des aspects de complexité sans donner des solutions pour la construction des
ordonnancements sans temps d’arrêt. Dans [Adiri et Pohoryles, 1982], les auteurs ont
effectivement proposé des solutions de l’ordonnancement flow-shop no-idle qui minimisent le
critère ∑ iC dans le cas particulier des séries de machines dominantes croissantes et
décroissantes. Et en définitive, Baptiste et Hguny sont les seuls, à l’heure actuelle, à avoir
étudié l’ordonnancement flow-shop no-idle selon une approche exacte de type séparation et
évaluation (branch and bound). Nous avons, à dessein, différé la présentation détaillée de
cette approche au chapitre qui suit.