Ordonnancement des systèmes de production sans temps d`arrêt

Transcription

Ordonnancement des systèmes de production sans temps d`arrêt
N° d’ordre 2003 ISAL0047
Année 2003
Thèse
Ordonnancement des systèmes de production
sans temps d'arrêt machine
Présentée devant
La Faculté des Sciences de Tunis
et
L’institut national des sciences appliquées de Lyon
Pour obtenir
Le grade de docteur
Formation doctorale : Informatique et Systèmes Coopératifs pour l’Entreprise
École doctorale : Informatique et Information pour la Société
Par
Nour El Houda SAADANI
(Ingénieur)
Date de soutenance
15 novembre 2003
Jury MM.
Président
Rapporteur
Rapporteur
Alain GUINET
Mohamed MOALLA
Zaher MAHJOUB
Gerd FINKE
Khaled GUEDIRA
Pierre BAPTISTE
Directeur de recherche (INSA de Lyon)
Directeur de recherche (FST de Tunis)
Professeur (FST de Tunis)
Professeur (Grenoble)
Maître de Conférences habilité (ISG Tunis)
Professeur (INSA de Lyon)
Ordonnancement des systèmes de production sans temps d’arrêt machine
Résumé
La recherche entreprise étudie le pilotage des systèmes discrets de production
nécessitant un fonctionnement sans temps d’arrêt, en raison soit de contraintes
technologiques (exemple : température d’outillages dans le cas d’une ligne de fabrication de
noyaux en fonderie) soit de contraintes économiques (exemples : coût de l’arrêt d’une ligne
d’assemblage de véhicules automobiles, coût de l’arrêt d’une ligne de coulée), et propose
des outils d’aide à la décision dans ce cadre. Cette problématique se révèle aussi très
importante dans l’industrie dans le cas où l’emploi de ressources humaines s’avère coûteux
(opérateurs). Au sein de la théorie générale de l’ordonnancement, c’est la contrainte « noidle » qui se rapproche le plus de nos préoccupations. Elle implique qu’un équipement ne
doit pas s’arrêter entre sa première et sa dernière utilisation. Cette contrainte ne se définie
formellement qu’au sein du sous ensemble des ateliers linéaires (flow-shop), car se sont les
seules configurations pour lesquelles la question de l’existence d’une solution sous cette
contrainte se pose. Dans cette thèse trois différents points sont successivement traités. Nous
étudions, en premier lieu, une solution exacte à travers la conception d’un algorithme de
type séparation et évaluation. Il est bien connu qu’une procédure de séparation et
d'évaluation a l’inconvénient de nécessiter un temps de calcul exponentiel lorsque la taille
des données augmente. De ce fait, il est important de trouver des solutions approchées pour
le problème étudié. En second lieu, nous proposons une première heuristique en O(n*log(n))
pour le cas d’un flow-shop de permutation à trois machines, puis une deuxième heuristique
en O(n3) pour le cas plus général d’un nombre quelconque de machines. Cette contrainte
prend une toute autre signification lorsque la finalité n’est plus une contrainte technologique
mais un soucis de minimisation des ré-affectations de ressources secondaires. D’une
contrainte stricte, elle peut se transformer en un critère à minimiser (minimisation de temps
morts, minimisation des changements d’affectation de postes). En troisième lieu, nous
traitons le cas d’un flow-shop pour lequel un nombre maximum de temps morts sont permis
sur l’ensemble des machines.
Mots-Clés: problème flow-shop - contrainte no-idle - règle de Johnson - voyageur de
commerce
Production system scheduling with no-idle constraints
Abstract
This research aims at studying the behaviour of discrete production systems
requiring operation processing without idle time, due to technological constraints (for
example due to tool temperature in the case of a core production line in a foundry) or
economic constraints (for example, due to the cost incurred by stopping an assembly line of
car engines or a casting line). In this work, we propose some tools that can help the manager
in his decision process. This problem appears to be very important in industry regarding to
the employment of expensive human resources. Within the general theory of scheduling, it’s
the "no-idle" constraint which approaches the best our preoccupation. It means that a
machine must not stop between its first and last operation. This constraint is only defined
within the linear organisations of workshop problems (flow-shop). In this thesis, three
various points are studied. First, we present a branch and bound algorithm. It is well known
that such type of algorithm is exponential when the size of data increases. Also, it is
interesting to find near-optimal solutions. Secondly, we propose a O(n*log(n)) heuristic for
the case of permutation flow-shop problems with three machines, next a O(n3) heuristic for
the same type of problems with any number of machines. The studied characteristic takes
another meaning when the purpose is not the verification of a technological constraint but
the minimisation of secondary resource reemployments. From a strict constraint, it can be
changed to a minimisation criterion (minimisation of idle times, minimisation of operator
assignments). Finally, we treat the partial relaxation of the no-idle constraint in the case of
flow-shop problems where a maximum number of idle times are allowed on all machines.
Key words: permutation flow-shop - machine no-idle constraint - Johnson rule - travelling
salesman problem.
INSA DE LYON
DEPARTEMENT DES ETUDES DOCTORALES
ET RELATIONS INTERNATIONALES SCIENTIFIQUES
MARS 2002
Ecoles Doctorales et Diplômes d’Etudes Approfondies
habilités pour la période 1999-2003
ECOLES DOCTORALES
n° code national
RESPONSABLE
PRINCIPAL
CHIMIE DE LYON
M. D. SINOU
UCBL1
04.72.44.62.63
Sec 04.72.44.62.64
Fax 04.72.44.81.60
CORRESPONDANT
INSA
DEA INSA
n° code national
RESPONSABLE
DEA INSA
Chimie Inorganique
(Chimie, Procédés, Environnement)
EDA206
ECONOMIE, ESPACE ET
MODELISATION DES
COMPORTEMENTS
(E2MC)
M.A. BONNAFOUS
LYON 2
04.72.72.64.38
Sec 04.72.72.64.03
Fax 04.72.72.64.48
M. R. GOURDON
87.53
Sec 84.30
Fax 87.17
Mme M. ZIMMERMANN
84.71
Fax 87.96
910643
Sciences et Stratégies Analytiques
910634
Sciences et Techniques du Déchet
910675
M. R. GOURDON
Tél 87.53 Fax 87.17
Villes et Sociétés
Mme M. ZIMMERMANN
Tél 84.71 Fax 87.96
911218
Dimensions Cognitives et Modélisation
992678
M. L. FRECON
Tél 82.39 Fax 85.18
Automatique Industrielle
910676
M. M. BETEMPS
Tél 85.59 Fax 85.35
Dispositifs de l’Electronique Intégrée
910696
M. D. BARBIER
Tél 85.47 Fax 60.81
Génie Electrique de Lyon
910065
M. J.P. CHANTE
Tél 87.26 Fax 85.30
Images et Systèmes
Mme I. MAGNIN
Tél 85.63 Fax 85.26
M. S. GRENIER
Tél 79.88 Fax 85.34
EDA417
ELECTRONIQUE,
ELECTROTECHNIQUE,
AUTOMATIQUE
M. G. GIMENEZ
INSA DE LYON
83.32
Fax 85.26
(E.E.A.)
EDA160
992254
EVOLUTION, ECOSYSTEME,
MICROBIOLOGIE , MODELISATION
(E2M2)
M. J.P FLANDROIS
UCBL1
04.78.86.31.50
Sec 04.78.86.31.52
Fax 04.78.86.31.49
M. S. GRENIER
79.88
Fax 85.34
Analyse et Modélisation des Systèmes Biologiques
910509
EDA403
INFORMATIQUE ET INFORMATION
POUR LA SOCIETE
(EDIIS)
Documents Multimédia, Images et Systèmes
d’Information Communicants
992774
Extraction des Connaissances à partir des Données
992099
M. J.M. JOLION
INSA DE LYON
87.59
Fax 80.97
EDA 407
Informatique et Systèmes Coopératifs pour l’Entreprise
950131
Biochimie
INTERDISCIPLINAIRE SCIENCESSANTE
(EDISS)
M. A.J. COZZONE
UCBL1
04.72.72.26.72
Sec 04.72.72.26.75
Fax 04.72.72.26.01
M. M. LAGARDE
82.40
Fax 85.24
M. J. JOSEPH
ECL
04.72.18.62.44
Sec 04.72.18.62.51
Fax 04.72.18.60.90
M. J.M. PELLETIER
83.18
Fax 84.29
930032
M. A. FLORY
Tél 84.66 Fax 85.97
M. J.F. BOULICAUT
Tél 89.05 Fax 87.13
M. A. GUINET
Tél 85.94 Fax 85.38
M. M. LAGARDE
Tél 82.40 Fax 85.24
EDA205
MATERIAUX DE LYON
UNIVERSITE LYON 1
EDA 034
MATHEMATIQUES ET
INFORMATIQUE FONDAMENTALE
(Math IF)
M. NICOLAS
UCBL1
04.72.44.83.11
Fax 04.72.43.00.35
M. J. POUSIN
88.36
Fax 85.29
M. J. BATAILLE
ECL
04.72.18.61.56
Sec 04.72.18.61.60
Fax 04.78.64.71.45
M. G.DALMAZ
83.03
Fax 04.72.89.09.80
Génie des Matériaux : Microstructure, Comportement
Mécanique, Durabilité
910527
M. J.M.PELLETIER
Tél 83.18 Fax 85.28
Matériaux Polymères et Composites
910607
M. H. SAUTEREAU
Tél 81.78 Fax 85.27
Matière Condensée, Surfaces et Interfaces
910577
M. G. GUILLOT
Tél 81.61 Fax 85.31
Analyse Numérique, Equations aux dérivées partielles
et Calcul Scientifique
910281
M. G. BAYADA
Tél 83.12 Fax 85.29
Acoustique
910016
M. J.L. GUYADER
Tél 80.80 Fax 87.12
992610
M. J.J.ROUX
Tél 84.60 Fax 85.22
EDA 409
MECANIQUE, ENERGETIQUE, GENIE
CIVIL, ACOUSTIQUE
(MEGA)
EDA162
Génie Civil
Génie Mécanique
992111
Thermique et Energétique
910018
En grisé : Les Ecoles doctorales et DEA dont l’INSA est établissement principal
M. G. DALMAZ
Tél 83.03
Fax 04.78.89.09.80
M. J. F. SACADURA
Tél 81.53 Fax 88.11
MARS 2002
INSTITUT NATIONAL DES SCIENCES APPLIQUEES DE LYON
Directeur : STORCK.A
Professeurs :
AUDISIO S.
BABOT D.
BABOUX J.C.
BALLAND B.
BAPTISTE P.
BARBIER D.
BASTIDE J.P.
BAYADA G.
BENADDA B.
BETEMPS M.
BIENNIER F.
BLANCHARD J.M.
BOISSON C.
BOIVIN M. (Prof. émérite)
BOTTA H.
BOTTA-ZIMMERMANN M. (Mme)
BOULAYE G. (Prof. émérite)
BOYER J.C.
BRAU J.
BREMOND G.
BRISSAUD M.
BRUNET M.
BRUNIE L.
BUREAU J.C.
CAVAILLE J.Y.
CHANTE J.P.
CHOCAT B.
COMBESCURE A.
COUSIN M.
DAUMAS F. (Mme)
DOUTHEAU A.
DUFOUR R.
DUPUY J.C.
EMPTOZ H.
ESNOUF C.
EYRAUD L. (Prof. émérite)
FANTOZZI G.
FAVREL J.
FAYARD J.M.
FAYET M.
FERRARIS-BESSO G.
FLAMAND L.
FLORY A.
FOUGERES R.
FOUQUET F.
FRECON L.
GERARD J.F.
GERMAIN P.
GIMENEZ G.
GOBIN P.F. (Prof. émérite)
GONNARD P.
GONTRAND M.
GOUTTE R. (Prof. émérite)
GOUJON L.
GOURDON R.
GRANGE G.
GUENIN G.
GUICHARDANT M.
GUILLOT G.
GUINET A.
GUYADER J.L.
GUYOMAR D.
HEIBIG A.
JACQUET RICHARDET G.
JAYET Y.
JOLION J.M.
JULLIEN J.F.
JUTARD A. (Prof. émérite)
KASTNER R.
KOULOUMDJIAN J.
LAGARDE M.
LALANNE M. (Prof. émérite)
LALLEMAND A.
LALLEMAND M. (Mme)
LAREAL P.
LAUGIER A.
LAUGIER C.
PHYSICOCHIMIE INDUSTRIELLE
CONT. NON DESTR. PAR RAYONNEMENT IONISANTS
GEMPPM***
PHYSIQUE DE LA MATIERE
PRODUCTIQUE ET INFORMATIQUE DES SYSTEMES MANUFACTURIERS
PHYSIQUE DE LA MATIERE
LAEPSI****
MODELISATION MATHEMATIQUE ET CALCUL SCIENTIFIQUE
LAEPSI****
AUTOMATIQUE INDUSTRIELLE
PRODUCTIQUE ET INFORMATIQUE DES SYSTEMES MANUFACTURIERS
LAEPSI****
VIBRATIONS-ACOUSTIQUE
MECANIQUE DES SOLIDES
UNITE DE RECHERCHE EN GENIE CIVIL - Développement Urbain
UNITE DE RECHERCHE EN GENIE CIVIL - Développement Urbain
INFORMATIQUE
MECANIQUE DES SOLIDES
CENTRE DE THERMIQUE DE LYON - Thermique du bâtiment
PHYSIQUE DE LA MATIERE
GENIE ELECTRIQUE ET FERROELECTRICITE
MECANIQUE DES SOLIDES
INGENIERIE DES SYSTEMES D’INFORMATION
CEGELY*
GEMPPM***
CEGELY*- Composants de puissance et applications
UNITE DE RECHERCHE EN GENIE CIVIL - Hydrologie urbaine
MECANIQUE DES CONTACTS
UNITE DE RECHERCHE EN GENIE CIVIL - Structures
CETHIL – Energétique et Thermique
CHIMIE ORGANIQUE
MECANIQUE DES STRUCTURES
PHYSIQUE DE LA MATIERE
RECONNAISSANCE DES FORMES ET VISION
GEMPPM***
GENIE ELECTRIQUE ET FERROELECTRICITE
GEMPPM***
PRODUCTIQUE ET INFORMATIQUE DES SYSTEMES MANUFACTURIERS
BIOLOGIE APPLIQUEE
MECANIQUE DES SOLIDES
MECANIQUE DES STRUCTURES
MECANIQUE DES CONTACTS
INGENIERIE DES SYSTEMES D’INFORMATION
GEMPPM***
GEMPPM***
INFORMATIQUE
MATERIAUX MACROMOLECULAIRES
LAEPSI****
CREATIS**
GEMPPM***
GENIE ELECTRIQUE ET FERROELECTRICITE
CEGELY*- Composants de puissance et applications
CREATIS**
GEMPPM***
LAEPSI****.
GENIE ELECTRIQUE ET FERROELECTRICITE
GEMPPM***
BIOCHIMIE ET PHARMACOLOGIE
PHYSIQUE DE LA MATIERE
PRODUCTIQUE ET INFORMATIQUE DES SYSTEMES MANUFACTURIERS
VIBRATIONS-ACOUSTIQUE
GENIE ELECTRIQUE ET FERROELECTRICITE
LAB. MATHEMATIQUE APPLIQUEES LYON
MECANIQUE DES STRUCTURES
GEMPPM***
RECONNAISSANCE DES FORMES ET VISION
UNITE DE RECHERCHE EN GENIE CIVIL - Structures
AUTOMATIQUE INDUSTRIELLE
UNITE DE RECHERCHE EN GENIE CIVIL - Géotechnique
INGENIERIE DES SYSTEMES D’INFORMATION
BIOCHIMIE ET PHARMACOLOGIE
MECANIQUE DES STRUCTURES
CENTRE DE THERMIQUE DE LYON - Energétique et thermique
CENTRE DE THERMIQUE DE LYON - Energétique et thermique
UNITE DE RECHERCHE EN GENIE CIVIL - Géotechnique
PHYSIQUE DE LA MATIERE
BIOCHIMIE ET PHARMACOLOGIE
LEJEUNE P.
MARS 2002
GENETIQUE MOLECULAIRE DES MICROORGANISMES
LUBRECHT A.
MAZILLE H.
MERLE P.
MERLIN J.
MIGNOTTE A. (Mle)
MILLET J.P.
MIRAMOND M.
MOREL R.
MOSZKOWICZ P.
MOURA A.
NARDON P. (Prof. émérite)
NIEL E.
NORTIER P.
ODET C.
OTTERBEIN M. (Prof. émérite)
PARIZET E.
PASCAULT J.P.
PAVIC G.
PELLETIER J.M.
PERA J.
PERRIAT P.
PERRIN J.
PINARD P. (Prof. émérite)
PINON J.M.
PONCET A.
POUSIN J.
PREVOT P.
PROST R.
RAYNAUD M.
REDARCE H.
REYNOUARD J.M.
RIGAL J.F.
RIEUTORD E. (Prof. émérite)
ROBERT-BAUDOUY J. (Mme) (Prof. émérite)
ROUBY D.
ROUX J.J.
RUBEL P.
RUMELHART C.
SACADURA J.F.
SAUTEREAU H.
SCAVARDA S.
SOUIFI A.
SOUROUILLE J.L.
THOMASSET D.
UBEDA S.
THUDEROZ C.
UNTERREINER R.
VELEX P.
VIGIER G.
VINCENT A.
VRAY D.
VUILLERMOZ P.L. (Prof. émérite)
MECANIQUE DES CONTACTS
PHYSICOCHIMIE INDUSTRIELLE
GEMPPM***
GEMPPM***
INGENIERIE, INFORMATIQUE INDUSTRIELLE
PHYSICOCHIMIE INDUSTRIELLE
UNITE DE RECHERCHE EN GENIE CIVIL - Hydrologie urbaine
MECANIQUE DES FLUIDES
LAEPSI****
GEMPPM***
BIOLOGIE APPLIQUEE
AUTOMATIQUE INDUSTRIELLE
DREP
CREATIS**
LAEPSI****
VIBRATIONS-ACOUSTIQUE
MATERIAUX MACROMOLECULAIRES
VIBRATIONS-ACOUSTIQUE
GEMPPM***
UNITE DE RECHERCHE EN GENIE CIVIL - Matériaux
GEMPPM***
ESCHIL – Equipe Sciences Humaines de l’Insa de Lyon
PHYSIQUE DE LA MATIERE
INGENIERIE DES SYSTEMES D’INFORMATION
PHYSIQUE DE LA MATIERE
MODELISATION MATHEMATIQUE ET CALCUL SCIENTIFIQUE
GRACIMP – Groupe de Recherche en Apprentissage, Coopération et Interfaces
Multimodales pour la Productique
CREATIS**
CENTRE DE THERMIQUE DE LYON - Transferts Interfaces et Matériaux
AUTOMATIQUE INDUSTRIELLE
UNITE DE RECHERCHE EN GENIE CIVIL - Structures
MECANIQUE DES SOLIDES
MECANIQUE DES FLUIDES
GENETIQUE MOLECULAIRE DES MICROORGANISMES
GEMPPM***
CENTRE DE THERMIQUE DE LYON – Thermique de l’Habitat
INGENIERIE DES SYSTEMES D’INFORMATION
MECANIQUE DES SOLIDES
CENTRE DE THERMIQUE DE LYON - Transferts Interfaces et Matériaux
MATERIAUX MACROMOLECULAIRES
AUTOMATIQUE INDUSTRIELLE
PHYSIQUE DE LA MATIERE
INGENIERIE INFORMATIQUE INDUSTRIELLE
AUTOMATIQUE INDUSTRIELLE
CENTRE D’INNOV. EN TELECOM ET INTEGRATION DE SERVICES
ESCHIL – Equipe Sciences Humaines de l’Insa de Lyon
CREATIS**
MECANIQUE DES CONTACTS
GEMPPM***
GEMPPM***
CREATIS**
PHYSIQUE DE LA MATIERE
Directeurs de recherche C.N.R.S. :
BERTHIER Y.
CONDEMINE G.
COTTE-PATAT N. (Mme)
FRANCIOSI P.
MANDRAND M.A. (Mme)
POUSIN G.
ROCHE A.
SEGUELA A.
MECANIQUE DES CONTACTS
UNITE MICROBIOLOGIE ET GENETIQUE
UNITE MICROBIOLOGIE ET GENETIQUE
GEMPPM***
UNITE MICROBIOLOGIE ET GENETIQUE
BIOLOGIE ET PHARMACOLOGIE
MATERIAUX MACROMOLECULAIRES
GEMPPM***
Directeurs de recherche I.N.R.A. :
FEBVAY G.
GRENIER S.
RAHBE Y.
BIOLOGIE APPLIQUEE
BIOLOGIE APPLIQUEE
BIOLOGIE APPLIQUEE
Directeurs de recherche I.N.S.E.R.M. :
PRIGENT A.F. (Mme)
MAGNIN I. (Mme)
BIOLOGIE ET PHARMACOLOGIE
CREATIS**
* CEGELY
** CREATIS
***GEMPPM
****LAEPSI
CENTRE DE GENIE ELECTRIQUE DE LYON
CENTRE DE RECHERCHE ET D’APPLICATIONS EN TRAITEMENT DE L’IMAGE ET DU SIGNAL
GROUPE D'ETUDE METALLURGIE PHYSIQUE ET PHYSIQUE DES MATERIAUX
LABORATOIRE D’ANALYSE ENVIRONNEMENTALE DES PROCEDES ET SYSTEMES INDUSTRIELS
Ce travail est dédié à
Ma mère et à mon père,
Aux très chers :
Ma sœur Saloua et Mon frère Ahmed
Mon beau-frère Moez et Ma belle sœur Mouna
A mes tres chers amis et à tous ceux qui ont
contribué de loin ou de près à la réalisation
de ce travail
Remerciements
Je tiens tout d’abord à remercier Monsieur Zaher MAHJOUB, Professeur à la Faculté
des Sciences de Tunis pour l’honneur qu’il me fait en président le jury de ma thèse.
Je tiens à exprimer ma gratitude à Monsieur Alain GUINET, Professeur à l’INSA de
Lyon, pour la confiance qu’il m’a accordée en me permettant d’effectuer une thèse sous sa
direction. Ses conseils et son aide ont été des plus utiles pour l’aboutissement de ce travail.
Je tiens à exprimer ma reconnaissance à Monsieur Mohamed MOALLA, de m’avoir
dirigé dans cette thèse, pour son aide dans toutes mes démarches, ses perpétuels
encouragements et sa grande patience. Qu’il trouve ici l’expression de ma profonde
gratitude.
J’adresse mes plus sincères remerciements à monsieur Pierre BAPTISTE, Professeur
à l’INSA de Lyon qui a consacré beaucoup de temps à cette thèse. Ses commentaires,
remarques et suggestions ont donné une autre dimension à mon travail. Ce travail lui doit
beaucoup. Qu’il trouve ici l’expression de ma profonde gratitude.
Je tiens à exprimer mes remerciements à Mr Pierre CAMPAGNE, Professeur à l’INSA
de Lyon, pour s’être intéressé à ce travail et d’avoir accepté de participer au comité de Jury.
Mes remerciements vont également à Monsieur Gerd FINKE, Professeur à l’Ecole
Polythechnique de Grenoble, pour l’intérêt qu’il a montré pour mon travail et pour avoir
accepté d’être rapporteur de ma thèse.
Je tiens à remercier également Monsieur Khaled GHEDIRA, Maître de Conférence à
ISG de Tunis, pour avoir accepté d’être rapporteur de cette thèse et pour l’intérêt qu’il a
apporté à mes travaux.
J’ai beaucoup de reconnaissances envers tous les enseignants du département des
Sciences de l’Informatique de la Faculté des Sciences de Tunis pour leur constante amabilité
et en partculier à MM. Faouzi Charada et Yahya Slimani.
Je n’oublierai pas mes collègues et amis des laboratoires LIP2 (à Tunis) et PRISMa (à
Lyon). Mes derniers remerciements vont au reste de ma grande famille, à tou(te)s mes
ami(e)s, et ce ne sont pas les moindres. A tous ceux qui de près ou de loin m’ont encouragé,
m’ont supporté et soutenu dans des moments difficiles. Ils sont nombreux et tous présents
dans mon cœur.
Table des matières
Introduction ……………………………………………………………………………….1
Chapitre 1. Ordonnancement no-idle
1. De l’ordonnancement en général ………………………………………………………….5
1.1. Terminologie …………………………………………………………………………5
1.2. Classification………………………………………………………………………….8
1.3. Complexité…………………………………………………………………………...12
1.4. Méthodes classiques de résolution…………………………………………………...14
1.4.1. Méthodes dédiées………………………………………………………………14
1.4.1.1. Règles de tri…………………………………………………………..14
1.4.1.2. Algorithmes de liste ………………………………………………….15
1.4.1.3. Autres méthodes……………………………………………………...15
1.4.2. Méthodes génériques…………………………………………………………...16
1.4.2.1. Méthodes exactes…………………………………………………….16
1.4.2.1.1. Programmation dynamique…………………………………16
1.4.2.1.2. Méthode de séparation et évaluation ... …………………….17
1.4.2.1.3. Modélisation analytique et résolution………………………18
1.4.2.2. Méthodes heuristiques constructives…………………………………18
1.4.2.3. Méthodes amélioratrices……………………………………………..19
1.4.2.3.1. Méthode de descente……………………………………….19
1.4.2.3.2. Recuit simulé……………………………………………….20
1.4.2.3.3. Recherche tabou……………………………………………21
1.4.2.3.4. Algorithmes génétiques…………………………………….22
2. Etat de l'art sur les problèmes d'ordonnancement no-idle……………………………...…23
2.1. Présentation du problème flow-shop avec contrainte no-idle……………..………...24
2.2. Travaux antérieurs ................……………………………………………….….…….25
2.2.1. Travaux de Narasimhan et Panwalkar………………………………………….25
2.2.2. Travaux de King et Spachis……………………………………………………27
i
Table des matières
2.2.3.Travaux de Adiri et Pohoryles ….……………………………………………..30
2.2.4.Travaux de Baptiste et Hguny………………………………………………….32
2.2.5.Travaux de Giaro……………………………………………………………….34
2.3. Analyse de la complexité……………………………………………………………..35
2.3.1. Complexité dans le cas de deux machines……………………………………..35
2.3.2. Complexité dans le cas de trois machines..........................................................36
3. Conclusion………………………………………………………………………………..37
Chapitre 2. Résolution exacte du problème flow-shop avec contrainte noidle
1. L’algorithme de Baptiste et Hguny……………………………………………………….38
1.1. Résultats préliminaires ……...……………………………………………………….38
1.2. Arbre de recherche ..………………………………………………………………....40
1.3. Exemple .……………………………………………………………………………..41
1.4. Notations et précision …………………………………….………………………….44
2. Etude des problèmes F 2 / f − avoid / C max et F 2 / l − avoid / C max ..……………….46
2.1. Résultats préliminaires……………………………………………………………….46
2.2. Optimisation de la recherche de la solution optimale………………………………..52
2.2.1. Algorithme de résolution du problème F 2 / f − avoid / C max ………………52
2.2.2. Algorithme de résolution du problème F 2 / l − avoid / C max ………………..54
2.2.3. Algorithme de résolution du problème F 2 / f − avoid , l − avoid / C max ……55
2.3. Propriétés particulières………………………………………………………………58
2.4. Discussion……………………………………………………………………………66
2.5. Algorithme final pour la résolution du problème F 2 / f − avoid / C max …………..69
3. Expérimentations.…………………………………………………………………………71
4. Conclusion………………………………………………………………………………..74
Chapitre 3. Résolution heuristique du problème flow-shop avec contrainte
no-idle
1. Heuristique pour la résolution du problème F 3 / no − idle / C max ……………………...75
1.1. Heuristique…………………………………………………………………………...76
1.2. Expérimentations..…………………………………………………………………...79
1.2.1. Comparaison par rapport à une borne inférieure……………………………...79
ii
Table des matières
1.2.1.1. Borne inférieure ……………………………………………………..79
1.2.1.2. Résultats des expérimentations ……………...………………………80
1.2.2. Comparaison avec les résultats trouvés par Lingo……………………………82
1.2.2.1. Modèle mathématique………………………………………………..82
1.2.2.2. Evaluation et comparaison …………. ……………...……………….83
1.2.2.3. Efficacité de la borne inférieure……………..……………………….86
2. Résolution du problème dans le cadre général…………………………………………...87
2.1.Problème du voyageur de commerce………………………………………………...87
2.1.1. Présentation du problème…………………………………………………….87
2.1.2. Algorithmes exacts de résolution…………………………………………….88
2.1.3. Algorithmes approximatifs ……………………………………………….….89
2.2.Résolution du problème F / no − idle / C max …………………………………….93
2.3.Expérimentations .……………………………………………………………………94
2.3.1. Comparaison avec la solution optimale……………………………………….94
2.3.2. Comparaison avec la solution trouvée par un solveur…………………………99
2.3.3. Comparaison avec les solutions trouvées par l’algorithme de type séparation et
évaluation …………………………………………………………………………...103
2.3.4. Comparaison dans le cas de trois machines…………………………………..105
3. Etude d’un cas particulier d’application..……………………………………………….108
3.1. Analyse du problème……………………………………………………………….109
3.2. Heuristique………………………………………………………………………….111
3.3. Expérimentations ..………………………………………………………………….111
3.3.1. Données ……………………………………………………………………..111
3.3.2. Borne inférieure…………………………………………………………….. 112
3.3.3. Résultats……………………………………………………………………..112
3.4. Extension au flow-shop hybride................................................................................114
4. Conclusion……………………………………………………………………………….116
Chapitre 4. Relaxation de la contrainte no-idle
1. Etat de l'art………………………………………………………………………………117
2. Dégradation
du
C max
entre
un
flow-shop
simple
et
flow-shop
no-
idle……………………………………………………………………………………….118
iii
Table des matières
3. Relaxation de la contrainte no-idle avec un temps mort………………………………..120
3.1. Cas de trois machines……………………………………………………………..122
3.2. Cas de quatre et de cinq machines…………………………………………………126
3.2.1. Relaxation d'un flow-shop no-idle avec quatre machines……………………126
3.2.2. Relaxation d'un flow-shop no-idle avec cinq machines……………………..128
3.2.3. Relaxation d’un flow-shop no-idle avec m machines…………………....….129
4.
Expérimentations……………………………………………………………………….130
4.1. Comparaison avec la solution du problème F // C max …………………….…..131
4.2. Comparaison en fonction du nombre de machines…………………………….…..133
4.3. Comparaison entre les solutions proposées………………………………………..134
5. Conclusion........................................................................................................................136
Conclusion..........................................................................................................................137
Bibliographie.....................................................................................................................141
Annexe……………………………………………………………………………………..151
iv
Liste des tables
Chapitre 1.
Table 1.1. Problème flow-shop …………………………………...........................................28
Table 1.2. Première évaluation……………………………………………………………….28
Table 1.3. Deuxième évaluation……………………………………………………………...29
Table 1.4. Troisième évaluation………………………………………………………………29
Table 1.5. Problème d’une série croissante de machines dominantes ………………….……32
Table 1.6. Problème d’une série décroissante de machines dominantes …………………….33
Table 1.7. Durées opératoires des travaux du problème posé………………………………..36
Chapitre 2.
Table 2.1. Problème flow-shop à 4 machines et 5 travaux…………………………………...42
Table 2.2. Première évaluation……………………………………………………………….42
Table 2.3. Deuxième évaluation……………………………………………………………...43
Table 2.4. Troisième évaluation………………………………………………………………43
Table 2.5. Quatrième évaluation……………………………………………………………...44
Table 2.6. Les durées opératoires d'un problème à cinq travaux……………………………..45
Table 2.7. Les différents ordres de l'exemple de la table 2.6…………………………………46
Table 2.8. Les durées opératoires d'un problème à six travaux……………………………….67
Table 2.9. Les différents ordres de l'exemple de la table 2.8………………………………….67
Table 2.10. Ensemble des durées opératoires d’un problème flow-shop à cinq travaux …..67
Table 2.11. Les différents ordres de l'exemple de la table 2.10…………………………….…68
Table 2.12. Les durées opératoires d'un problème à cinq travaux…………………………….69
Table 2.13. Les différents ordres de l'exemple de la table 2.12………………………………69
Table 2.14. Durées d’exécution de chaque algorithme……………………………………….72
Table 2.15. Les différents nombres de travaux testés par algorithme4………………….……72
Chapitre 3.
Table 3.1. Durées d’exécution d’un problème flow-shop…………………………………….76
v
Liste des tables
Table 3.2. Durées d’exécution d’un problème flow-shop…………………………………….77
Table 3.3. Comparaison par rapport à la borne inférieure……………………………………81
Table 3.4. Comparaison par rapport aux résultats trouvés par Lingo………………...………84
Table 3.5. Récapitulatif sur l’état de travail avec Lingo……………………………………...85
Table 3.6. Cas de trois travaux……………………………………………………………….96
Table 3.7. Cas de quatre travaux……………………………………………………………..96
Table 3.8. Cas de cinq travaux……………………………………………………………….96
Table 3.9. Cas de six travaux…………………………………………………………………96
Table 3.10. Cas de sept travaux………………………………………………………………97
Table 3.11. Cas de huit travaux………………………………………………………………97
Table 3.12. Cas de neuf travaux……………………………………………………………...97
Table 3.13. Cas de dix travaux……………………………………………………………….97
Table 3.14. Nombre de solutions optimales trouvées par NIR……………………………….98
Table 3.15. Caractéristiques des problèmes générés…………………………………………99
Table 3.16. Cas de cinq machines…………………………………………………………..100
Table 3.17. Cas de dix machines……………………………………………………………100
Table 3.18. Cas de quinze machines………………………………………………………..100
Table 3.19. Cas de vingt machines………………………………………………………….100
Table 3.20. Cas de vingt cinq machines……………………………………………………..101
Table 3.21. Cas de trente machines………………………………………………………….101
Table 3.22. Cas de cinq machines…………………………………………………………...104
Table 3.23. Cas de dix machines…………………………………………………………….104
Table 3.24. Cas de quinze machines…………………………………………………….…..105
Table 3.25.Comparaison entre les résultats de NIR et ceux de H…………………………...106
Table 3.26. Comportement de NIR vis-à-vis la borne inférieure…………………...……….107
Table 3.27. Variation des moyennes………………………………………………………...113
Table 3.28. Variation des maximums……………………………………………………….113
Table 3.29. Variation des minimums………………………………………………………..113
Table 3.30. Comparaison de H3 par rapport à la borne inférieure pour un nombre de travaux
supérieur à 30………………………………………………………………………………..115
Table 3.31.Variation du nombre de machines nécessaires en fonction de n………………..115
Chapitre 4.
Table 4.1. Durées d’exécution d’un problème flow-shop……………………………….….123
vi
Liste des figures
Chapitre 1.
Figure 1.1. Exemple de diagramme de Gantt………………………………………………….7
Figure 1.2. Flow-shop sans contrainte no-idle....................................................................….25
Figure 1.3. Flow-shop avec contrainte no-idle…....................................................................25
Figure 1.4. Diagramme de Gantt d’un ordonnancement flow-shop…………………………..27
Figure 1.5. Ordonnancement des travaux de la table 1.5……………….…………………….32
Figure 1.6. Ordonnancement des travaux de la table 1.6……………………….…………….33
Figure 1.7. Ordonnancement des travaux du problème équivalent……………………………36
Chapitre 2.
Figure 2.1. Les différentes branches du problème de la table 2.1.……………...……………44
Figure 2.2. Ordonnancement selon l'ordre de Johnson du problème flow-shop de la table
2.10……………………………………………………………………………………………68
Chapitre 3.
Figure 3.1. Ordonnancement no-idle sur M2 et M3 …………………………………..………77
Figure 3.2. Introduction de l’ordonnancement sur M1………………………………………..77
Figure 3.3. Travaux ordonnés sans temps mort sur les trois machines………………………78
Figure 3.4. Variation du nombre de cas bons en fonction du nombre de travaux……………81
Figure 3.5. Comparaison entre la borne inférieure et les résultats de Lingo…………………86
Figure 3.6. Comparaison entre la borne inférieure et les résultats de l’algorithme de type
séparation et évaluation…..………………………………………………..………………….87
Figure 3.7. Evaluation de la distance………………………………………………………....93
Figure 3.8. Les résultats de l'heuristique pour n<=10 et m<=30……………………………..98
Figure 3.9. Comparaison du comportement de l’heuristique avec celui de la résolution par
Lingo en fonction de m……………………………………………………………………...102
Figure 3.10. Comparaison du comportement de l’heuristique avec celui de la résolution par
Lingo en fonction de n…………………………………………………………………..…..102
vii
Liste des figures
Figure 3.11. Evolution du nombre de cas ayant un rapport inférieur à 5% en fonction du
nombre de travaux…………………………………………………………………………...103
Figure 3.12. Evolution du nombre de cas ayant un rapport inférieur à 5% en fonction du
nombre de machines…………………………………………………………………………103
Figure 3.13. Evolution de la moyenne du rapport……………………………………….…..113
Figure 3.14. Comparaison entre le C max obtenu par H3 et la borne inférieure…………...113
Chapitre 4.
Figure 4.1. Dégradation du makespan du F 3 / no − idle / C max au F 3 // C max …………120
Figure 4.2. Dégradation du makespan du F 4 / no − idle / C max au F 4 // C max ………...120
Figure 4.3. Dégradation du makespan du F 5 / no − idle / C max au F 5 // C max ………...120
Figure 4.4. Probabilité de dégradation du F / no − idle / C max au F // C max (350 cas) …120
Figure 4.5. Flow-shop sans contrainte no-idle ………………………………………………123
Figure 4.6. Flow-shop avec contrainte no-idle……...............................................................123
Figure 4.7. Contrainte no-idle relaxée……………………………………………………….124
Figure 4.8. Schéma du travail……………………………………………………………….130
Figure 4.9. Cas de trois machines…………………………………………………………...132
Figure 4.10. Cas de quatre machines………………………………………………………..132
Figure 4.11. Cas de cinq machines………………………………………………………….132
Figure 4.12. Dégradation du makespan du F 3 / no − idle / C max au F 3 // C max ………132
Figure 4.13. Evolution du nombre des cas où FSirj est meilleur que OPTij en fonction du
nombre des machines.……………………………………………………………………….133
Figure 4.14. Etude du rapport OPTr1-FSir1/OPTr1 en fonction du nombre de machines…135
Figure 4.15. Etude du rapport OPTr2-FSir2/OPTr2 en fonction du nombre de machines....135
Figure 4.16. Evolution de la moyenne du rapport OPTr1-FSir1/OPTr1 en fonction du nombre
de travaux pour chaque nombre de machines……………………………………………....135
Figure 4.17. Evolution de la moyenne du rapport OPTr2-FSir2/OPTr2 en fonction du nombre
de travaux pour chaque nombre de machines…………………………………………….....135
viii
Introduction
Dans tout système multitâche, l’ordonnancement est l’un des problèmes centraux. On dit
qu’on a affaire à un problème d’ordonnancement lorsqu’on doit programmer l’exécution
d’une réalisation en attribuant des ressources aux tâches et en fixant les dates d’exécution de
celles-ci. Cette programmation se fait alors en vue d’optimiser un certain critère tel que la
minimisation de la date d’achèvement de la réalisation, ou l’optimisation de l’utilisation des
ressources sous des contraintes de durée. Les problèmes d’ordonnancement apparaissent, par
exemple, en informatique (les tâches sont alors des processus informatiques et les ressources
sont des processeurs et de la mémoire) ou dans l’industrie (dans un atelier de production, les
tâches sont des traitements à appliquer à des pièces et les ressources sont constituées par les
machines et le personnel).
Les problèmes d’ordonnancement de la production ont fait l’objet d’un très grand nombre de
travaux publiés dans la littérature scientifique ainsi que d’un certain nombre d’ouvrages dont
[Baker, 1974], [Conway et al. 1976], [Brucker, 1995], [Pinedo, 1995] et [Blazewicz et al.,
1996]. Deux voies de résolution sont considérées : donner une solution exacte selon une
stratégie connue, ou bien donner des heuristiques qui permettent d’obtenir des solutions
approchées ayant un écart raisonnable par rapport à la solution optimale ou par rapport à une
borne inférieure calculée. Cependant, dans la quasi-totalité des travaux effectués jusqu’ici, on
s’est peu intéressé à la contrainte « no-idle » qui fait l’objet de cette thèse. Elle signifie que
chaque fois qu’un équipement est activé, il ne doit pas s’arrêter entre sa première et sa
dernière utilisation. La contrainte no-idle a été définie initialement pour des systèmes discrets
nécessitant un fonctionnement en continu, c’est-à-dire sans arrêt soit pour des raisons de
contraintes technologiques (température d’outillages dans le cas d’une ligne de fabrication de
noyaux en fonderie), soit pour des contraintes économiques (coût de l’arrêt d’une ligne
d’assemblage de véhicules automobiles, coût de l’arrêt d’une ligne de coulée). Les quelques
1
Introduction
travaux effectués dans ce cadre se sont intéressés à des cas particuliers [Adiri et al., 1982],
[Narasimhan et Panwalker, 1984], [Narasimhan et Mangiameli, 1987] et [Giaro, 2001].
Actuellement, de nouvelles recherches sont faites pour le cas d’une seule machine [Valente et
Alves, 2003a] [Valente et Alves, 2003b]. Les auteurs proposent des heuristiques donnant un
ordonnancement vérifiant la contrainte no-idle et minimisant la somme des avances et des
retards. Baptiste et Hguny [Baptiste et Hguny, 1997] sont les premiers à avoir abordé le
problème d’ordonnancement d’un flow-shop de permutation avec contrainte no-idle et critère
makespan (minimisation de la plus grande date d’achèvement). Leurs résultats ont constitué le
point de départ des travaux de cette thèse. Nous nous sommes intéressés, en premier lieu, à
approfondir l’étude de cette contrainte et à l’étendre au cas plus général des ordonnancements
flow-shop. En deuxième lieu, nous avons abordé l’étude de la relaxation de la contrainte noidle en transformant celle-ci d’une contrainte stricte en un critère à minimiser. La relaxation
s’impose lorsque la main d’œuvre nécessite une organisation discontinue du travail avec,
néanmoins, minimisation du nombre des arrêts, ou bien lorsqu’on a besoin, dans la production
no-idle, d’optimiser la programmation d’un certain nombre de temps d’arrêt pour raison de
maintenance par exemple.
Le problème de l’ordonnancement flow-shop à contrainte « no-idle » et critère makespan
(noté F / no − idle / C max ) est prouvé être NP-difficile. Ce pourquoi, nous avons choisi,
tout d’abord, d’étudier de façon fine une solution exacte utilisant un algorithme optimisé de
type séparation et évaluation applicable au cas d’un flow-shop de permutation. Puis, nous
nous sommes attachés à développer un certain nombre d’heuristiques.
Le présent mémoire est organisé en quatre chapitres :
- Le premier chapitre présente les éléments essentiels qui introduisent et préparent la
formulation des problèmes étudiés. Nous commençons par un rapide rappel de la théorie de
l’ordonnancement dans le but de situer le modèle du flow-shop parmi les autres modèles
classiques ; nous adoptons pour ces modèles la notation définie par Blazewicz [Blazewicz et
al., 1996]. Nous donnons également un bref rappel des définitions et des concepts de base de
la théorie de la complexité afin de faciliter la lecture des preuves de complexité mais aussi de
justifier la démarche adoptée par la suite. Nous précisons que les méthodes de résolution d’un
problème d’ordonnancement se classent en deux sous-classes que sont les méthodes dédiées
et les méthodes génériques. Dans une deuxième partie de ce chapitre, nous présentons les
différents travaux ayant traité des problèmes flow-shop sans temps d’arrêt (no-idle) sur les
2
Introduction
machines ainsi qu’une analyse de complexité du problème principal traité dans cette thèse à
savoir le flow-shop de permutation avec la contrainte no-idle.
- Le deuxième chapitre est consacré à la résolution exacte du problème F / no − idle / C max .
Baptiste et Hguny [Baptiste et Hguny, 1997] ont proposé, à cette fin, un algorithme de type
séparation et évaluation qui adopte un critère d’optimisation s’appuyant sur une hypothèse
restrictive. Nous reprenons cet algorithme et nous généralisons son applicabilité. Ce faisant,
nous développons un certain nombre de propriétés et de résultats utiles, notamment pour ce
qui concerne la complexité de résolution.
- Dans le troisième chapitre, une heuristique de résolution en O(n * log(n)), n étant le nombre
de travaux à ordonner, est proposée pour le cas d’un flow-shop à contrainte no-idle et à trois
machines. Cette heuristique exploite la règle de Johnson [Johnson, 1954] définie pour le cas
d’un problème flow-shop à deux machines. La performance de cette heuristique est évaluée
par rapport à une borne inférieure calculée ainsi que par rapport au résultat trouvé en utilisant
un solveur universel (Lingo) [Lindo, 1999]. Nous étudions ensuite une résolution moins fine
mais applicable à un nombre m quelconque de machines (m ≥ 2) et ce, en empruntant une
modélisation sous la forme d’un problème de voyageur de commerce. Pour cela, nous
présentons une étude bibliographique sur les différents types de problèmes de voyageur de
commerce ainsi qu’un bref historique sur les méthodes de résolution existantes. Parmi ces
méthodes, la « méthode de la plus proche insertion » s’avère être celle qui s’adapte le mieux
au problème étudié. Nous développons cette adaptation et nous comparons ses résultats : (i)
par rapport aux solutions exactes calculées par énumération, (ii) par rapport aux résultats
obtenus à l’aide du solveur Lingo et (iii) par rapport aux résultats trouvés par l’algorithme de
type séparation et évaluation étudié dans le deuxième chapitre. Dans la dernière partie de ce
chapitre, le cas particulier d’un atelier de fonderie de type flow-shop hybride (i.e. à étages) est
présenté puis modélisé et résolu en étendant les résultats trouvés pour le cas simple du flowshop no-idle à trois machines.
- Dans le quatrième chapitre, nous étudions la relaxation de la contrainte no-idle pour le cas
où le nombre de machines est limité à 5 alors que le nombre de travaux est quelconque. Nous
introduisons alors la notation F / h − idle / C max pour formuler les problèmes no-idle dans
lesquels ″h″ arrêts sont permis. Ce chapitre commence par une synthèse bibliographique sur
3
Introduction
l’utilisation des insertions d’un ou de plusieurs temps d’arrêts dans un ordonnancement noidle afin d’optimiser un critère particulier (minimisation des avances, minimisation des
retards, etc). Nous nous intéressons ensuite à l’optimisation du C max avec la relaxation de la
contrainte no-idle à un ou deux arrêts autorisés. Dans un premier temps, nous étudions la
meilleure insertion d’un temps d’arrêt dans une solution no-idle donnée, qui optimise le
C max .
Le résultat trouvé s’applique à un nombre de machines quelconque. Dans un
deuxième temps, nous rapportons une expérimentation effectuée sur un nombre relativement
important d’exemples et qui consiste à calculer une solution à des problèmes
F / 1 − idle / C max ou F / 2 − idle / C max de deux manières : (i) en partant d’une solution
F / no − idle / C max et en cherchant la meilleure insertion d’un ou deux temps d’arrêt et (ii)
en partant d’une solution F // C max et en réduisant à un ou deux le nombre de temps d’arrêt.
Une conclusion générale récapitule et commente les résultats de cette thèse puis introduit
quelques nouvelles directions de recherche qu’il nous semble intéressant de suivre.
4
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
5
Chapitre 1 : Ordonnancement no-idle
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.
6
Chapitre 1 : Ordonnancement no-idle
Affectation
J3
J1
J2
J2
J3
Ji
J1
Machines
J1
J2
Temps mort
J3
Temps
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].
7
Chapitre 1 : Ordonnancement no-idle
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″ (α/β/δ).
8
Chapitre 1 : Ordonnancement no-idle
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
9
Chapitre 1 : Ordonnancement no-idle
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
10
Chapitre 1 : Ordonnancement no-idle
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 sousensemble contient au moins un ordonnancement optimal relativement à ce critère.
11
Chapitre 1 : Ordonnancement no-idle
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.
12
Chapitre 1 : Ordonnancement no-idle
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 x1 , x 2 ,..., x n , x 1 , x 2 ,..., x n où x i
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
13
Chapitre 1 : Ordonnancement no-idle
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 , F 2 // C max …).
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 // L max
[Jackson, 1955].
14
Chapitre 1 : Ordonnancement no-idle
L’algorithme de Johnson est optimal pour le problème F 2 // C max [Johnson, 1954]. Il
consiste à appliquer, pas à pas, la règle suivante : « si Ji et Jj sont deux travaux de durées
respectives ( pi ,1, pi , 2) et ( pj ,1, pj , 2) sur les machines 1 et 2 et si min( pi ,1, pj , 2) ≤ min( pi , 2, pj ,1) alors
Ji est placé avant Jj ». Cet algorithme revient à partitionner les travaux en deux ensembles : le
premier contient tous les travaux vérifiant pj ,1 < pj , 2 et le second tous les travaux avec
pj ,1 > pj , 2 . Les restants (ayant pj ,1 = pj , 2 ) peuvent être mis dans l’un ou l’autre. Les travaux du
premier ensemble seront ordonnés selon l’ordre croissant de pj ,1 (SPT) et ceux du second
ensemble selon l’ordre décroissant de pj , 2 (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 P // C max 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 F // C max , 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
15
Chapitre 1 : Ordonnancement no-idle
pour appréhender de tels problèmes est celle de Bruno [Bruno et al., 1974] qui résout
_
optimalement le problème Q // C . 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 z = ∑ ∑ ∑ x(i, j , k ) * k * p i , j où pi, j est la durée opératoire du
i
j
k
travail Ji sur la machine Mj, sous les contraintes :
n
∑ x(i, j, k ) ≤ 1 ∀j, k
i =1
m
n
∑ ∑ x(i, j, k ) = 1 ∀i
j =1 k =1
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
16
Chapitre 1 : Ordonnancement no-idle
é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 sousensemble 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
17
Chapitre 1 : Ordonnancement no-idle
(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
18
Chapitre 1 : Ordonnancement no-idle
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.
19
Chapitre 1 : Ordonnancement no-idle
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 noptimale 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.
20
Chapitre 1 : Ordonnancement no-idle
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 savoirfaire 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
21
Chapitre 1 : Ordonnancement no-idle
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
22
Chapitre 1 : Ordonnancement no-idle
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]), F // C max
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.
23
Chapitre 1 : Ordonnancement no-idle
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
24
Chapitre 1 : Ordonnancement no-idle
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 F / no − idle / C max .
Ji
M1
J1
J2
M2
Temps mort
J3
J1
J2
J3
M3
J1
5
Affectation
10
J2
15
J3
20
25
30
Figure 1.2. Flow-shop sans contrainte no-idle
M1
Ji
J1
J2
J3
M2
J1
Temps mort
J2
M3
J3
J1
5
10
Affectation
15
J2
20
J3
25
30
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 flowshop 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 F / no − idle / C max [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
25
Chapitre 1 : Ordonnancement no-idle
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 p i(1) = 0.4 * p i(,21) + 0.6 * p i(,22) (où p i(k ) désigne la durée d’exécution du
travail i à l’étage k et p i(,2j) 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 ∆ i = p i(,21) − p i(1) et λ i = p i(,22) − p i(1) . 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 ∆ i + λ i croissant. La règle MD consiste à classer les
travaux par ∆ i + λ i croissant. S'il y a indétermination pour la ième position alors on choisit
le travail Jh tel que ∆ h + λ[ i − 1] ≥ 0 . 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.
26
Chapitre 1 : Ordonnancement no-idle
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 F / no − wait / C max .
Bien que s’agissant des problèmes F // C max , 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
p1,1
p2,1
M2
p3,1
E1
p1,2
M3
p2,2
p3,2
E2
p1,3
p2,3
p3,3
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 :
D = E + 2 * E avec E = p − p , et E = E + p − p
1
1, 2
2
1
2 ,1
1,2
2
1
2, 2
1, 3
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 :
m −1
Di , j = ∑ k * Ek , avec E 0 = 0 et Ek = max(0, E k −1 + p j , k − p i , k +1 ),
k =1
pour k = 1.. m-1, et Di, i = HV (une grande valeur).
27
Chapitre 1 : Ordonnancement no-idle
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
O = ( P *, Q *) et Di , P* = HV , pour i = 1 .. n.
3. soit (Q*, R*) = (Q*,R) / DQ*,R = minj DQ*,j
O = O || R* et Di ,Q* = HV , 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
28
Chapitre 1 : Ordonnancement no-idle
-
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.
29
Chapitre 1 : Ordonnancement no-idle
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 C max 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 −1
r
Er = max ⎧⎨0, (∑ pk , j + pl , r − 1 + Er − 1) − ∑ pk , j ⎫⎬
j =1
⎩ j =1
⎭
= max{0, pl , r − 1 + Er − 1 − pk , r} avec E1 = 0 et D (k , l ) = ∑ r * Er .
m
r =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 ( C j 0 ,1 = max{C j0 −1, l , C j0 , l −1 }+ p j 0 , l )
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
F / no − idle / ∑ C i et F / no − wait / ∑ C i 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
max
(Ci , j ) − min
( Si , j ) = ∑ p i , j
i
i
i =1
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.
30
Chapitre 1 : Ordonnancement no-idle
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 F 2 / no − idle / ∑ Ci , 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 F 2 / no − idle / ∑ Ci 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 F / no − idle / ∑ Ci 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 :
[
m −1
i −1
k =1
k =1
Min
v[ i ] = n * ∑ pi , k + (i − 1) * pi , m − ∑ pk , m
i
]
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 ∑ C i , 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 F / no − idle / ∑ Ci 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
n
k =2
k = i +1
Min
v [ i ] = n * ∑ p i , k + ( n − i ) * p i , m − ∑ pk , m
i
]
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
31
Chapitre 1 : Ordonnancement no-idle
temps morts oblige à procéder à un tassement vers la droite. Sur la dernière machine,
l’optimisation de ∑ C i 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
F / no − idle / C max dans le cas des séries de machines dominantes puis ont proposé une
solution exacte du problème général F / no − idle / C max . 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.
M1
M2
M3
M2
M3
M4
J1
5
10
10
15
J2
20
20
J3
25
30
35
J4
40
45
Figure 1.5. Ordonnancement des travaux de la table 1.5
32
J5
50
55
60
Chapitre 1 : Ordonnancement no-idle
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
M1
M2
M3
M4
J1
5
10
15
20
J2
25
J3
30
35
40
J4
45
50
J5
55
60
65
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 :
m −1
Théorème 1.5. Tout ordonnancement commençant par un travail qui minimise ∑ pi , j est un
j =1
ordonnancement de permutation optimal pour F / no − idle / C max 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 :
max
( pi , j ) ≤ min
( pi , j + 1)
i
i
i
i −1
k =1
k =1
∀ i, j ∑ pk , j ≤ pi , j + ∑ pk , j + 1 et Ci , j < pi , j + Ci − 1, j + 1
m −1
n
j =1
i =1
alors, pour chaque ordonnancement S, on a C max = ∑ p1, j + ∑ p i , m
33
Chapitre 1 : Ordonnancement no-idle
et le second terme est une constante.
m
Théorème 1.6. Tout ordonnancement commençant par un travail qui minimise ∑ pi , j est un
j =2
ordonnancement de permutation optimal pour
F / no − idle / C max
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 :
min
( pi , j ) ≥ max
( pi , j + 1)
i
i
i
i −1
k =1
k =1
∀ i , j ∑ p k , j ≥ pi , j + ∑ pk , j + 1
m
n
j=2
i =1
alors, pour chaque ordonnancement S, on a C max = ∑ p n , j + ∑ p i ,1
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.
34
Chapitre 1 : Ordonnancement no-idle
-
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
O / no − wait & idle, M = path / C max et O / no − wait & idle, M = cycle / C max sont NPdifficiles. 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
F / no − wait & idle, M = cycle / est NP-complet, tandis que la recherche d’une optimisation
F / no − wait & idle, M = path / C max 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
F / no − wait & idle, M = path / C max . 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 O / no − wait & idle, M = tree / C max et
O / no − wait & idle, M = unicycle / C max .
2.3. Analyse de la complexité
Le problème F / no − idle / C max 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
35
Chapitre 1 : Ordonnancement no-idle
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 F 3 // C max
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 F 3 / no − idle / C max est
NP-complet au sens fort. La complexité du problème F 3 / no − wait / C max 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 F 3 / no − idle / C max , 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, 1 ≤ i < n
pi,1 = 2B
pi,2 =B
pi,3 = 2B
Travail Jn
pn,1 = 2B
pn,2 = B
pn,3 = 0
Travail Ji, n < i ≤ 4n
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 :
∑ ai =nB et B / 4< ai ≤ B / 2
4n
i = n +1
n
0
Figure 1.7. Ordonnancement des travaux du problème équivalent
36
Chapitre 1 : Ordonnancement no-idle
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 ∑ Ci 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.
37
Chapitre 2
Résolution exacte du problème flow-shop
avec contrainte no-idle
Baptiste et Hguny, dans [Baptiste et Hguny, 1997], ont étudié une résolution exacte du
problème F / no − idle / C max par un algorithme de type séparation et évaluation.
Cependant, l’optimisation préconisée pour cet algorithme s’appuie sur une hypothèse
restrictive qui limite le champ d’application dans la pratique. Nous allons commencer par
rappeler cet algorithme puis nous étudierons son extension de façon à lever l’hypothèse
restrictive ; ce faisant, nous mettrons en évidence certaines propriétés particulières. Nous
consacrons le reste du chapitre à une expérimentation des performances du nouvel
algorithme.
1. L’algorithme de Baptiste et Hguny
L’algorithme de type séparation et évaluation proposée par Baptiste et Hguny, dans [Baptiste
et Hguny, 1997], est fondé sur le calcul d’une borne inférieure au niveau de chaque nœud de
l’arbre de recherche de la solution. La définition de cette borne inférieure s’appuie sur une
propriété et un corollaire.
1.1. Résultats préliminaires [Baptiste et Hguny, 1997]
Propriété 2.1. Le C max d'un problème F / no − idle / C max à m machines et n travaux
peut être évalué par la somme de m-1 dates d'achèvement de m-1 problèmes F 2 // C max .
Preuve. Soient S une séquence et C(S) sa date d’achèvement dans un problème flow-shop noidle. On note par Sj la date de début de cette séquence sur la machine Mj et pi , j la durée
d’exécution du travail Ji sur la machine Mj :
38
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
n
Sj + 1 = Sj + Cj , j + 1( S ) − ∑ pi , j + 1
i =1
où Cj , j + 1( S ) est la date d’achèvement de la séquence S sur le problème flow-shop à deux
machines Mj,Mj+1.
m −1
m
n
Alors : Sm = S 1 + ∑ Cj , j + 1( S ) − ∑ ∑ pi , j
j =1
j = 2 i =1
m −1
m
n
n
Et Cm = S 1 + ∑ Cj , j + 1( S ) − ∑ ∑ pi , j + ∑ pi , m
j =1
j = 2 i =1
m −1
m −1
j =1
j = 2 i =1
i =1
n
Cm = S 1 + ∑ Cj , j + 1( S ) − ∑ ∑ pi , j , où Cm est la date d’achèvement de la séquence S sur la
dernière machine.
m −1
En posant S1 = 0, on a Cm = ∑ Cj , j + 1( S ) − K , où K est une constante.
j =1
Corollaire 2.1. Le problème F / no − idle / C max peut être résolu en minimisant :
m −1
min
(∑ Ck , k + 1( S )) où S est l'ensemble des n! séquences.
S
k =1
Preuve. Elle découle de la preuve de la propriété 2.1.
Remarque :
On déduit de la propriété 2.1 ainsi que du corollaire 2.1 que, si JO{ j , j +1}(G ) est l'ordre de
Johnson des travaux de G sur les machines Mj,Mj+1 et Cj , j + 1( JO{ j , j +1}(G )) est le C max
associé, alors un minorant de tout ordre no-idle est :
m −1
m −1
j =1
j = 2 i =1
n
LB = ∑ Cj , j + 1( JO{ j , j +1}(G )) − ∑ ∑ pi , j
Hypothèse 2.1. Dans un problème F 2 // C max sur un ensemble de travaux G, avec P un
sous-ensemble de travaux interdits en première position et D un sous-ensemble de travaux
interdits en dernière position ( P ⊂ G, D ⊂ G ), un ordonnancement optimal est donné par
l'ordre de Johnson modifié selon les règles suivantes :
-
Si le premier élément placé par l'ordre de Johnson appartient à P alors avancer en
première position le premier élément dans cet ordre appartenant à G-P.
-
Si le dernier élément placé par l'ordre de Johnson appartient à D alors déplacer en dernière
position le dernier élément dans cet ordre appartenant à G-D.
39
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
1.2. Arbre de recherche
La séquence est construite en plaçant les travaux l’un après l’autre selon un critère de choix
qui est évalué à chaque pas. Plus précisément, on part avec deux séquences Pre et Post vides
puis, à chaque nœud, on choisit un nouveau travail pour le placer entre Pre et Post, soit juste
après Pre soit juste avant Post ; la seconde branche issue du même nœud doit alors s’interdire
de placer ce même travail dans la même position. Ainsi, à chaque nœud k de l'arbre on a :
• Prek : une séquence de travaux déjà ordonnés qui débute la permutation,
• Postk : une séquence de travaux déjà ordonnés qui termine la permutation,
• Gk : un ensemble de travaux non encore ordonnés,
• Pk : un sous-ensemble de travaux de Gk qui ne doivent pas être placés en première
position,
• Dk : un sous-ensemble de travaux de Gk qui ne doivent pas être placés en dernière
position.
Schéma de branchement. Pour choisir le travail à ordonner, pour chaque nœud k on
calcule :
* ∀x ∈ Gk − Pk , C1k , j ( x) = Cj , j + 1( Prek //{x} // JO{ j , j +1}(Gk − {x}) // Postk )
* ∀x ∈ Pk , C1k , j ( x) = +∞
* ∀x ∈ Gk − Dk , C 2 k , j ( x) = Cj , j + 1( Prek // JO{ j , j +1}(Gk − {x}) //{x} // Postk )
* ∀x ∈ Dk , C 2k , j ( x) = +∞
m −1
* ∀x ∈ Gk − Pk , C1k ( x) = ∑ C1k , j ( x)
j =1
m −1
* ∀x ∈ Gk − Dk , C 2k ( x) = ∑ C 2k , j ( x)
j =1
Toujours d’après la propriété 2.1 et le corollaire 2.1, et pour Prek et Postk arrêtés, C1k , j ( x) et
C 2k , j ( x) donnent les valeurs minimales du C max pour la restriction du problème aux
machines Mj,Mj+1 en plaçant x juste après Prek ou juste avant Postk et C1k ( x) et C 2k ( x)
donnent des minorants du C max sur l'ensemble de toutes les machines.
Soient x1 = arg min (C1k ( x)) et x 2 = arg min (C2k ( x)) . Le max(C1k ( x1), C 2k ( x 2)) est une borne
x∈Gk − Pk
x∈Gk − Dk
inférieure du problème F / no − idle / C max pour Prek et Postk fixées. Le schéma de
branchement consiste en un choix entre x1 et x2 qui maximise C1k ( x) et C2k(x). La borne
40
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
inférieure de l'autre branche est : y1 si c’est x1 qui a été choisi ou bien y2 si c’est x2 qui a été
choisi, tels que: y1 = max( x∈Gkmin
(C1k ( x)), C 2k ( x 2)) et y 2 = max(C1k ( x1), x∈Gkmin
(C 2 k ( x))) .
−{ x 1}− Pk
− { x 2 }− Dk
Algorithme1 :Treat(Prek, Gk, Postk, Pk, Dk, mini)
Début
Si (|Gk| = 1) alors
Calculer V = C1k ( x) = C 2k ( x)
Si (V < mini) alors mini := V fsi
Sinon Pour tout x dans Gk et tout j faire
Calculer: C1k , j ( x) , C 2k , j ( x) , C1k ( x) et C 2k ( x)
Fin Pour
Calculer x1 et x2.
Si ( C1k ( x1) >= C 2k ( x 2) ) et ( C1k ( x1) < mini) alors
Treat(Prek+{x1}, Gk-{x1}, Postk, ∅, Dk, mini)
Calculer y1.
Si (y1 < mini) alors
Treat(Prek, Gk, Postk, Pk+{x1}, Dk, mini)
Fin Si
Fin Si
Si ( C 2k ( x 2) >= C1k ( x1) ) et ( C 2k ( x 2) < mini) alors
Treat(Prek, Gk-{x2},{x2}+Postk, Pk, ∅, mini)
Calculer y2.
Si (y2 < mini) alors
Treat(Prek, Gk, Postk, Pk, Dk+{x2}, mini)
Fin Si
Fin Si
Fin Si
Fin.
Le premier appel de cet algorithme se fait avec les paramètres suivants : Treat(∅, {1..n}, ∅,
∅, ∅, +∝)
1.3. Exemple
Soit le problème flow-shop de permutation à 4 machines (M1, M2, M3, M4) et 5 travaux (a, b,
c, d, e) de la table 2.1.
41
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
a
b
c
d
e
M1
9
4
3
1
1
M2
6
1
7
10
8
M3
8
4
6
4
6
M4
1
10
4
4
3
Table 2.1. Problème flow-shop à 4 machines et 5 travaux
L'ordre de Johnson pour chacun des trois sous-problèmes donne :
Machines 1-2 : d-e-c-a-b, C max = 33.
Machines 2-3 : b-a-e-c-d, C max = 36.
Machines 3-4 : b-c-d-e-a, C max = 29.
3
Une borne inférieure de
∑C
j , j + 1( JO{ j , j +1})
est alors égale à 98.
j =1
Au premier nœud, les valeurs obtenues en considérant l’ordonnancement de chaque travail en
première ou en dernière position sont données par la table 2.2. La décision est de placer d en
3
dernière position. A partir de cette table, on sait que le coût ∑ Cj , j + 1 de toute solution
j =1
conforme à cette décision est bornée inférieurement par 101, et toute autre décision (d interdit
en dernière position) est bornée inférieurement par 102.
{a,b,c,d,e}
Début
a
b
c
d
e
M1-M2
adecb:41
bdeca:36
cdeab:35
decab:33
edcab:32
M2-M3
abecd:36
baecd:36
cbaed:36
dbaec:38
ebacd:38
M3-M4
abcde:33
bcdea:29
cbdea:29
dbcea:29
ebcda:29
110
101
100
100
100
M1-M2
decba:33
decab:33
deabc:33
ecabd:33
dcabe:33
M2-M3
becda:40
aecdb:39
baedc:38
baecd:36
bacde:38
M3-M4
bcdea:29
cdeab:38
bdeac:32
bcead:32
bcdae:31
102
110
103
101
102
C1k(x)
Fin
C2k(x)
Table 2.2. Première évaluation
42
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
La deuxième décision est prise après l'évaluation donnée dans la table 2.3. Le travail e est
choisi pour être placé en première position. Si on ne retient pas cette décision, le coût sera au
moins de 103.
{a,b,c,e}-d
Début
a
b
c
e
M1-M2
aecbd:41
becad:36
ceabd:35
ecabd:33
M2-M3
abecd:36
baecd:36
cbaed:36
ebacd:36
M3-M4
abced:33
bcead:32
cbead:32
ebcad:32
110
104
103
101
M1-M2
ecbad:33
ecabd:33
eabcd:34
cabed:37
M2-M3
becad:36
aecbd:36
baecd:36
baced:36
M3-M4
bcead:32
ceabd:38
beacd:32
bcaed:32
101
107
102
105
C1k(x)
Fin
C2k(x)
Table 2.3. Deuxième évaluation
La prochaine décision, d’après la table 2.4, est de placer b en première position après e.
L'ordonnancement partiel est alors e-b-{a,c}-d. La décision alternative est aussi bornée par
101.
e-{a,b,c}-d
Début
a
b
c
M1-M2
eacbd:34
ebcad:33
ecabd:33
M2-M3
eabcd:36
ebacd:36
ecbad:36
M3-M4
eabcd:37
ebcad:32
ecbad:32
107
101
101
M1-M2
ecbad:33
ecabd:33
eabcd:34
M2-M3
ebcad:36
eacbd:36
ebacd:32
M3-M4
ebcad:32
ecabd:38
ebacd:32
101
107
102
C1k(x)
Fin
C2k(x)
Table 2.4. Troisième évaluation
Suit enfin la décision, d’après la table 2.5, de placer c juste après b. On aboutit à
3
l’ordonnancement e-b-c-a-d dont le coût ∑ Cj , j + 1 est égal à 101. La remontée de l’arbre pour
j =1
le parcours des autres branches n’améliore pas ce résultat.
La figure 2.1 résume les différents branchements établis lors de la résolution du problème de
la table 2.1.
43
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
e-b-{a,c}-d
Début
a
c
M1-M2
ebacd:37
ecabd:33
M2-M3
36
36
M3-M4
ebacd:32
ebcad:32
105
101
M1-M2
ebcad:33
ebacd:37
M2-M3
36
36
M3-M4
ebcad:32
ebacd:32
101
105
C1k(x)
Fin
C2k(x)
Table 2.5. Quatrième évaluation
{e,b},{c},{a,d},∅,∅,∝
101
{e,b},{a,c},{d},∅,∅,∝
101
105
{e},{a,b,c},{d},∅,∅,∝
101
101
∅,{a,b,c,e},{d},∅,∅,∝
101
{e,b},{c},{d},∅,{a} ,∝
{e},{a,b,c},{d},{b},∅,∝
103
∅,{a,b,c,d,e},∅,∅,∅,∝
∅,{a,b,c},{d},{e} ,∅,∝
102
∅,{a,b,c,e},∅,∅,{d} ,∝
Figure 2.1. Les différentes branches du problème de la table 2.1.
1.4. Notations et précision
Si G est un ensemble de travaux et P et D deux sous-ensembles de G, nous notons par
{G/P/D} l’ensemble des permutations de G n’ayant aucun élément de P en première position
et aucun élément de D en dernière position.
{G/P/D} = {x //{G-{x, y}}// y avec x ∉P et y∉D}.
Nous donnons également les définitions suivantes :
44
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
Définition 2.1. Etant donnés G un ensemble de travaux et P un sous-ensemble de G, le
problème F 2 / f − avoid / C max consiste à trouver l’ordonnancement optimal sur deux
machines qui ne fait apparaître aucun élément de P en première position. Cet ordonnancement
serait donc un élément de {G/P/∅}.
Définition 2.2. Etant donnés G un ensemble de travaux et P un sous-ensemble de G, le
problème F 2 / l − avoid / C max consiste à trouver l’ordonnancement optimal sur deux
machines qui ne fait apparaître aucun élément de D en dernière position. Cet ordonnancement
serait donc un élément de {G/∅ /D}.
Définition 2.3. Etant donnés G un ensemble de travaux et P un sous-ensemble de G, le
problème F 2 / f − avoid , l − avoid / C max consiste à trouver l’ordonnancement optimal sur
deux machines qui ne fait apparaître aucun élément de P en première position et aucun
élément de D en dernière position. Cet ordonnancement serait un élément de {G/P/D}.
L’hypothèse 2.1 avancée par Baptiste et Hguny se rapporte en fait à la résolution du problème
F 2 / f − avoid ; l − avoid / C max appliquée aux ensembles de travaux G, P et D avec P ⊂ G
et D ⊂ G. Elle est exploitée dans le schéma de branchement de l’algorithme pour
l’optimisation du calcul de la borne inférieure.
Plus exactement, le calcul des C1k , j est effectué en prenant pour JO{j,j+1}(Gk-{x}) la solution
du problème F 2 / l − avoid / C max appliqué à Gk-{x} et Dk-{x}. De même, le calcul des
C 2k , j
est effectué en prenant pour JO{j,j+1}(Gk-{x}) la solution du problème
F 2 / f − avoid / C max appliqué à Gk-{x} et Pk-{x}. Cependant, la solution supposée par
l’hypothèse n’est pas toujours vérifiée. Il suffit de le vérifier sur l’exemple 2.1.
Exemple 2.1. Soit le problème F 2 / f − avoid / C max de la table 2.6 défini sur G = {J1, J2,
J3, J4, J5} et P = {J1}.
J1
J2
J3
J4
J5
M1
13
8
6
8
4
M2
11
6
5
3
3
Table 2.6. Les durées opératoires d'un problème à cinq travaux
45
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
L'ordre de Johnson est {J1, J2, J3, J4, J5}. La meilleure solution est obtenue en mettant le
travail J3 ou le travail J5 en première position et non pas J2 (voir table 2.7).
Ordre
Date d'achèvement
Ordre
Date d'achèvement
J1, J2, J3, J4, J5
42
J4, J1, J2, J3, J5
46
J2, J1, J3, J4, J5
43
J5, J1, J2, J3, J4
42
J3, J1, J2, J4, J5
42
Table 2.7. Les différents ordres de l'exemple de la table 2.6.
Une solution serait d’énumérer toutes les solutions possibles et de prendre la meilleure. Nous
consacrerons la section qui suit à une étude plus approfondie de cette hypothèse (2.1).
Baptiste et Hguny utilisent aussi le théorème 2.1. dans leur algorithme de type séparation et
évaluation pour améliorer son efficacité.
Théorème 2.1. Dans F 2 // C max , si G est un groupe de travaux qui restent à ordonner entre
deux séquences Pre et Post (Pre-G-Post), alors le plus mauvais C max est obtenu en
considérant pour G l'ordre inverse de Johnson. [Gupta et Reddi, 1978].
2. Etude des problèmes F 2 / f − avoid / C max et F 2 / l − avoid / C max
2.1. Résultats préliminaires
Nous présentons, dans ce paragraphe, un ensemble de théorèmes portant sur les problèmes
F 2 / f − avoid / C max , F 2 / l − avoid / C max et F 2 / f − avoid , l − avoid / C max .
Théorème 2.2. Le problème F 2 / f − avoid / C max admet une solution optimale telle que
tous les travaux, hormis celui de la première position, sont placés selon la règle de Johnson.
Preuve.
Soient G l’ensemble des travaux à ordonner, P le sous-ensemble de G des travaux interdits en
première position et S une séquence des travaux de G selon la règle de Johnson. Deux cas
peuvent se présenter :
46
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
Cas 1. Le premier travail de la séquence S n'appartient pas à l'ensemble P. Alors, cet ordre de
Johnson est optimal pour le problème F 2 / f − avoid / C max .
Cas 2. Le premier travail de la séquence S appartient à l'ensemble P.
Considérons une séquence S' obtenue à partir de S en avançant en première position un travail
de rang k n'appartenant pas à P : S' = (k, 1, 2,…, k-1, k+1,…, n).
Notons par A[i] (respectivement B[i]) la durée opératoire du travail de rang i dans la séquence
S sur la première machine (respectivement deuxième machine) et par X[i] le temps d'arrêt de
la deuxième machine avant de commencer l’exécution du travail de rang i dans S. La date
n
n
i =1
i =1
d’achèvement global est donnée par : C max = ∑ B[i ] + ∑ X [i ]
Avec :
•
X [k ] = A[k ]
•
Pour i ∈ [ 1 .. k-1 ], X [i ] = max(0, A[k ] + ∑ A[ j ] − ( B[k ] + ∑ B[ j ] + X [k ] + ∑ X [ j ]))
•
i
i −1
i −1
j =1
j =1
j =1
Pour i ∈ [ k+1 .. n ],
k −1
i
k −1
i −1
j =1
j = k +1
j =1
j = k +1
i
i −1
i −1
j =1
j =1
j =1
k −1
i −1
j =1
j = k +1
X [i ] = max(0, A[k ] + ∑ A[ j ] + ∑ A[ j ] − ( B[k ] + ∑ B[ j ] + ∑ B[ j ] + X [k ] + ∑ X [ j ] + ∑ X [ j ]))
X [i ] = max(0, ∑ A[ j ] − (∑ B[ j ] + ∑ X [ j ]))
Posons:
•
Y [k ] = A[k ] ,
•
Pour i ∈ [1 .. k - 1], Y [i ] = A[k ] + ∑ A[ j ] − B[k ] − ∑ B[ j ]
•
i
i −1
j =1
j =1
i
i −1
j =1
j =1
Pour i ∈ [k + 1.. n], Y [i ] = ∑ A[ j ] − ∑ B[ j ]
Nous obtenons alors, (1)
X [k ] = A[k ],
j
X [k ] + ∑ X [i ] = max(Y [k ], Y [1], Y [2],..., Y [ j ])
si j < k
i =1
k −1
j
i =1
i = k +1
et X [k ] + ∑ X [i ] + ∑ X [i ] = max(Y [k ], Y [1], Y [2],..., Y [k − 1], Y [k + 1],.., Y [ j ]) si j > k
La séquence considérée ici est S' = (k, 1, 2,…, k-1, k+1,…, n) obtenue à partir de S en
avançant en dernière position un travail de rang k. Ce pourquoi, et en visant la clarté de
l’exposé, nous préférons écrire préféré max(Y[k],Y[1],..,Y[k - 1],Y[k + 1],..,Y[n]), alors que
47
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
s’agissant de l’opérateur max classique, nous aurons pu écrire max(Y[1],..,Y[k-1],
Y[k],Y[k+1],..,Y[n]).
La formule (1) est justifiée ainsi :
X [k ] = Y [k ] = A[k ]
X [k ] + X [1] = Y [k ] + max(0, Y [1] − X [k ]) = max(Y [k ], Y [1])
X [k ] + X [1] + X [2] = X [k ] + X [1] + max(0, Y [2] − X [k ] − X [1])
= max( X [k ] + X [1], Y [2])
= max(max(Y [k ], Y [1]), Y [2])
= max(Y [k ], Y [1], Y [2])
Supposons que ceci est vrai pour tout i, 1 ≤ i ≤ k - 2 :
X [k ] + X [1] + .. + X [i ] = max(Y [k ],Y [1],..,Y [i − 1], Y [i ])
et montrons que cela reste vrai pour i + 1 :
X [k ] + X [1] + .. + X [i ] + X [i + 1] = X [k ] + X [1] + .. + X [i − 1] + X [i ] + max(0, Y [i + 1] − X [k ] −
X [1] − .. − X [i ])
= max(max(Y [k ], Y [1],.., Y [i − 1], Y [i ]), Y [i + 1])
= max(Y [k ], Y [1],.., Y [i − 1], Y [i ], Y [i + 1])
Il est aisé de voir que cette déduction reste valable aussi pour tout i > k.
k −1
n −1
j =1
j = k +1
Le C max sera alors : B[k ] + ∑ B[ j ] + ∑ B[ j ] + max(Y [k ], Y [1],.., Y [k − 1], Y [k + 1]..Y [n])
n
= ∑ B[ j ] + max(Y [k ], Y [1],.., Y [k − 1], Y [k + 1],.., Y [n]) (2)
j =1
La formule (2) a deux composants dont le premier est constant et le deuxième dépend du rang
k du travail déplacé en première position. Or, quel que soit k, la sous-séquence (1, 2,..., k-1,
k+1,..., n) a une durée globale d’exécution minimale puisqu’elle vérifie la règle de Johnson. Il
s’agit
donc
simplement
de
choisir
le
rang
k
qui
minimise
max(Y [k ], Y [1],.., Y [k − 1], Y [k + 1],.., Y [n]) .
Théorème 2.3. Le problème F 2 / l − avoid / C max admet une solution optimale telle que,
hormis celui de la dernière position, tous les travaux sont placés selon la règle de Johnson.
Preuve. Soient G l'ensemble de travaux à ordonner, D un sous-ensemble de G des travaux
interdits en dernière position et S une séquence des travaux de G selon la règle de Johnson.
Deux cas peuvent se présenter :
48
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
Cas 1. Le dernier travail de la séquence S n'appartient pas à l'ensemble D. Alors, cet ordre de
Johnson est optimal pour le problème .
Cas 2. Le dernier travail de la séquence S appartient à l'ensemble D.
Considérons une séquence S' obtenue à partir de S en déplaçant en dernière position un travail
de rang k n'appartenant pas à D : S' = (1, 2,..., k-1, k+1,…n, k)
A[i] (respectivement B[i]) désigne toujours la durée opératoire du travail de rang i dans la
séquence S sur la première machine (respectivement deuxième machine) et X[i] le temps
d'arrêt de la deuxième machine avant de commencer l’exécution du travail de rang i dans S.
n
n
i =1
i =1
La date d’achèvement globale est alors : C max = ∑ B[i ] + ∑ X [i ]
Avec :
•
•
i
i −1
i −1
j =1
j =1
j =1
Pour i ∈ [1 .. k-1], X [i ] = max(0, ∑ A[ j ] − (∑ B[ j ] + ∑ X [ j ]))
Pour i ∈ [k+1 .. n],
k −1
i
k −1
i −1
k −1
i −1
j =1
j = k +1
j =1
j = k +1
j =1
j = k +1
X [i ] = max(0, ∑ A[ j ] + ∑ A[ j ] − (∑ B[ j ] + ∑ B[ j ] + ∑ X [ j ] + ∑ X [ j ]))
•
Pour i = k,
k −1
n
k −1
n
k −1
n
j =1
j = k +1
j =1
j = k +1
j =1
j = k +1
X [i ] = max(0, ∑ A[ j ] + ∑ A[ j ] + A[k ] − (∑ B[ j ] + ∑ B[ j ] + ∑ X [ j ] + ∑ X [ j ]))
n
k −1
n
k −1
n
j =1
j =1
j = k +1
j =1
j = k +1
X [i ] = max(0, ∑ A[ j ] − (∑ B[ j ] + ∑ B[ j ] + ∑ X [ j ] + ∑ X [ j ]))
Posons :
•
•
•
i
i −1
j =1
j =1
Pour i ∈ [ 1 .. k - 1 ], Y [i ] = ∑ A[ j ] − ∑ B[ j ]
k −1
i
k −1
i −1
j =1
j = k +1
j =1
j = k +1
Pour i ∈ [ k + 1 .. n ], Y [i ] = ∑ A[ j ] + ∑ A[ j ] − ∑ B[ j ] − ∑ B[ j ]
k −1
n
k −1
n
j =1
j = k +1
j =1
j = k +1
Y [k ] = A[k ] + ∑ A[ j ] + ∑ A[ j ] − B[k ] − ∑ B[ j ] − ∑ B[ j ]
n
n
j =1
j =1, j ≠ k
Y [k ] = ∑ A[ j ] − ∑ B[ j ]
Nous obtenons alors, (3)
j
∑ X [i] = max(Y [1], Y [2],..., Y [ j ])
i =1
49
Si j < k
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
j
∑ X [i] = max(Y [1], Y [2],..., Y [k − 1], Y [k + 1],.., Y [ j ]) Si j > k
i = 1, i ≠ k
n
∑ X [i] = max(Y [1], Y [2],..., Y [k − 1], Y [k + 1],.., Y [n], Y [k ]) Si j = k
i =1
La séquence considérée ici est S’ = (1, 2,…, k-1, k+1,…, n, k). Encore une fois, nous
préférons avons préféré écrire max(Y [1],.., Y [k − 1], Y [k + 1]..Y [n], Y [k ]) alors que, s’agissant
de l’opérateur max classique, nous aurons pu écrire max(Y [1],.., Y [k − 1], Y [k ], Y [k + 1]..Y [n]) .
La formule (3) peut être justifiée ainsi :
X [1] = Y [1] = A[1]
X [1] + X [2] = X [1] + max(0, Y [2] − X [1]) = max(Y [1], Y [2])
X [1] + X [2] + X [3] = X [1] + X [2] + max(0, Y [3] − X [2] − X [1])
= max(max(Y [1], Y [2]), Y [3])
= max(Y [1], Y [2], Y [3])
Supposons que ceci est vrai pour tout i ≤ k - 2
X [1] + X [2] + .. + X [i − 1] + X [i ] = max(Y [1], Y [2], Y [3],.., Y [i − 1], Y [i ])
et montrons que cela reste vrai pour i + 1 :
X [1] + X [2] + .. + X [i − 1] + X [i ] + X [i + 1] = X [1] + X [2] + .. + X [i − 1] + X [i ] +
max(0, Y [i + 1] − X [1] − X [2] − .. − X [i − 1] − X [i ])
= max(max(Y [1], Y [2],.., Y [i − 1], Y [i ]), Y [i + 1])
= max(Y [1], Y [2],.., Y [i − 1], Y [i ], Y [i + 1])
Il est aisé de vérifier que cette déduction reste valable aussi pour i = k et pour tout i tel que
k+1 ≤ i ≤ n .
k −1
n −1
j =1
j = k +1
Donc, le C max sera: B[k ] + ∑ B[ j ] + ∑ B[ j ] + max(Y [1],.., Y [k − 1], Y [k + 1]..Y [n], Y [k ])
n
C max = ∑ B[ j ] + max(Y [1],.., Y [k − 1], Y [k + 1]..Y [n], Y [k ]) (4)
j =1
Cette formule (4) a deux composants, dont le premier est constant et le deuxième dépend du
rang k du travail déplacé en dernière position. Or, quel que soit k, la sous-séquence (1, 2,….,
k-1, k+1,…, n) a une durée globale d’exécution minimale puisqu’elle vérifie la règle de
50
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
Johnson.
Il
s’agit
donc
simplement
de
choisir
le
rang
k
qui
minimise
max(Y [1],.., Y [k − 1], Y [k + 1],.., Y [n], Y [k ]) .
Théorème 2.4. Le problème F 2 / f − avoid / C max se résout en un temps polynomial.
Preuve. La solution s’obtient à partir de l'ordre de Johnson (complexité en O(n*log(n))) en
évaluant le C max pour n-Card(P) choix possibles en première position (complexité en
O(n2)). La complexité totale est donc en O(n2).
Théorème 2.5. Le problème F 2 / l − avoid / C max se résout en un temps polynomial.
Preuve. La solution s’obtient à partir de l'ordre de Johnson (complexité en O(n*log(n))) en
évaluant le C max pour n-Card(D) choix possibles en dernière position (complexité en
O(n2)). La complexité est donc en O(n2).
Théorème 2.6. Le problème F 2 / f − avoid , l − avoid / C max admet une solution optimale
telle que tous les travaux, hormis celui de la première position et celui de la dernière position,
sont placés selon la règle de Johnson.
Preuve.
La construction peut être faite en partant d’un ordre des travaux de G selon la règle de
Johnson et en déplaçant en première position un travail de rang k n’appartenant pas à P et en
dernière position un travail de rang k’ n’appartenant pas à D choisis de façon à minimiser :
max(Y [k ], max (Y [i ]), Y [k ' ]))
i ≠ k ,i ≠ k '
Théorème 2.7. Le problème F 2 / f − avoid , l − avoid / C max se résout en un temps
polynomial en testant Card(G-P)*Card(G-D) choix possibles de première et de dernière
positions.
Preuve. La preuve se déduit de la construction proposée dans la preuve du théorème 2.6.
51
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
Nous retiendrons des résultats préliminaires démontrés dans ce paragraphe que :
Aussi bien pour le problème F 2 / f − avoid , l − avoid / C max que pour chacun
i)
des sous-problèmes F 2 / f − avoid / C max et F 2 / l − avoid / C max , la recherche
de la solution optimale peut s’appuyer, en point de départ, sur un ordonnancement
selon la règle de Johnson ;
ii)
L’optimisation de cette recherche est à opérer dans le choix des travaux à déplacer
en première et en dernière positions ;
La complexité de cette recherche serait au maximum de l’ordre O(n3) pour le
iii)
problème F 2 / f − avoid , l − avoid / C max et de l’ordre O(n2) pour chacun des
sous-problèmes F 2 / f − avoid / C max et F 2 / l − avoid / C max ;
iv)
Les sous-problèmes
F 2 / f − avoid / C max
et
F 2 / l − avoid / C max
sont
équivalents.
2.2. Optimisation de la recherche de la solution optimale
2.2.1. Algorithme de résolution du problème F 2 / f − avoid / C max
Idée.
Rappelons que, quelle que soit la séquence S = (1, 2, 3,…, n) considérée, le C max peut être
calculé par la formule :
n
C max = ∑ B[ j ] + MY ( S ) avec MY ( S ) = max(Y [1]S , Y [2]S ,.., Y [k ]S ,..Y [n]S )
j =1
Aussi, MY(S) est minimum si S respecte la règle de Johnson.
La recherche de la solution optimale peut donc commencer par la construction d’un
ordonnancement S selon la règle de Johnson :
-
Si le travail en première position de S n’appartient pas au sous-ensemble P, alors S est une
solution optimale pour F 2 / f − avoid / C max .
-
Sinon, il s’agit de déplacer en première position le travail de rang k n’appartenant pas à P
et tel que, pour la nouvelle séquence S’ = (k, 1, 2,..., k–1, k+1,…, n), MY(S’) soit
minimum. Pour optimiser la détermination du rang k, il est à prendre en compte que si :
MY ( S ) = max(Y [1]S , Y [2]S ,.., Y [k ]S ,..Y [n]S )
Alors
MY ( S ' ) = max( A[k ], Y [1]S + A[k ] − B[k ],.., Y [k − 1]S + A[k ] − B[k ], Y [k + 1]S , Y [k + 2]S ,..Y [n])
Autrement dit, par rapport à la formule de MY(S), seuls les Y [i ]S pour i < k sont modifiés.
52
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
Ce qui nous intéresse précisément pour le calcul de MY(S’) est la nouvelle valeur de
max
(Y [i ]S ) .
i =1.. k −1
Algorithme2
Début
Déterminer une séquence S vérifiant la règle de Johnson sur G
Si le premier travail de S n’appartient pas à P alors
S solution du problème F 2 / f − avoid / C max
Sinon
Evaluer les Y [i ]S
Créer MYG[1..n] où MYG[i] contient le maximum des Y [ j ]S pour j de 1 à i -1
Créer MYD[1..n] où MYD[i] contient le maximum des Y [ j ]S pour j de i+1 à n
imin=0 ;
min=HV ; (HV une grande valeur)
Pour k de 2 à n faire
Si le travail de rang k n’appartient pas à P alors
Evaluer m = max( A[k ], MYG[k ] + A[k ] − B[k ], MYD[k ])
Si (m < min) alors
imin=k ;
min=m ;
Fin Si
Fin Si
Fin pour
Avancer en première position le travail de rang imin
Fin Si
Fin.
Remarque importante. L’exploitation de la remarque que, par le déplacement du travail
de rang k en première position, seuls les Y [i ]S pour i < k sont modifiés nous a permis
d’obtenir un algorithme de recherche d’une solution optimale pour le problème
F 2 / f − avoid / C max de complexité de l’ordre de celle de Johnson (i.e. O(n*log(n)).
53
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
2.2.2. Algorithme de résolution du problème F 2 / l − avoid / C max
Algorithme3
Début
Déterminer une séquence S vérifiant la règle de Johnson sur G
Si le dernier travail de S n’appartient pas à D alors
S solution du problème F 2 / l − avoid / C max
Sinon
Evaluer les Y [i ]S
Créer MYG[1..n] où MYG[i] contient le maximum des Y [ j ]S pour j de 1 à i -1
Créer MYD[1..n] où MYD[i] contient le maximum des Y [ j ]S pour j de i+1 à n
imin=0 ;
min=HV ; (HV une grande valeur)
Pour k de 1 à n –1 faire
Si le travail de rang k n’appartient pas à D alors
m = max(MYG[k ], MYD[k ] − A[k ] + B[k ], Y [n] + B[k ] − B[n])
Si (m < min) alors
imin=k ;
min=m ;
Fin Si
Fin Si
Fin pour
Déplacer en dernière position le travail de rang imin
Fin Si
Fin.
Remarque importante. Ici aussi, l’exploitation de la remarque que, par le déplacement du
travail de rang k en dernière position, seuls les Y [i ]S pour i > k sont modifiés nous a
permis d’obtenir un algorithme de recherche d’une solution optimale pour le problème
F 2 / l − avoid / C max de complexité de l’ordre de celle de Johnson (i.e. O(n*log(n)).
54
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
2.2.3. Algorithme de résolution du problème F 2 / f − avoid , l − avoid / C max
Idée.
Soit S = (1, 2, 3,…, n) la séquence obtenue par application de la règle de Johnson. Quatre cas
peuvent se présenter :
Cas 1 : le travail en première position n’appartient pas à P et le travail en dernière position
n’appartient pas à D. S constituerait alors d’emblée une solution optimale.
Cas 2 : le travail en première position appartient à P alors que le travail en dernière
position n’appartient pas à D.
Cas 3 : le travail en première position n’appartient pas à P alors que le travail en dernière
position appartient à D.
Cas 4 : le travail en première position appartient à P et le travail en dernière position
appartient à D.
L’algorithme que nous allons détailler juste après s’applique à n’importe lequel de ces cas et
aboutit à une solution optimale pourvu que le problème en admet une. Il consiste à déterminer
le couple (k1, k2) tel que, en avançant le travail de rang k1 en première position de S et en
déplaçant le travail de rang k2 en dernière position de S, on obtient une solution acceptable
ayant le plus petit C max . Il serait toutefois intéressant de voir si le cas 2 (respectivement le
cas 3) ne se ramène pas simplement à la résolution du problème F 2 / l − avoid / C max
(respectivement F 2 / f − avoid / C max ). Nous présentons alors les théorèmes suivants :
Théorème 2.8. Le problème F 2 / f − avoid , l − avoid / C max se réduit au problème
F 2 / l − avoid / C max si la séquence de Johnson correspondante n’admet pas comme premier
et deuxième travail un élément de P.
Preuve.
Soit S la séquence de Johnson associée au problème F 2 / f − avoid , l − avoid / C max tel que
le premier et le deuxième travail de S n’appartiennent pas à P : S = (1, 2,…, j,…, n).
Soient S’ une séquence déduite à partir de S en déplaçant en dernière position un travail de
rang k dans S et n’appartenant pas à D, S’ = (1, 2,…, k-1, k+1,…, j,…, n, k), et S″ une
séquence déduite à partir de S’ en déplaçant en première position un travail de rang j dans S,
S″ = (j, 1, 2,…, k-1, k+1,…, j-1, j+1,…, n, k). Montrons que S’ est toujours meilleure que S″
pour tout travail k.
55
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
Nous distinguons pour cela deux cas :
♦ Cas 1. A[ j ] ≥ B[ j ]
Nous avons Y [1]S ' = A[1] et Y [1]s " = A[ j ] + A[1] − B[ j ] ,
or Y [1]S "−Y [1]S ' = A[ j ] − B[ j ] , donc C max(S ' ) ≤ C max(S " ) .
♦ Cas 2. A[ j ] ≤ B[ j ]
Nous avons Y [1]S ' = A[1] et Y [ j ]s " = A[ j ] , or les travaux sont selon l’ordre de
Johnson et A[ j ] ≤ B[ j ] , donc A[1] ≤ A[ j ] et C max(S ' ) ≤ C max(S " ) .
Cette preuve reste toujours valable même si le premier travail de S est choisi pour être mis en
dernière position (k = 1) puisque le deuxième travail dans S n’appartient pas à P.
Théorème 2.9. Le problème F 2 / f − avoid , l − avoid / C max se réduit au problème
F 2 / f − avoid / C max , si la séquence de Johnson correspondante n’admet pas comme
dernier et avant dernier travail un élément de D.
Preuve.
Soit S la séquence de Johnson associée au problème F 2 / f − avoid , l − avoid / C max tel que
le dernier et l’avant dernier travail de S n’appartiennent pas à D : S = (1, 2, …, j,…, n).
Soient S’ une séquence déduite à partir de S en déplaçant en première position un travail de
rang k dans S et n’appartenant pas à P, S’ = (k, 1, 2,…, k-1, k+1,…, j,…,n), et S″ une
séquence déduite à partir de S’ en déplaçant en dernière position un travail de rang j dans S,
S″ = (k, 1, 2, …, k-1, k+1, …, j-1, j+1, …, n, j). Montrons que S’ est toujours meilleure que S″
pour tout k.
Nous distinguons pour cela deux cas :
♦ Cas 1. A[ j ] ≤ B[ j ]
Nous avons Y [n]S '−Y [n]S " = A[ j ] − B[ j ] , donc C max(S ' ) ≤ C max(S " ) .
♦ Cas 2. A[ j ] ≥ B[ j ]
Nous avons Y [n]S ' −Y [ j ]S " = B[n] − B[ j ] . Or les travaux sont selon l’ordre de
Johnson et A[ j ] ≥ B[ j ] , donc B[n] ≤ B[ j ] et C max(S ' ) ≤ C max(S " ) .
Cette preuve reste toujours valable même si le dernier travail de S est choisi pour être mis en
première position puisque l’avant dernier travail de S n’appartient pas à D.
56
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
Algorithme4
Début
Déterminer une séquence S vérifiant la règle de Johnson sur G
Si le premier travail de S n’appartient pas à P et le dernier travail de S n’appartient
pas à D alors
S solution du problème F 2 / f − avoid , l − avoid / C max
Sinon
Si le premier et le deuxième travail de S n’appartiennent pas à P et le dernier travail
de S appartient à D alors
Algorithme3 (c’est un problème F 2 / l − avoid / C max )
Sinon
Si le premier travail de S appartient à P et le dernier et l’avant dernier travail de S
n’appartiennent pas à D alors
Algorithme2 (c’est un problème F 2 / f − avoid / C max )
Sinon
imin1 = 0 ;
imin2 = 0 ;
min = HV ; (HV une grande valeur)
Pour k1 de 1 à n faire
Si le travail de rang k1 n’appartient pas à P alors
Construire S’k1 en mettant le travail de rang k1 en première position
Evaluer les Y[i]S’k1
Créer MYG[1..n] où MYG[1] =A[k1] et
[i ] = max( A[k1], Y [1]S ' k 1,.., Y [k1 − 1]S ' k 1, Y [k1 + 1]S ' k 1,.., Y [i − 1]S ' k 1)
MYG
i = 2 ,.., n
Créer MYD[1..n] où
MYG[1] = max(Y [1]S ' k 1,.., Y [ k1 − 1]S ' k 1, Y [k1 + 1]S ' k 1,.., Y [n]S ' k 1) et
[i ] = max(Y [i + 1]S ' k 1,.., Y [k1 − 1]S ' k 1, Y [k1 + 1]S ' k 1,.., Y [n]S ' k 1)
MYG
i = 2 ,.., n
Pour k2 de 1 à n faire
Si k1 ≠ k2 et le travail de rang k2 n’appartient pas à D alors
Si (k1 ≠ n) alors
Evaluer m = max(MYG[k 2], MYD[k 2] − A[k 2] + B[k 2],
Y [n]S ' k 1 + B[k 2] − B[n]))
57
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
Sinon
Evaluer m = max(MYG[k 2], MYD[k 2] − A[k 2] + B[k 2],
Y [n − 1]S ' k 1 + B[k 2] − B[n − 1]))
Fin Si
Si (m < min) alors
imin1=k1 ;
imin2=k2 ;
min=m ;
Fin Si
Fin Si
Fin pour
Fin Si
Fin pour
Si (imin1≠ 0) et (imin2≠ 0) alors
Mettre en première position de S le travail de rang imin1
Mettre en dernière position de S le travail de rang imin2
La nouvelle séquence est la solution optimale du problème
F 2 / f − avoid , l − avoid / C max
Fin Si
Fin Si
Fin Si
Fin Si
Fin.
Remarque importante. Encore une fois, l’utilisation des tableaux MYG et MYD nous a
permis d’alléger la complexité de l’algorithme et de la situer à l’ordre de O(n2).
2.3. Propriétés particulières
Une optimisation plus poussée des algorithmes que nous venons de proposer pourrait
consister à exploiter des propriétés particulières qui permettent soit de déduire
l’ordonnancement optimal de façon directe, soit de réduire le nombre de cas à tester en vue de
déterminer l’ordonnancement optimal. Nous allons étudier, dans ce paragraphe, un certain
nombre de telles propriétés pour le problème F 2 / f − avoid / C max . Nous montrerons, par
58
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
la suite, comment l’exploitation de ces propriétés peut être intégrée dans un algorithme final
permettant la résolution performante de ce problème. Nous convenons que :
-
G désigne toujours l’ensemble de n travaux à ordonnancer, P désigne le sous-ensemble
des travaux de G interdits en première position.
-
S désigne une séquence des travaux de G selon l’ordre de Johnson dont le travail en
première position appartient à P.
-
A[i] et B[i] désignent les durées opératoires du travail de rang i dans S, respectivement sur
la première machine et sur la deuxième machine.
-
i
i −1
l =1
l =1
Y [i ]S est égal à ∑ A[l ] − ∑ B[l ] .
Propriété 2.2.
Considérons, parmi les travaux de G-P, le travail Jj ayant la plus petite durée d’exécution sur
la première machine et S1 la séquence obtenue à partir de S en mettant le travail Jj en
première position. Si max
(Y [i ]S 1) = Y [ j ]S 1 , alors S1 est une solution optimale.
i =1.. n
Preuve.
Nous avons toujours, quelle que soit S = (1, 2,… … …, j,… … …, n).
n
C max(S ) = ∑ B[l ] + max(Y [1]S , Y [2]S ,.., Y [n]S )
l =1
Pour le cas de S1, S1 = (j, 1, 2,…, j-1, j+1,…, n), nous avons :
n
n
l =1
l =1
C max(S1) = ∑ B[l ] + Y [ j ]S 1 = ∑ B[l ] + A[ j ]
Considérons toute autre séquence S2 acceptable ayant, en première position, un travail Jk
différent de Jj (Ce travail de rang k peut être placé avant ou après le travail de rang j dans S).
Nous avons S2 = (k, 1, 2,…, k-1, k+1,…, j,…, n) et :
n
(Y [i ]S 2) avec max
C max(S 2) = ∑ B[l ] + max
(Y [i ]S 2) = max( A[k ], max
(Y [i ]S 2), max
(Y [i ]S 2))
i =1.. n
i =1.. k −1
i = k +1.. n
i =1.. n
l =1
Deux cas peuvent se présenter :
♦ Cas 1. max
(Y [i ]S 2) = Y [k ]S 2 = A[k ]
i =1.. n
Or A[k ] ≥ A[ j ] , donc max
(Y [i ]S 2) ≥ Y [ j ]S 1 et la séquence S2 n’est pas une meilleure
i =1.. n
solution que S1.
59
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
♦ Cas 2. max
(Y [i ]S 2) = max(max
(Y [i ]S 2), max
(Y [i ]S 2))
i =1.. n
i =1.. k −1
i = k +1.. n
Alors
max(max
(Y [i ]S 2), max
(Y [i ]S 2)) > Y [k ]S 2 , or Y [k ]S 2 = A[k ] ≥ A[ j ] = Y [ j ]S 1 , donc
i =1.. k −1
i = k +1.. n
max
(Y [i ]S 2) ≥ Y [ j ]S 1 et la séquence S2 n’est pas meilleure solution que S1.
i =1.. n
Propriété 2.3.
Considérons, parmi les travaux de G-P, le travail Jj ayant la plus petite différence A[j]-B[j] et
S1 la séquence obtenue à partir de S en mettant le travail Jj en première position. Si
max
(Y [i ]S 1) = Y [ p1]S 1 et p1∈ [1...j - 1], alors S1 a un C max plus petit ou égal à celui de toute
i =1.. n
autre séquence dans laquelle on déplacerait en première position un travail situé après le
travail Jj dans S.
Preuve.
Nous avons toujours, quelle que soit S, S = (1, 2,… … …, j,… … …, n)
n
C max(S ) = ∑ B[l ] + max(Y [1]S , Y [2]S ,.., Y [n]S )
l =1
Pour le cas de S1, S1 = (j, 1, 2,…, j-1, j+1,…, n), nous avons :
n
C max(S1) = ∑ B[l ] + Y [ p1]S 1 avec p1∈ [1...j - 1]
l =1
Soit S2 la séquence obtenue à partir de S en mettant, en première position, tout autre travail Jk
situé après Jj. S2 = (k, 1, 2,..., j,…, k-1, k+1,…, n)
Nous
avons
max
(Y [i ]S 2) = max(Y [k ]S 2, Y [ p1]S 2, Y [ j ]S 2, i max
(Y [i ]S 2), max
(Y [i ]S 2)) ,
i =1.. n
i = k +1.. n
= j +1.. k −1
avec
Y [ p1]S 2 = Y [ p1]S 1 − ( A[ j ] − B[ j ] − A[k ] + B[k ]) . Or, Jj est le travail qui minimise A[i]-B[i] pour i
= 2...n donc
A[ j ] − B[ j ] − A[k ] + B[k ] ≤ 0
et, par la suite,
Y [ p1]S 2 ≥ Y [ p1]S 1
et
max
(Y [i ]S 2) ≥ Y [ p1]S 1 .
i =1.. n
Propriété 2.4.
Considérons, parmi les travaux de G-P, le travail Jj avec j = max(a, b), où a est le rang du
travail de S qui minimise les durées opératoires sur la première machine et b est le rang du
travail de S qui minimise les différences entre la durée opératoire sur la première machine et
la durée opératoire sur la deuxième machine. S1 est la séquence obtenue à partir de S en
mettant le travail Jj en première position. Si max
(Y [i ]S 1) = Y [ p3]S 1 et p3 ∈ [j+1..n], alors S1 a
i =1.. n
60
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
un C max plus petit ou égal à celui de toute autre séquence dans laquelle on déplacerait en
première position un travail situé après le travail Jj dans S.
Preuve.
Nous avons toujours, quelle que soit S = (1, 2,… … …, j,… … …, n) :
n
C max(S ) = ∑ B[l ] + max(Y [1]S , Y [2]S ,.., Y [n]S )
l =1
Pour le cas de S1, S1 = (j, 1, 2, ….j-1, j+1,…,n), nous avons :
n
C max(S1) = ∑ B[l ] + Y [ p3]S 1 avec p3 ∈ [j + 1…n].
l =1
Soit S2 la séquence obtenue à partir de S en mettant, en première position, tout autre travail Jk
situé après Jj (k > j) : S2 = (k, 1, 2, …, j,…, k-1, k+1, …,n).
Nous distinguons trois cas:
♦ Cas 1. Si p3 ∈ [k+1..n] alors max (Y [i ]S 2) = Y [ p3]S1
i = k + 1..n
Si max(Y [i ]S 2) ≥ max (Y [i ]S 2) = Y [ p3]S1 alors S1 est meilleure que S2, sinon
i = 1.. k
i = k + 1.. n
max(Y [i ]S 2) = max (Y [i ]S 2) = Y [ p3]S 1 et donc S1 donne le même résultat que S2.
i = 1..n
i = k + 1.. n
♦ Cas 2. Si p3 ∈ [j+1…k-1], deux cas sont à examiner :
•
Si A[k ] ≤ B[k ] :
Alors, comme conséquence de l'ordre de Johnson, on a A[i ] ≤ B[i ] pour i ∈ [1 .. k], et
les A[i] sont classés dans l'ordre croissant.
D'autre part,
j −1
p 3 −1
j −1
p 3 −1
l =1
l = j +1
l =1
l = j +1
Y [ p3]S 1 = A[ j ] + ∑ A[l ] + ∑ A[l ] − B[ j ] − ∑ B[l ] − ∑ B[l ] + A[ p3]
j −1
p 3 −1
j −1
p 3 −1
l =1
l = j +1
l =1
l = j +1
et A[ j ] + ∑ A[l ] + ∑ A[l ] ≤ B[ j ] + ∑ B[l ] + ∑ B[l ]
Donc, Y [ p3]S 1 ≤ A[ p3] ≤ A[k ] = Y [k ]S 2 et Y [ p3]S 1 ≤ max(Y [i ]S 2)
i = 1..n
•
Si A[k ] ≥ B[k ] :
Alors Y [ p3]S 1 ≤ Y [ p3]S1 + A[k ] − B[k ] = Y [ p3]S 2 et Y [ p3]S 1 ≤ max(Y [i ]S 2)
i = 1..n
61
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
♦ Cas 3. Si p3 = k alors max(Y [i ]S 1) = Y [k ]S 1 . Deux sous-cas sont à étudier :
i = 1..n
Si A[k ] ≤ B[k ] :
•
Alors, comme conséquence de l'ordre de Johnson, nous avons A[i ] ≤ B[i ] pour
i∈[1..k], et les A[i] sont rangés par ordre croissant.
D'autre part, nous avons:
j −1
k −1
j −1
k −1
l =1
l = j +1
l =1
l = j +1
Y [k ]S 1 − A[k ] = A[ j ] + ∑ A[l ] + ∑ A[l ] − B[ j ] − ∑ B[l ] − ∑ B[l ]
(Y [i ]S 2)
Donc, Y [k ]S 1 ≤ A[k ] = Y [k ]S 2 et Y [k ]S 1 ≤ max
i =1.. n
Si A[k ] ≥ B[k ] , nous avons alors :
•
-
Si B[k − 1] ≤ A[k − 1]
j −1
j −1
k −1
Y [k ]S 1 − Y [k − 1]S 2 = A[ j ] + ∑ A[l ] + ∑ A[l ] + A[k ] − B[ j ] − ∑ B[l ] − A[k ]
k −1
j −1
l =1
k −1
l = j +1
l =1
l = j +1
l = j +1
j −1
k −2
l =1
l = j +1
l =1
− ∑ B[l ] − A[ j ] − ∑ A[l ] − ∑ A[l ] + B[ j ] + ∑ B[l ] + ∑ B[l ] + B[k ]
Y [k ]S 1 − Y [k − 1]S 2 = B[k ] − B[k − 1] .
D'autre part, min( A[k − 1], B[k ]) ≤ min( B[k − 1], A[k ]) et B[k − 1] ≤ A[k − 1] alors
B[k ] ≤ B[k − 1] et Y [k ]S 1 ≤ max
(Y [i ]S 2) .
i =1.. n
-
Si B[k − 1] ≥ A[k − 1] alors on est dans le même cas que A[k ] ≤ B[k ] .
Propriété 2.5.
Considérons, parmi les travaux de G-P, le travail Jj ayant la plus petite différence A[j]-B[j], Jk
un travail placé avant Jj et S1 la séquence obtenue à partir de S en mettant le travail Jj en
(Y [i]S 1) = Y [k ]S 1 alors S1 a un C max plus petit ou égal à celui de
première position. Si max
i =1.. n
toute autre séquence dans laquelle on déplacerait en première position un travail situé après le
travail Jk dans S et n’appartenant pas à P.
Preuve.
Nous avons toujours, quelle que soit S = (1, 2,… … …, j,… … …, n) :
n
C max(S ) = ∑ B[l ] + max(Y [1]S , Y [2]S ,.., Y [n]S )
l =1
62
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
Pour le cas de S1, S1 = (j, 1, 2,…, j-1, j+1,…, n), nous avons :
n
C max(S1) = ∑ B[l ] + Y [k ]S 1 avec k < j
l =1
D’après la propriété 2.3, nous savons que S1 a un C max plus petit ou égal à celui de toute
autre séquence dans laquelle on déplacerait en première position un travail situé après le
travail Jj dans S et n’appartenant pas à P.
Soient S2 = (p, 1, 2,…, k,…, p-1, p+1,…, j,…, n) et p ∈ [k+1 … j-1].
n
(Y [i ]S 2), Y [k ]S 2, i=max
(Y [i]S 2))
Nous avons : C max(S 2) = ∑ B[l ] + max(Y [ p ]S 2, max
i =1.. k −1
k +1.. n ;i ≠ p
l =1
Or Y [ k ]S 2 − Y [ k ]S 1 = A[ p ] − B[ p ] − A[ j ] + B[ j ] et le travail Jj minimise A[i]-B[i], donc
Y [k ]S 2 ≥ Y [ k ]S 1 et, par suite, C max( S 2) ≥ C max( S1) .
Corollaire 2.2.
Considérons, parmi les travaux de G-P, le travail Jj ayant la plus petite différence A[j]-B[j] et
Jk un travail placé avant Jj ; et désignons par Sr la séquence obtenue à partir de S en déplaçant
en première position le travail Jr. Si max
(Y [i ]Sj ) = Y [k ]Sj et A[k ] ≥ B[k ] ≥ A[i ] ≥ B[i ] pour
i =1.. n
i=k+ 1 .. n, alors l’ordonnancement obtenu en déplaçant en première position un travail Jw∈[k
.. n] a un C max nécessairement plus grand ou égal à ceux de Sj et Sk. Autrement dit,
l’ordonnancement recherché (ayant le plus petit C max et tel que le travail en première
position n’appartenant pas à P) est obtenu avec Sj ou Sk.
Preuve.
D’après la propriété 2.5, Sj est la séquence donnant le plus petit C max parmi tous les C max
associés à toutes les séquences obtenues en mettant en première position un travail
Jw∈[k+1..n].
Nous avons toujours, quelle que soit S = (1, 2,… , k,… …, j, … … …, n)
n
C max(S ) = ∑ B[l ] + max(Y [1]S , Y [2]S ,.., Y [n]S )
l =1
Pour le cas de Sj, Sj = (j, 1, 2,…, j-1, j+1,…,n), nous avons :
n
C max(Sj ) = ∑ B[l ] + Y [k ]S 1 avec k < j et tel que le travail Jk vérifie A[k ] ≥ B[k ] ≥ A[i ] ≥ B[i ]
l =1
pour i = k+1..n.
Soient Sk = (k, 1, 2,…, k-1, k+1,…, j,…n)
63
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
p1 ∈ [1 … k-1] / max
(Y [i ]Sk ) = Y [ p1]Sk ,
i =1.. k −1
p2 ∈ [j+1 … n] / max
(Y [i ]S ) = Y [ p 2]S ,
i = j +1.. n
et p3 ∈ [k+1 … n] / max
(Y [i ]Sk ) = Y [ p3]Sk .
i = k + 1.. n
Puisque max
(Y [i ]Sj ) = Y [k ]Sj , nous avons max
(Y [i ]S ) = max(max
(Y [i ]S ), Y [ j ]S , max
(Y [i ]S )) ,
i =1.. n
i =1.. j −1
i = j +1.. n
i =1.. n
max
(Y [i ]S ) = max(Y [k ]S , Y [ j ]S , Y [ p 2]S ) et max
(Y [i ]Sk ) = max( A[k ], Y [ p1]Sk , Y [ p3]Sk ) .
i =1.. n
i =1.. n
Nous distinguons trois cas :
♦ Cas 1 . max
(Y [i ]Sk ) = Y [ p3]Sk : il y a alors trois sous-cas à traiter
i =1.. n
-
Si
max
(Y [i ]S ) = Y [k ]S
i =1.. n
alors Y [ p3]S ≤ Y [k ]S . Nous avons Y [ p3]S = Y [ p3]Sk
et
Y [k ]Sj = Y [k ]S + A[ j ] − B[ j ] , donc Y [ p3]Sk = Y [ p3]S ≤ Y [k ]Sj d’où l’on peut déduire que
C max(Sk ) ≤ C max(Sj ) .
-
Si max
(Y [i ]S ) = Y [ j ]S alors p3 = j et max
(Y [i ]Sk ) = Y [ j ]Sk . Il suffit alors de tester si
i =1.. n
i =1.. n
Y [ j ]Sk ≤ Y [k ]Sj et dans ce cas C max(Sk ) ≤ C max(Sj ) , sinon C max(Sk ) > C max(Sj ) .
-
Si
max
(Y [i ]S ) = Y [ p 2]S
i =1.. n
alors
Y [ p3]S ≤ Y [ p 2]S .
D'autre
part,
nous
avons
Y [ p3]S = Y [ p3]Sk et Y [ p 2]S = Y [ p 2]Sj , donc Y [ p3]Sk ≤ Y [ p 2]Sj ≤ Y [k ]Sj et, par conséquent,
l’on peut déduire que C max(Sk ) ≤ C max(Sj ) .
♦ Cas 2. max
(Y [i ]Sk ) = Y [ p1]Sk
i =1.. n
Il suffit alors de tester si Y [ p1]Sk ≤ Y [k ]Sj et dans ce cas C max(Sk ) ≤ C max(Sj ) , sinon
C max(Sk ) > C max(Sj ) .
♦ Cas 3. max
(Y [i ]Sk ) = A[k ]
i =1.. n
Il suffit alors de tester si A[k ] ≤ Y [k ]Sj et dans ce cas C max(Sk ) ≤ C max(Sj ) , sinon
C max(Sk ) > C max(Sj ) .
64
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
Propriété 2.6.
Considérons, parmi les travaux de G-P, le travail Jj ayant la plus petite différence A[j]-B[j] et
S1 la séquence obtenue à partir de S en mettant le travail Jj en première position. Si
max
(Y [i ]S 1) = Y [ p ]S 1 , p ∈ [1 .. j-1] et A[ p ] ≤ B[ p ] , alors S1 a un C max plus petit ou égal à
i =1.. n
celui de toute autre séquence dans laquelle on déplacerait en première position un travail situé
avant le travail Jj dans S et n’appartenant pas à P.
Preuve.
Nous avons toujours, quelle que soit S = (1, 2,…, p,… …, j,… … … , n)
n
C max(S ) = ∑ B[l ] + max(Y [1]S , Y [2]S ,.., Y [n]S )
l =1
Pour le cas de S1, S1 = (j, 1, 2, …, p, …, j-1, j+1,…,n), nous avons :
n
C max(S1) = ∑ B[l ] + Y [ p ]S 1 avec p ∈ [1 .. j-1] et A[ p ] ≤ B[ p ] .
l =1
Soit S2 la séquence obtenue à partir de S en mettant, en première position, tout autre travail Jk
situé avant Jj et n’appartenant pas à P : S2 = (k, 1, 2,… k-1, k+1,…, j,…, n).
Nous distinguons trois cas:
♦ Cas 1. p ∈ [1 .. k - 1]
Nous avons Y [ p ]S 2 = Y [ p ]S 1 − ( A[ j ] − B[ j ] − A[k ] + B[k ]) et Jj est le travail qui minimise
A[i]-B[i] pour i = 2 .. n, alors Y [ p]S 2 ≥ Y [ p]S 1 et, par suite, max
(Y [i ]S 2) ≥ Y [ p ]S 1 .
i =1.. n
♦ Cas 2. p = k
p
p −1
l =1
l =1
Y [ p ]S 1 − Y [k ]S 2 = Y [ p ]S 1 − A[k ] = A[ j ] − B[ j ] + ∑ A[l ] − ∑ B[l ] − A[k ]
p −1
p −1
l =1
l =1
= A[ j ] − B[ j ] + A[ p ] − A[k ] + ∑ A[l ] − ∑ B[l ]
Puisque A[ p ] ≤ B[ p ] et tous les travaux sont dans l'ordre de Johnson, nous avons
p −1
p −1
l =1
l =1
∑ A[l ] − ∑ B[l ] ≤ 0 et A[ j ] ≤ B[ j ] . Or p = k, donc A[ p] = A[k ] , Y [ p] ≤ Y [k ] = A[k ] et
S1
max
(Y [i ]S 2) ≥ Y [ p ]S 1 .
i =1.. n
65
S2
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
♦ Cas 3. p ∈ [k + 1 .. j - 1]
Y [ p]S 2 = Y [ p]S 1 − A[ j ] + B[ j ] .
Puisque A[ p ] ≤ B[ p ] et tous les travaux sont dans l'ordre de Johnson, nous avons
A[ j ] ≤ B[ j ] . Donc Y [ p]S 2 ≥ Y [ p ]S 1 et max
(Y [i ]S 2) ≥ Y [ p ]S 1 .
i =1.. n
Propriété 2.7.
Considérons, parmi les travaux de G-P, le travail Jj ayant la plus petite différence A[j]-B[j] et
S1 la séquence obtenue à partir de S en mettant le travail Jj en première position. Si
max
(Y [i ]S 1) = Y [1]S 1 , alors S1 est la séquence recherchée (ayant le plus petit C max et tel que
i =1.. n
le travail en première position n’appartient pas à P).
Preuve.
Nous avons toujours, quelle que soit S = (1, 2,… … …, j,… … …, n) :
n
C max(S ) = ∑ B[l ] + max(Y [1]S , Y [2]S ,.., Y [n]S )
l =1
Pour le cas de S1, S1 = (j, 1, 2,…, j-1, j+1,…, n), nous avons :
n
C max(S1) = ∑ B[l ] + Y [1]S 1
l =1
Soit S2 la séquence obtenue à partir de S en déplaçant en première position un travail p
différent du premier et du jème et n’appartenant pas à P, S2 = (p, 1, 2,…, p-1, p+1,…, n). Le
travail p peut être avant ou après le travail j dans S.
Nous avons max(Y [i ]S 1) = Y [1]S 1 et Y [1]S 2 = Y [1]S 1 − A[ j ] + B[ j ] + A[ p] − B[ p] or j minimise
A[j] –B[j] donc Y [1]S 1 ≤ Y [1]S 2 et Y [1]S 1 ≤ max
(Y [i ]S 2) . Par suite, S1 donne le meilleur ordre.
i =1.. n
2.4. Discussion
Les propriétés présentées précédemment permettent de réduire, dans le pire des cas, le nombre
de travaux à tester en première position. Nous pouvons, cependant, tenter de choisir le travail
qui minimise les durées d’exécution sur la première machine ou bien celui qui minimise les
différences entre la durée d’exécution sur la première machine et la durée d’exécution sur la
deuxième machine et le mettre en première position. Avec les trois cas que nous allons
présenter nous montrerons que d’autres règles peuvent être définies pour le problème
F 2 / f − avoid / C max dans certains cas. Toutefois, il n’est pas possible de déterminer la
solution directement dans d’autres cas.
66
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
Premier travail rencontré
Hypothèse 2.2. L'ordre optimal du problème F 2 / f − avoid / C max est donné par l'ordre de
Johnson, modifié suivant la règle : si le premier élément de l'ordre obtenu appartient à P,
mettre en première position le premier élément de la séquence de Johnson appartenant à G-P.
Justification 2.1.
Cette idée permet le bon choix dans plusieurs cas car elle s’inspire de la règle SPT.
Considérons l’exemple avec les durées opératoires données par la table 2.8.
J1
J2
J3
J4
J5
J6
M1
1
4
5
7
8
3
M2
3
6
8
4
3
1
Table 2.8. Les durées opératoires d'un problème à six travaux
Si G désigne l'ensemble {J1, J2, J3, J4, J5, J6}, l'ordre de Johnson est : {J1, J2, J3, J4, J5, J6}.
Supposons que J1 soit interdit en première position (P = {J1}). Dans ce cas, nous pouvons
voir qu’effectivement la meilleure solution est obtenue en déplaçant en première position le
premier travail non interdit dans l'ordre de Johnson (travail J2).
Ordre
Date
Ordre
Date
d'achèvement
d'achèvement
J1, J2, J3, J4, J5, J6
29
J4, J1, J2, J3, J5, J6
32
J2, J1, J3, J4, J5, J6
29
J5, J1, J2, J3, J4, J6
33
J3, J1, J2, J4, J5, J6
30
J6, J1, J2, J3, J4, J5
31
Table 2.9. Les différents ordres de l'exemple de la table 2.8
Contre exemple.
Cependant, dans cet exemple, nous montrons que cette hypothèse n'est pas aussi générale.
Soient les durées opératoires de la table 2.10.
J1
J2
J3
J4
J5
M1
7
17
12
9
4
M2
12
10
9
5
2
Table 2.10. Ensemble des durées opératoires
d'un problème flow-shop à cinq travaux
67
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
L'ordre de Johnson du problème flow-shop défini sur l'ensemble G = {J1, J2, J3, J4, J5} est
{J1, J2, J3, J4, J5}. Si J1 désigne le travail interdit en première position (P = {J1}), le meilleur
ordre est obtenu en mettant le travail (J3) en première position (voir table 2.11). Le travail J3
est ni le travail qui minimise la durée opératoire sur M1 et ni le travail qui minimise la
différence des durées opératoires sur les deux machines. Il n'est pas aussi le premier travail de
la séquence de Johnson n'appartenant pas à l'ensemble P.
Ordre
Date d'achèvement
Ordre
Date d'achèvement
J1, J2, J3, J4, J5
52
J4, J1, J2, J3, J5
56
J2, J1, J3, J4, J5
55
J5, J1, J2, J3, J4
54
J3, J1, J2, J4, J5
53
Table 2.11. Les différents ordres de l'exemple de la table 2.10
Premier travail du chemin critique
Hypothèse 2.3. L'ordre optimal du problème F 2 / f − avoid / C max est donné par l'ordre de
Johnson, modifié suivant la règle : si le premier élément de l'ordre obtenu appartient à P,
mettre en première position l'élément de G-P qui appartient au chemin critique.
Justification 2.2.
Ceci est justifié par le contre exemple de la table 2.10. En effet, le meilleur ordre est obtenu
en mettant le travail J3 en première position et en ordonnant les autres selon Johnson. Ce
travail appartient au chemin critique (voir figure 2.2.).
J1
J2
J3
J4
J5
M1
M2
5
10
15
20
25
30
35
40
45
50
55
Figure 2.2. Ordonnancement selon l'ordre de Johnson
du problème flow-shop de la table 2.10
Contre exemple.
Comme nous l'avons mentionné avant, dans plusieurs cas nous ne pouvons pas déterminer
directement l'ordre donnant la solution optimale du problème F 2 / f − avoid / C max sans
68
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
énumération. Les règles précédentes ne sont pas optimales comme nous le montre l'exemple
suivant. Considérons les durées opératoires de la table 2.12.
J1
J2
J3
J4
J5
M1
10
25
29
11
9
M2
20
27
30
10
5
Différence
-10
-2
-1
1
4
Table 2.12. Les durées opératoires d'un problème à cinq travaux.
Soit G l'ensemble des travaux, G={J1, J2, J3, J4, J5}. L’ordre de Johnson est {J1, J2, J3, J4, J5}.
Nous supposons que J1 est interdit en première position (P = {J1}).
Le travail qui appartient au chemin critique est J3. Le travail J2 est à la fois le premier travail
non interdit en première position dans la séquence de Johnson et le travail qui minimise la
différence des durées opératoires sur la première et la deuxième machine et J5 est le travail
qui minimise les durées opératoires sur la première machine (M1). Aucune de ces règles est
suffisante pour déterminer l'ordre donnant la plus petite date d'achèvement globale dont le
premier travail n'appartenant pas à P. En effet, le meilleur ordre est obtenu en mettant le
travail J4 en première position (voir table 2.13). Pour ce travail, nous sommes incapables de
définir une règle permettant de faire le meilleur choix (sans énumération) du travail à mettre
en première position.
Ordre
Date d'achèvement
Ordre
Date d'achèvement
J1, J2, J3, J4, J5
109
J4, J1, J2, J3, J5
103
J2, J1, J3, J4, J5
117
J5, J1, J2, J3, J4
106
J3, J1, J2, J4, J5
121
Table 2.13. Les différents ordres de l'exemple de la table 2.12
2.5. Algorithme final pour la résolution du problème F 2 / f − avoid / C max
Algorithme5
Début
Déterminer une séquence S vérifiant la règle de Johnson sur G
Si le premier travail de S n’appartient pas à P alors
S solution du problème F 2 / f − avoid / C max
69
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
Sinon
a désigne le rang du travail dans S qui minimise A[i] et n’appartenant pas à P
b désigne le rang du travail dans S qui minimise A[i]-B[i] et n’appartenant pas
àP
Sr désigne la séquence obtenue à partir de S en avançant en première position
le travail de rang r.
Evaluer les Y [i ]S
bsup=n ; (borne supérieure des indices des travaux de S déplaçables en
première position)
Evaluer les Y [i ]Sb , soit p le rang dans S du travail donnant le maximum des
Y [i ]Sb pour j de 1 à n
Evaluer les Y [i ]Sa , soit p1 le rang dans S du travail donnant le maximum des
Y [i ]Sa pour j de 1 à n
Si (p1=a) alors Sa est la séquence optimale recherchée (propriété 2.2)
Sinon
Si (p = 1) alors Sb est la séquence optimale recherchée
(propriété 2.7)
Sinon
Si (p<b) alors
bsup=p ; (propriété 2.5)
Si (A[p]< B[p]) alors
Sb est la séquence optimale recherchée
(propriété 2.6)
Fin Si
Sinon
Si (p>b) alors bsup=max(a,b) ;
(préparation de l’exploitation de la
propriété 2.4)
Fin Si
Fin Si
Fin Si
Fin Si
Créer MYG[1..bsup] où MYG[i] contient le maximum des Y [i ]S pour j de 1 à i -1
70
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
Créer MYD[1..bsup] où MYD[i] contient le maximum des Y [i ]S pour j de i+1
à bsup
imin=0 ;
min=HV ; (HV une grande valeur)
Pour k de 2 à bsup faire
Si le travail de rang k n’appartient pas à P alors
Evaluer m = max( A[k ], MYG[k ] + A[k ] − B[k ], MYD[k ])
Si (m < min) alors
imin=k ;
min=m ;
Fin Si
Fin Si
Fin pour
Avancer en première position le travail de rang imin
Fin Si
Fin.
3. Expérimentations
Pour nous faire une idée sur l’ordre des améliorations apportées par cet algorithme final, nous
avons programmé l’algorithme de résolution du problème F 2 / f − avoid / C max qui procède
par énumération complète (O(n2)) ainsi que l’algorithme optimisé proposé dans le paragraphe
2.5 (O(n*log(n))) et ledit algorithme final et nous avons exécuté les codes obtenus pour un
certain nombre d’exemples générés de façon aléatoire. Les résultats de ces expérimentations
sont fournis par les tables 2.14 et 2.15 ci-dessous ; pour chacune des valeurs de n égale à 20,
25, 30, 35, 40, 45, 50, 55 et 60 nous avons effectué 10 tests pour des durées opératoires sur la
première et la deuxième machine générées selon une loi log normale de moyenne 12 et d’écart
type 4. Pour uniformiser ces tests, nous avons adopté l’hypothèse que seul le travail obtenu en
première position de l’ordonnancement de Johnson est interdit. Les colonnes EC, AO et AF de
la table 2.14 déterminent la moyenne des durées d’exécution (en ms) obtenus sur les 10 tests
respectivement par l’algorithme par énumération, l’algorithme optimisé et l’algorithme final.
71
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
n
EC
AO
AF
20
27
6
0
25
30
6
0
30
33
6
0
35
44
6
0
40
55
6
0
45
65
6
0
50
80
6
0
55
104
6
0
60
116
6
0
Table 2.14. Durées d’exécution de chaque algorithme
D’après les résultats illustrés par la table 2.14, nous notons que :
-
les durées d’exécution obtenues par l’algorithme d’énumération complète (EC) sont
croissantes en fonction du nombre de travaux ;
-
la différence entre les durées d’exécution obtenues par EC et les durées d’exécution
obtenues par AO est considérable. Ceci s’explique par le fait que l’on passe d’une
complexité en O(n2) à une complexité en O(n*log(n)) ;
-
les durées d’exécution obtenues par AO et AF sont presque constantes en fonction du
nombre de travaux ;
-
la différence entre les durées d’exécution obtenues par AO et celles obtenues par AF n’est
pas énorme (on a la même complexité).
n T1
T2
T3
T4
T5
T6
T7
T8
T9
T10
20 bsup=4
bsup=1
bsup=5
bsup=4
bsup=7 bsup=19 bsup=4
bsup=1
bsup=3
bsup=4
25 bsup=2
bsup=5
bsup=3
bsup=4
bsup=4 bsup=20 bsup=3
bsup=1
bsup=3
bsup=5
sortie
bsup=2
bsup=4
bsup=1
bsup=3
bsup=2
30
sortie
35 bsup=1
bsup=3 bsup=11 bsup=2
40 bsup=10 bsup=6
sortie
bsup=1
bsup=4
bsup=5
bsup=4
bsup=1 bsup=31 bsup=1 bsup=13
bsup=7
bsup=4
bsup=3
sortie
sortie
bsup=6
sortie
bsup=2
bsup=6
bsup=4 bsup=10
bsup=5
bsup=9
sortie
bsup=5
bsup=3
sortie
bsup=1
bsup=8
55 bsup=6 bsup=11 bsup=2
sortie
bsup=2
bsup=3
bsup=5
45
sortie
50 bsup=2
60
sortie
bsup=3 bsup=10 bsup=13 bsup=1 bsup=38 bsup=3
bsup=8 bsup=10 bsup=10
bsup=19 bsup=54 bsup=16 bsup=12 bsup=13 bsup=16 bsup=5
bsup=2 bsup=17
Table 2.15. Les différents nombres de travaux testés par algorithme 4
72
sortie
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
Les colonnes Ti de la table 2.15 donnent, pour chaque test n° i, le nombre d’éléments
(désigné par bsup dans algorithme5) de l’intervalle à parcourir afin de déterminer le travail à
placer en première position, si le choix n’est pas immédiat du fait que des conditions
particulières sont vérifiées (désigné par sortie).
L’interprétation des résultats de la table 2.15 permet de noter que :
-
pour n = 20 : il y a 20% de cas où le nombre de travaux à traiter est inférieur ou égal à
12% du nombre initial et 50% de cas où le nombre de travaux à traiter est compris entre
12% et 20%.
-
pour n = 25 : il y a 90% de cas où le nombre de travaux à traiter est inférieur ou égal à
25% du nombre initial.
-
pour n = 30 : il y a 80% de cas où le nombre de travaux à traiter est inférieur ou égal à
10% du nombre initial.
-
pour n = 35 : il y a 60% de cas où le nombre de travaux à traiter est inférieur ou égal à
14,28% du nombre initial et 30% de cas où le nombre de travaux à traiter est compris
entre 14,28% et 42,85%.
-
pour n = 40 : il y a 40% de cas où le nombre de travaux à traiter est inférieur ou égal à
12,5% du nombre initial et 30% de cas où le nombre de travaux à traiter est compris entre
12,5% et 25%.
-
pour n = 45 : il y a 70% de cas où le nombre de travaux à traiter est inférieur ou égal à
11,1% du nombre initial.
-
pour n = 50 : il y a 0% de cas où le nombre de travaux à traiter est inférieur ou égal à 10%
du nombre .
-
pour n = 55 : il y a 90% de cas où le nombre de travaux à traiter est inférieur ou égal à
18,81% du nombre initial.
-
pour n = 60 : il y a 30% de cas où le nombre de travaux à traiter est inférieur ou égal à
16,6% du nombre initial et 60% de cas où le nombre de travaux à traiter est compris entre
16,6% et 33,3%.
Ces interprétations permettent de déduire que la réduction du nombre de cas est de plus de
50% pour toutes le configurations, ce qui prouve l’efficacité des propriétés de la section 2.3.
73
Chapitre 2 : Résolution exacte du problème flow-shop avec contrainte no-idle
4. Conclusion
Nous avons rappelé dans ce chapitre la seule méthode de résolution publiée, à notre
connaissance, pour le problème F / no − idle / C max . Cette méthode, de type ″branch and
bound″, permet de fournir des solutions exactes. Pour étendre son champ d’application, nous
avons dû définir des problèmes nouveaux ( F / f − avoid / C max , F / l − avoid / C max et
F / f − avoid , l − avoid / C max ) et étudier un certain nombre de propriétés et de voies de
solutions.
Les résultats obtenus nous paraissent d’un intérêt double :
-
d’une part, l’algorithme ainsi complété va nous permettre de situer, par rapport aux
solutions exactes, les performances des heuristiques que nous allons développer dans le
chapitre qui suit et,
-
d’autre part, les propriétés et les approches de raisonnement que nous avons développées
pour les nouveaux problèmes, non seulement nous ont permis d’optimiser l’algorithme en
question mais nous paraissent de champ d’utilité plus large dans l’approfondissement de
l’étude des classes particulières de problèmes d’ordonnancement.
L’essentiel des résultats de ce chapitre a fait l’objet d’une communication présentée au
congrès IEPM’01 [Saadani et al., 2001a] et sélectionnée pour publication dans le journal
EJOR [Saadani et al., 2003a].
74
Chapitre 3
Résolution heuristique du problème
flow-shop avec contrainte no-idle
Il est connu qu’une méthode de séparation et d'évaluation a l’inconvénient d’être
exponentielle lorsque le nombre des données augmente. Pour cela, il est important de trouver
des solutions approchées pour le problème étudié.
Nous nous proposons, dans ce chapitre, d’étudier une première heuristique en O(n*log(n))
pour le cas d’un flow-shop de permutation à trois machines, puis une deuxième heuristique en
O(n3) pour le cas plus général d’un nombre quelconque de machines. Nous situerons les
performances de ces heuristiques par rapport à celles de l’algorithme de type séparation et
évaluation tel que complété au chapitre précédent ainsi que par rapport aux résultats d’un
solveur de programmation entière mixte (Lingo). A la fin du chapitre, nous étudierons une
troisième heuristique pour le cas d’un flow-shop hybride à trois étages.
Nous verrons de façon évidente, d’après ce qui va suivre, que de tout ordonnancement
possible on peut déduire directement un ordonnancement no-idle. Cependant, l’ordre des
travaux dans la solution optimale du problème F // C max n’est généralement pas celui
d’une solution optimale pour le problème F / no − idle / C max et inversement. Ces deux
problèmes sont de fait différents.
1. Heuristique pour la résolution du problème F 3 / no − idle / C max
Rappelons que Baptiste et Hguny ont prouvé que le problème F 3 / no − idle / C max est un
problème NP-difficile [Baptiste et Hguny, 1997]. Pour le cas de deux machines, la résolution
est similaire à la résolution du problème F 2 // C max qui est obtenue en ordonnant les travaux
suivant Johnson (une fois l'ordre de Johnson arrêté, on décale vers la droite les travaux
ordonnancés sur la deuxième machine jusqu'à ce que tous les temps morts soient éliminés ; ce
décalage n’augmente pas le C max ).
75
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
Ainsi, l’ordre des travaux dans la solution optimale du problème F 2 // C max reste valable
pour la solution du problème F 2 / no − idle / C max . Mais il suffit de voir sur l’exemple 3.1
que cela n’est pas vrai à partir de n = 3.
Exemple 3.1. Soient les durées d’exécution d’un problème d’ordonnancement de type flowshop présentées par la table 3.1.
M1
M2
M3
J1
12
6
16
J2
14
19
11
J3
13
18
14
J4
10
12
12
J5
14
6
17
Table 3.1. Durées d’exécution d’un problème flow-shop
La résolution du problème F // C max donne comme solution l’ordre J1, J4, J3, J5, J2 avec un
C max égal à 95. La suppression des temps d’arrêt pour respecter la contrainte no-idle donne
un C max égal à 99. Cependant, la résolution directe du problème F / no − idle / C max
donne comme solution l’ordre J5, J4, J3, J1, J2 avec un C max égal à 98 ; le même ordre sans
respecter la contrainte no-idle donne un C max égal à 96.
Cela dit, du fait que l’ordre de Johnson fournit un ordonnancement optimal dans le cas de
deux machines, nous sommes tentés de construire des solutions approchées pour le cas de
trois machines en partant d’un ordre de Johnson sur deux des trois machines, d’où
l’heuristique suivante.
1.1. Heuristique
Soit C max( M 2, M 3) le makespan obtenu pour un ordonnancement des travaux opérés
uniquement sur M2 et M3. Sur la machine M2, il n’y a aucun temps mort. Sur la machine M3,
les temps morts peuvent être supprimés par tassement à droite des travaux sur cette machine
et ceci sans avoir à modifier le C max( M 2, M 3) .
Le placement des travaux dans cet ordre sur la machine M1 amène à un décalage global des
travaux sur M2 et, par conséquent, un même décalage des travaux sur la machine M3. La
valeur de ce décalage est égale au maximum des intervalles Ci , M 1 − Si , M 2 pour i = 1…n. Le
76
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
C max d’un ordonnancement de ces travaux sur M1, M2 et M3 avec la contrainte no-idle est
égal à la somme de C max( M 2, M 3) , la durée opératoire du premier travail sur la première
machine (M1) et le plus grand décalage des différents décalages des travaux à droite
nécessaires pour vérifier la contrainte no-idle sur M2. Nous avons alors la formule suivante :
C max = C max( M 2 , M 3) + p1, M 1 + max
(0, Ci , M 1 − Si , M 2)
i = 2.. n
où p1, M 1 est la durée opératoire du travail J1 sur la machine M1,
Ci,Mj la date d’achèvement du travail Ji sur la machine Mj
et Si,Mj la date d’achèvement du travail Ji sur la machine Mj
Exemple 3.2. Considérons le cas de trois machines et cinq travaux de la table 3.2.
M1
M2
M3
J1
2
2
2
J2
3
3
4
J3
6
4
4
J4
3
9
11
J5
7
3
4
Table 3.2. Durées d’exécution d’un problème flow-shop
La figure 3.1 illustre un ordonnancement possible no-idle sur les machines M2 et M3.
M2
M3
J1
J2
5
J3
J4
15
10
J5
20
25
30
35
Figure 3.1. Ordonnancement no-idle sur M2 et M3
L’introduction de l’ordonnancement sur M1 conduit à un premier décalage sur M2 et M3 d’une
valeur égale à p1, M 1 (voir figure 3.2)
M1
M2
M3
J1
5
10
J2
J3
15
J4
20
J5
25
30
35
Figure 3.2. Introduction de l’ordonnancement sur M1
77
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
L’ordonnancement no-idle final est obtenu en opérant un deuxième décalage global sur M2 et
(0, Ci , M 1 − Si , M 2) (voir figure 3.3).
M3 d’une valeur égale à max
i = 2.. n
M1
M2
M3
J1
5
10
J2
15
J3
J4
20
25
J5
30
35
Figure 3.3. Travaux ordonnés sans temps mort sur les trois machines
Un ordonnancement no-idle optimal est un ordonnancement qui minimise la formule du
makespan présentée ci-dessus. Nous remarquons, ici, que l’ordre qui minimise le premier
terme C max( M 2,
M 3)
détermine la valeur du deuxième terme
max
(0, Ci , M 1 − Si , M 2 ) .
i = 2.. n
Réciproquement, l’ordre qui minimise le deuxième terme détermine la valeur du premier
terme. Alors que l’ordre optimal n’est peut être ni l’un ni l’autre.
Cependant, si la minimisation du premier terme peut être obtenue facilement en adoptant
l’ordre de Johnson, la minimisation du second terme est beaucoup moins évidente, d’où
l’heuristique (H) que nous avons choisi de développer qui consiste à procéder à la
minimisation sur le premier terme.
Dans le même esprit de l’heuristique proposée, nous pouvons commencer par procéder à un
ordonnancement de Johnson sur les machines M1 et M2 et répercuter le même ordre pour
l’ordonnancement sur la machine M3. Nous adoptons, en définitive, d’élaborer les deux
solutions et de retenir celle qui donne le plus petit C max global. La complexité de cette
heuristique est égale à la complexité de la solution de Johnson c’est-à-dire O(n*log(n)).
L'implantation de la règle de Johnson est facile car elle se base sur des règles classiques (SPT
et LPT). Une procédure classique déterminant l'ordre de Johnson, consiste à diviser l'ensemble
des travaux en deux sous-ensembles selon les durées opératoires. Le premier ensemble (noté
S1) contient les travaux ayant une durée opératoire sur la première machine (noté A[i]) plus
petite que celle sur la seconde machine (noté B[i]). Le second sous-ensemble (noté S2)
contient les travaux ayant une durée opératoire sur la première machine plus grande ou égale
que celle sur la seconde machine. Les travaux de S1 doivent être ordonnés dans l'ordre
croissant de leurs durées opératoires sur la première machine (règle SPT). Les travaux de S2
doivent être ordonnés dans l'ordre décroissant de leurs durées opératoires sur la deuxième
machine (règle LPT). Ensuite, l'ordre de Johnson est obtenu en concaténant les travaux
78
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
ordonnés de S2 après ceux ordonnés de S1. Un tel calcul peut même se faire avec Microsoft
Excel sans aucune difficulté. Le résultat de cette procédure peut être intégré dans un progiciel
d'ordonnancement tel que INCOPLAN [INCOTEC, 1999] en modélisant les durées
opératoires des travaux de S1 et les différences des travaux de S2 par des dates de livraison et
en utilisant la règle EDD (Earliest Due Date c’est-à-dire dans l'ordre croissant des dates de
livraison) pour lancer les travaux sur la première machine. L'ordre de lancement sur la
deuxième machine est le même.
Nous avons aussi considéré le problème miroir, c’est-à-dire le problème où les travaux sont
exécutés d'abord sur la troisième machine, ensuite sur la deuxième machine et en dernier lieu
sur la première. Dans [Pinedo, 1995], l’auteur prouve que le makespan du problème miroir est
égal au makespan du problème initial donc la valeur de la solution du problème no-idle ne
change pas si nous considérons les mêmes machines (M2 et M3).
1.2. Expérimentations
Nous proposons de comparer les résultats de cette heuristique par rapport à :
-
une borne inférieure
-
aux résultats fournis par un solveur de programmation mixte, en l’occurrence Lingo
[LINDO, 1999].
1.2.1. Comparaison par rapport à une borne inférieure
1.2.1.1. Borne inférieure
Nous retenons la borne inférieure obtenue par application directe du résultat de la propriété
2.1 définie par Baptiste et Hguny (paragraphe §1.1, chapitre 2) pour le cas n = 3.
Rappel. Un minorant de tout ordre no-idle sur m machines peut être obtenu par la formule :
LB =
m −1
∑
C j , j +1 ( JO{ j , j +1}) −
j =1
m −1 n
∑∑ p
i, j
j = 2 i =1
Pour le cas n = 3, la formule devient :
LB =
2
∑
C j , j +1 ( JO{ j , j +1}) −
j =1
2
n
∑∑ p
j = 2 i =1
79
i, j
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
1.2.1.2. Résultats des expérimentations
Pour m fixé à 3, nous avons effectué des expérimentations pour 20 configurations en faisant
évoluer n par pas de 5 (n = 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90,
95, 100). Pour chaque configuration, nous utilisons le logiciel Locho pour générer les durées
opératoires sur chacune des machines (M1, M2 et M3) selon une loi log normal. Les durées
opératoires sont entières et générées avec une moyenne égale à 12 et un écart type égal à 4.
Nous itérons ensuite cette évaluation pour 32 tests, ce qui donne un nombre total de 640 tests.
Nous calculons ensuite, toujours pour une même configuration :
-
PMin : égal à min
(( Hi − LBi ) / LBi ) , où Hi et LBi sont, respectivement, les valeurs
i =1..32
obtenues par l’heuristique H et la formule LB pour le ième test ; soit PMin égal au
minimum des écarts entre la solution donnée par l’heuristique H et la borne inférieure,
divisés par la borne inférieure correspondante.
-
PMax : égal à max
(( Hi − LBi ) / LBi ) , soit PMax égal au maximum des écarts entre la
i =1..32
solution donnée par l’heuristique H et la borne inférieure, divisés par la borne
inférieure correspondante.
-
PMoy : égal à moy (( Hi − LBi ) / LBi ) , soit PMoy égal à la moyenne des écarts entre la
i =1..32
solution donnée par l’heuristique H et la borne inférieure, divisés par la borne
inférieure correspondante.
Les résultats sont illustrés dans la table 3.3.
n
PMin.
PMax.
PMoy.
5
0,0000
0,2396
0,0907
10
0,0142
0,2372
0,1062
15
0,0180
0,1958
0,1085
20
0,0000
0,1780
0,0920
25
0,0198
0,1459
0,0920
30
0,0274
0,1514
0,0951
35
0,0155
0,2027
0,0943
40
0,0056
0,1719
0,0886
45
0,0099
0,1564
0,0947
50
0,0194
0,1528
0,0875
55
0,0272
0,1597
0,1034
80
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
60
0,0123
0,1459
0,0950
65
0,0233
0,1481
0,0907
70
0,0373
0,1632
0,0993
75
0,0214
0,1398
0,0936
80
0,0501
0,1265
0,0923
85
0,0509
0,1657
0,1033
90
0,0215
0,1439
0,0993
95
0,0582
0,1473
0,1003
99(*)
0,0236
0,1480
0,0959
Moyenne
0,0228
0,1660
0,0961
Table 3.3. Comparaison par rapport à la borne inférieure
(*) La valeur maximale admise par le logiciel Locho est 99.
Nous notons que :
-
le pourcentage des écarts minimums est inférieur à 6% (5,82% pour n égal à 95 et
moins de 3% pour 16 configurations sur 20). Il est en moyenne de 2,28%.
-
le pourcentage des écarts maximums est inférieur à 24% (23,96% pour n égal à 5 et
entre 14% et 18% pour 14 configurations sur 20). Il est en moyenne de 16,6%.
-
le pourcentage des écarts moyens est au voisinage de 9,61%.
Par ailleurs, pour chaque n nous avons calculé le pourcentage du nombre de tests sur 32 dont
la valeur de (Hi-LBi)/LBi est inférieure à 0,1. La figure 3.4 montre que l'évolution de ce
95
85
75
65
55
45
35
25
5
80,00%
70,00%
60,00%
50,00%
40,00%
30,00%
20,00%
10,00%
0,00%
15
Pourcentage des cas où le rapport
est inférieur à 0,1
pourcentage suivant le nombre de travaux est non linéaire et varie entre 43,75% et 68,75%.
Nombre de travaux
Figure 3.4. Variation du nombre de cas bons en fonction du nombre de travaux
81
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
1.2.2. Comparaison avec les résultats trouvés par Lingo
1.2.2.1. Modèle mathématique
Paramètres du problème
n : nombre de travaux à exécuter,
m: nombre de machines,
P = { pi , r } : durée opératoire du travail Ji sur la machine Mr (matrice n × m).
Variables de décision
Z = { Zi , j } : matrice binaire, Zi , j = 1 si le travail Ji est à la position j dans la séquence de
travaux, 0 sinon. Pour toute solution, il y a uniquement n variables dont la valeur est
égale à un.
C = { Cj , r } : date d'achèvement du travail à la jème position dans la séquence de travaux sur la
machine Mr.
Contraintes
n
∑ Z =1
i, j
(i = 1, ..., n)
(5)
∑ Z =1
(j = 1, ..., n)
(6)
j =1
n
i, j
i =1
n
Cj , r + ∑ ( pi , r * Zi , j + 1) = Cj + 1, r
(r = 1, ..., m; j = 1, ..., n - 1)
(7)
i =1
n
C j , r + ∑ ( pi , r + 1 * Z i , j ) ≤ C j , r + 1
(r = 1, ..., m - 1; j = 1, ..., n)
(8)
i =1
n
∑(p *Z ) = C
i ,1
i ,1
(9)
1,1
i =1
Fonction objective
C max = Cn , m
(10)
min(C max)
(11)
Commentaires
La fonction objectif (11) et l'équation (10) expriment l'objectif à atteindre qui est la
minimisation de la plus grande date d'achèvement. Les contraintes (5) assurent que chaque
travail doit être affecté à une seule position dans la séquence. Les contraintes (6) spécifient
82
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
qu'à chaque position est affecté un et un seul travail. Les contraintes (7) assurent que la date
d'achèvement du travail à la position j+1 sur la machine Mr est égale à la somme de la date
d'achèvement du travail à la position j sur la machine Mr et de la durée opératoire du travail à
la position j+1 sur la machine Mr. Aucun temps mort n’est autorisé sur une machine durant
son travail. Les contraintes (8) montrent que la date d'achèvement du travail à la position j sur
la machine Mr+1 est au moins égale à la somme de la date d'achèvement du travail à la
position j sur la machine Mr et de la durée opératoire du travail à la position j sur la machine
Mr+1. La contrainte (9) spécifie que la date d'achèvement du premier travail sur la première
machine est égale à sa durée opératoire sur cette dernière.
Ce modèle représente le problème flow-shop de permutation F / no − idle / C max avec m
machines. Cependant, nous traitons dans ce paragraphe le cas de trois machines qui sera
obtenu en fixant m à trois.
1.2.2.2. Evaluation et comparaison
Le modèle mathématique ainsi défini a été implanté avec Lingo. Pour m fixé à 3, nous avons
étudié 12 configurations de n en faisant évoluer n par pas de 2 (n = 4, 6, 8, 10, 12, 14, 16, 18,
20, 22, 24, 26). Nous avons là aussi utilisé le logiciel Locho pour générer les durées
opératoires des travaux sur chacune des machines, (M1, M2, M3) selon une loi log normale de
moyenne 12 et d’écart type 4. Pour chaque configuration de n, 32 tests sont générés. Au total,
384 tests sont exécutés sur des machines avec microprocesseur Pentium III 733 Mhz, avec 64
Méga octets de RAM et 10 Giga octets de disque dur.
Les résultats de Lingo sont donnés dans la table 3.4. Pour chaque configuration, nous
définissons :
-
PMin :
min
(( Hi − LGi ) / LGi ) où Hi et LGi sont, respectivement, les valeurs des
i =1..32
C max obtenus par l’heuristique H et la résolution Lingo pour le ième test ; ainsi PMin
est le minimum des écarts entre la solution donnée par l’heuristique H et la résolution
Lingo, divisés par la résolution Lingo correspondante.
-
PMax :
max
(( Hi − LGi ) / LGi ) , PMax est le maximum des écarts entre la solution
i =1..32
donnée par l’heuristique H et la résolution Lingo, divisés par la résolution Lingo
correspondante.
83
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
-
PMoy :
moy (( Hi − LGi ) / LGi ) , PMoy est la moyenne des écarts entre la solution
i =1..32
donnée par l’heuristique H et la résolution Lingo, divisés par la résolution Lingo
correspondante.
Nous avons également rapporté dans cette table, pour chaque valeur de n, le pourcentage des
cas où le résultat obtenu par l’heuristique H et celui obtenu par Lingo sont identiques, ainsi
que le pourcentage des cas où le rapport (Hi-LGi)/LGi est inférieur à 0,1.
n
PMin.
PMax.
PMoy.
Pourcentage des cas
Pourcentage des cas où
où Hi=LGi
0 < (Hi-LGi)/LGi ≤ 0,1
4
0
0,1093
0,0402
9,38%
87,50%
6
0
0,1458
0,0597
15,63%
59,38%
8
0
0,1584
0,0749
12,50%
62,50%
10
0
0,1437
0,0716
6,25%
68,75%
12
0,0246
0,1548
0,0904
0,00%
59,38%
14
0,0129
0,1637
0,0918
0,00%
53,13%
16
0,0041
0,1469
0,0737
0,00%
87,50%
18
0,0201
0,1607
0,0815
0,00%
71,88%
20
0,0148
0,1619
0,0832
0,00%
62,50%
22
0,0030
0,1584
0,0732
0,00%
75,00%
24
0,0223
0,1845
0,0895
0,00%
62,50%
26
0,0081
0,1826
0,0837
0,00%
65,63%
Moyenne
0,0091
0,1558
0,0761
3,64%
69,97%
Table 3.4. Comparaison par rapport aux résultats trouvés par Lingo
De la table 3.4, nous pouvons noter que :
-
l'évolution des minimums des rapports ne dépasse pas 2,5%,
-
les maximums varient entre 10,93% et 18,45%,
-
le pourcentage des rapports moyens est inférieur à 6% pour n = 4 et n = 6 et au
voisinage de 7,61% pour un nombre de travaux plus grand,
-
le nombre de cas où H trouve l’optimum n’est pas grand mais le pourcentage de cas où
le taux d’erreur est inférieur à 0,1 est en moyenne égal à 69,97%.
84
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
Pour résoudre le système des équations (paragraphe 1.2.2.1), Lingo utilise sa procédure de
séparation et d'évaluation tenant compte du fait que notre modèle comprend des variables
entières (voir annexe). Nous nous sommes limités à un maximum de n égal à 26 car, pour un
nombre de travaux plus grand, Lingo est incapable d’aboutir à une solution quelle qu’elle soit,
du fait que le nombre de variables entières devient très grand (Lingo traite au maximum 4000
contraintes et 800 variables et, pour n égal à 28, cette configuration est de 196 contraintes et
868 variables).
Il importe, aussi, de souligner que la résolution par Lingo nécessite souvent un temps
d’exécution relativement long (plusieurs heures, voire des jours) et, ce faisant, Lingo évolue
en optimisant la valeur de la solution jusqu’à s’arrêter sur la valeur optimum. Pour un certain
nombre de tests, nous avons dû arrêter l’exécution avant terme (après 14 heures si le solveur
n'avait pas atteint la solution optimale avant).
Nous n’avons pas évalué avec précision le temps d’exécution de notre heuristique, mais il est
généralement de l’ordre de la seconde et est, donc, sans aucune comparaison avec celui de
Lingo. A titre indicatif, la table 3.5 présente, pour chaque configuration de n, l’espace
mémoire que Lingo nécessite, le nombre de solutions optimales (sur 32 tests) trouvées avant
d’atteindre une durée d’exécution de 14 heures, le nombre de contraintes et le nombre de
variables générées.
n
Espace
Nombre de solutions
Nombre de
Nombre de
mémoire
optimales trouvées
contraintes
variables
4
14K
32
27
28
6
20K
32
41
54
8
27K
32
55
88
10
36K
32
69
130
12
46K
31
83
180
14
59K
30
97
238
16
73K
27
111
304
18
86K
25
125
378
20
102K
26
139
460
22
120K
26
153
550
24
139K
23
167
648
26
159K
24
181
754
Table 3.5. Récapitulatif sur l’état du travail avec Lingo
85
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
1.2.2.3. Efficacité de la borne inférieure
Pour évaluer l'efficacité de la borne inférieure déjà définie, nous avons généré pour chaque
valeur de n (nombre de travaux) variant de 4 à 26, 20 tests pour les quels Lingo est capable de
donner la solution optimale. Par la suite, nous avons comparé la solution optimale à la borne
inférieure.
La figure 3.5 présente l'évolution du maximum, du minimum et de la moyenne du rapport
(|LBi-LGi|)*100/LGi pour toutes les configurations (LBi et LGi sont, respectivement, les
valeurs obtenues par la borne inférieure LB et la résolution Lingo pour le ième test). Pour de
nombreux cas, Lingo fournit des valeurs identiques sinon très proches de la borne inférieure ;
d’où le rapport nul. Quant à la moyenne de ce rapport, elle varie entre 2,7% et 0,56%. Cette
moyenne décroît quand n augmente ; ceci signifie que la borne inférieure devient de plus en
plus proche de l’optimal lorsque n devient grand.
10,00%
9,00%
8,00%
(|LB-LG|)*100/LG
7,00%
6,00%
min
5,00%
max
4,00%
moy
3,00%
2,00%
1,00%
0,00%
4
6
8
10
12
14
16
18
20
22
24
26
Nombre de travaux
Figure 3.5. Comparaison entre la borne inférieure et les résultats de Lingo
Nous avons également programmé l’algorithme de type séparation et évaluation de Baptiste et
Hguny et constaté que les valeurs obtenues se conforment avec celles fournies par Lingo.
Pour un nombre n de travaux plus grand que 26, nous avons comparé les valeurs de la borne
inférieure (LB) aux résultats trouvés par l’algorithme de type séparation et évaluation (BB).
Dans le cas de trois machines, nous nous sommes limités à 60 travaux (voir figure 3.6). Nous
avons fait alors varier le nombre de travaux de 30 à 60 avec un pas égal à 5 et, pour chaque
configuration, nous avons générés 32 tests selon la même loi.
La variation de la courbe de la moyenne (moy) confirme les résultats trouvés avec Lingo où le
taux d’erreur est inférieur à 2%. Pour la courbe min, nous avons toujours des cas où la borne
inférieure est égale à la solution exacte.
86
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
4,00%
(LB-BB)*100/BB
3,50%
3,00%
2,50%
min
2,00%
max
1,50%
moy
1,00%
0,50%
0,00%
30
35
40
45
50
60
Nombre de travaux
Figure 3.6. Comparaison entre la borne inférieure
et les résultats de l’algorithme de type séparation et évaluation
Dans cette section, nous nous sommes investis dans le problème F 3 / no − idle / C max . Nous
avons alors, proposé une heuristique basée sur la règle de Johnson et de complexité en
O(n*log(n)). Une borne inférieure a été définie pour évaluer l'efficacité de cette solution.
Nous avons résolu un modèle mathématique proposé à l’aide d’un solveur de programmation
mixte. Ce dernier est limité à la résolution du problème dont le nombre de travaux est égal à
26 [Saadani et al., 2003c].
2. Résolution du problème dans le cadre général
Nous proposons maintenant une heuristique plus générale s’appliquant au problème flowshop de permutation pour tout nombre de travaux n et tout nombre de machines m avec
contrainte no-idle et critère C max . Cette heuristique se base sur une modélisation du
problème flow-shop en un problème du voyageur de commerce. Nous situerons les résultats
de cette heuristique par rapport aux optimums calculés soit par une procédure d’énumération,
soit par le logiciel Lingo, soit par l’algorithme de type séparation et évaluation de Baptiste et
Hguny. Nous ferons aussi une étude comparative avec l’heuristique H présentée pour le cas de
trois machines.
2.1. Problème du voyageur de commerce
2.1.1. Présentation du problème
Considérons un graphe orienté G = ( X , U ) , où X désigne l'ensemble des sommets du graphe
et U l'ensemble des arcs valués reliant les sommets du graphe. Un circuit hamiltonien dans le
graphe G est un circuit passant une fois et une fois seulement par chaque sommet du graphe
87
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
G. En prenant en compte le poids associé à chaque arc, la valeur d'un circuit hamiltonien est
égale à la somme des poids des arcs qui le composent.
Le problème bien connu du voyageur de commerce stipule que celui-ci doit rendre visite à n
clients répartis sur n villes x1, x2,…, xn, en partant d'une autre ville x0 et en revenant à celle-ci
selon un circuit qui passe une et une seule fois par chacune des n villes. Etant donnés, d’une
part, un graphe G = ( X , U ) où X est l'ensemble des clients (i.e. villes) et U est l’ensemble des
arcs représentant les chemins entre villes et, d’autre part, une matrice des distances (Di,j)
représentant les longueurs des chemins, le problème du voyageur de commerce (TSP) revient
à rechercher un circuit hamiltonien de longueur totale minimale dans le graphe G. Lorsque la
matrice des distances est symétrique, le problème est dit problème du voyageur de commerce
symétrique, sinon il est dit asymétrique (ATSP). Le problème du voyageur de commerce est
dit généralisé (GTSP) si le voyageur doit passer par un nombre prédéfini de sous-ensembles
de villes. Il doit visiter au moins une ville de chaque sous-ensemble et minimiser la somme
des coûts du voyage.
Ce problème combinatoire est un problème que l'on rencontre fréquemment dans l'industrie
dans la mesure où il représente des problèmes d'ordonnancement, de planification et
d'organisation de la production ainsi que des problèmes de transport. Dans ce qui suit, nous
examinerons les principaux outils élaborés pour résoudre ce problème.
Le problème du voyageur de commerce a été introduit simultanément par Srivastava et al.
[Srivastava et al., 1969] qui se sont intéressés à la version symétrique et ont proposé une
approche de programmation dynamique et par Henry-Labordere [Henry-Labordere, 1969] qui
s’est intéressé au cas asymétrique. Plus tard, Laporte et Nobert [Laporte et Nobert, 1983]
[Laporte et al., 1987] ont formulé les deux problèmes (symétrique et asymétrique) en un
programme entier et un algorithme de type séparation et évaluation pour les résoudre.
2.1.2. Algorithmes exacts de résolution
Ces algorithmes garantissent de trouver une solution optimale en un nombre d’étapes borné.
Les algorithmes les plus efficaces sont de type "plan de coupe" et "recherche de facettes"
[Padberg et Rinaldi, 1991] [Applegate et al., 1991]. Ils sont complexes (plus les 10000 lignes
de code) et nécessitent que la machine soit très performante. Par exemple, on demande entre 3
et 4 ans de temps CPU dans un grand réseau de machines pour déterminer une solution exacte
88
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
d’un problème à 7397 villes. Les algorithmes les plus répandus sont les algorithmes
d’exploration de type séparation et évaluation.
Dans [Fischetti et al., 1994], Fischetti et al. proposent un algorithme de type séparation et
évaluation pour résoudre ce problème optimalement lorsqu’il est symétrique.
Dans [Lysgaard, 1999], un autre algorithme de ce type est proposé pour un problème du
voyageur de commerce asymétrique basé sur les clusters. Un cluster est un ensemble de
nœuds avec la caractéristique qu’il existe une solution optimale pour laquelle les nœuds de cet
ensemble sont visités consécutivement. Il s’agit donc d’identifier les clusters puis de
déterminer un chemin optimal entre les clusters.
Une caractéristique des algorithmes de type séparation et évaluation présentés dans la
littérature pour le problème ATSP est qu’un problème d’affectation linéaire est utilisé pour
établir les bornes inférieures de la solution optimale du ATSP (par exemple [Carpaneto et
Toth, 1980]). Un bon nombre d’approches ont déterminé une borne par rapport au problème
d’affectation linéaire relaxé ([Fischetti et Toth, 1989]). D’importantes contributions dans ce
cadre sont faites, telles que la routine de contraction-compression d’un sous-circuit par
Christofides [Christofides, 1972], l’approche Lagrangienne restreinte de Balas [Balas et
Christofides, 1981] et la procédure de borne additive de Fischetti [Fischetti et Toth, 1992].
Cependant, deux schémas d’élimination de sous-circuits ont dominé la littérature, celui de
Bellmore [Bellmore et Malone, 1971] et celui de Garfinkel [Garfinkel, 1973]. Ces schémas
sont basés sur la configuration d’un sous-circuit dans la solution d’un problème d’affectation
linéaire.
Pour résoudre le problème du voyageur de commerce, on trouve aussi les algorithmes de
coupes utilisés lorsque le nombre de contraintes s'avère raisonnable. A ce niveau, on raisonne
bien souvent sur un programme relaxé, c'est-à-dire ne comprenant qu'une partie de l'ensemble
des contraintes et on intègre le reste des contraintes à la solution optimale, lorsque celle-ci ne
donne pas le circuit hamiltonien recherché [Gomory, 1958], [Faure, 1978], [Gondran et
Minoux, 1979] et Little [Little et al., 1963].
2.1.3. Algorithmes approximatifs
La classe des algorithmes approximatifs peut être divisée en trois sous-classes :
89
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
-
les algorithmes de construction des circuits : on construit progressivement le circuit en
ajoutant à chaque étape une ville. Parmi les algorithmes de construction de circuit on
trouve les méthodes d’insertion [Golden et al., 1980] et [Christofides, 1976], ou les
méthodes du plus proche voisin. Ces algorithmes sont rapides ; toutefois les solutions
ne sont pas généralement de bonne qualité.
-
les algorithmes d’amélioration de circuit : à partir d’un circuit donné (arbitraire), on
essaye d’apporter des modifications sur les arcs (suppression et ajout) dans le but de
rechercher une meilleure solution dans le voisinage ; par exemple, 2-opt alg (en
partant d’un circuit, remplacer deux liens dans le circuit par deux autres de telle
manière que la longueur du nouveau circuit soit plus courte, continuer jusqu’à ce qu’il
n’y ait plus d’amélioration). Une généralisation de cette idée pour les problèmes TSP
symétriques est l’algorithme de Lin-Kernighan [Lin et Kernighan, 1973], qui fait
partie de la classe des algorithmes d’optimisation locale [Johnson, 1990] [Johnson et
McGeoch, 1997]. Ce travail a été modifié par Mak et Morton [Mak et Morton, 1993]
et implanté par Helsgaun [Helsgaun, 2000]. L’inconvénient de tels algorithmes est le
risque de tomber sur un optimum local,
-
les algorithmes composites : un algorithme est dit composite s’il combine les deux
types précédents. Ces algorithmes donnent de bons résultats si on a une bonne solution
de départ.
Il existe une multitude d'heuristiques permettant de résoudre, avec plus au moins de succès, le
problème du voyageur de commerce. Le plus souvent ces heuristiques adaptent l’une des
techniques suivantes :
Technique du plus proche voisin
X étant l’ensemble des nœuds, on choisit aléatoirement un sommet de départ x ∈ X.
On construit progressivement une chaîne en joignant, à chaque pas, un nouveau sommet x' ∈X
(le plus proche), à l’une des deux extrémités de la chaîne. On poursuit la procédure
d'adjonction jusqu'à ce que la chaîne comporte tous les sommets.
Enfin, on joint les deux sommets opposés de la chaîne et on obtient un circuit hamiltonien.
Technique de la plus proche insertion
On choisit un circuit hamiltonien d'un sous-graphe de G .
90
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
On insère dans ce circuit le sommet x ∈ X le plus proche du périmètre délimité par les
sommets du circuit, n'appartenant pas au circuit. On répète la procédure d'insertion jusqu'à ce
que le circuit comporte tous les sommets.
Technique n-optimale de Lin
La technique de Lin [Lin et Kernighan, 1973] part d’un circuit hamiltonien de valeur
quelconque construit en utilisant, par exemple, une des deux techniques ci-dessus.
On supprime n arcs de ce circuit et on ajoute n nouveaux arcs à ce circuit afin d'obtenir un
nouveau circuit hamiltonien de valeur inférieure.
On répète la procédure de modification jusqu'à atteindre un critère d’arrêt indiquant qu’il
devient difficile de trouver un circuit hamiltonien de valeur inférieure.
Nous pouvons aussi citer d’autres heuristiques particulières comme celles de Christofides
basée sur la recherche d'un couplage dans un graphe [Christofides et al., 1979], l'heuristique
de Khoan Vo-Khac pour tout problème du voyageur de commerce symétrique basée sur la
recherche d'une hiérarchie entre les arêtes [Khoan,1971], l'heuristique de Hurrion basée sur
une interaction homme machine [Hurrion, 1980], l’heuristique d’affectation avec réemploi de
ressources de Guinet [Guinet, 1984] et l’heuristique du voisinage de Carlier et Villon [Carlier
et Villon, 1990].
Comme heuristique amélioratrice pour un GTSP, nous citons l’heuristique 4-opt ([Boctor et
al., 1993] et [Renauld et al., 1996]). Dans [Renauld et Boctor, 1998], les auteurs proposent
une heuristique composite pour ce problème qui construit une solution initiale partielle, insère
un nœud de chaque sous-ensemble de nœuds non visité et améliore ensuite la solution.
Les premiers à avoir utilisé la programmation dynamique sont Bellman et Held. La démarche
consiste à définir une trajectoire à partir d’une approche ascendante proposée [Bellmann,
1962] [Held et Karp, 1962]. Cependant, il se trouve que des difficultés sont rencontrées lors
du calcul d’un extrêmum avec l’équation de Bellmann et que le processus de détermination de
la fonction de Bellmann est accompagné par des erreurs inévitables. Dans [Chentsov et
Korotayeva, 1997], les auteurs proposent une heuristique pour le problème du voyageur de
commerce généralisé basée sur la programmation dynamique et utilisant la fonction de
Bellmann. Ces mêmes auteurs essayent, dans [Chentsov et Chentsov, 2001], de donner une
91
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
estimation de l’effet des erreurs de la fonction de Bellmann sur la qualité des trajectoires
trouvées par une procédure de programmation dynamique.
Nous trouvons aussi l’heuristique constructive de Glover [Glover et al., 2001] pour les ATSP,
les travaux de [Chisman, 1975], [Jongens et Volgenant, 1985] et [Gendreau et al., 1994] pour
le TSP généralisé dont la solution est basée sur les clusters, l’heuristique de Glover basée sur
la recherche tabou [Glover, 1989]. Une variété du voyageur de commerce est étudiée avec
ramassage et livraison dans [Gendrau et al., 1999]. Les algorithmes génétiques sont aussi
utilisés [Schmitt et Amini, 1995], [Whitley et al., 1989], [Homaifar et al., 1993], [Giuseppe et
al., 2001], [Goldberg, 1989].
Une autre variété du voyageur de commerce asymétrique, connue sous le sigle RATSP, est
une généralisation du problème du voyageur de commerce asymétrique. Ce problème a été
introduit pour la première fois par Barnhart [Barnhart et al., 1998], dans le contexte de la
planification d’une ligne aérienne : soit un problème TSP asymétrique représenté par un
multigraphe orienté G = (V, Z) avec V un ensemble de nœuds, Z un ensemble d’arcs de deux
types : arcs ordinaires et arcs de remplissage. De plus, des poids entiers positifs wi sont
affectés aux nœuds. Les auteurs définissent un chemin non réalisable comme étant un chemin
ne contenant pas d’arcs de remplissage et dont la somme des poids des nœuds ne dépasse pas
un poids limite donné ; sinon il est dit réalisable. Ils étudient ensuite la résolution du problème
RATSP, par la recherche d’un circuit hamiltonien de coût minimal, constitué de sous-chemins
non réalisables.
Mak et Boland, dans [Mak et Boland, 2000], ont proposé une solution, par un algorithme de
recuit simulé, basée sur une méthode de voisinage 3-optimale qui a, toutefois, l’inconvénient
de la violation possible du poids limite (une méthode est α-optimale si elle aboutit à un
ordonnancement dont l’objectif a une erreur relative inférieure ou égale à α% par rapport à
l’optimum). Ils ont aussi développé une deuxième heuristique basée sur la relaxation de
Lagrange, avec toujours la possibilité du non respect des contraintes du poids limite. Il se
révèle que cette nouvelle heuristique est exponentielle et les méthodes d’optimisation du sousgradient standard ne sont pas directement applicables [Boland et Boland., 2000].
Signalons, pour terminer cette brève synthèse, que d’autres variantes du problème du
voyageur de commerce ont été étudiées comme celle du voyageur de commerce maximum qui
consiste à déterminer un circuit hamiltonien avec un total de poids maximal. Pour cette
92
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
variante, il est proposé dans [Hassin et Rubinstein, 1998] un algorithme approximatif
polynomial. Pour ce qui nous intéresse, nous allons étudier une solution pour la résolution du
problème F / no − idle / C max dans le cas général, en assimilant ce problème à celui du
voyageur de commerce et en adoptant la technique de la plus proche insertion.
2.2. Résolution du problème F / no − idle / C max
Considérons le cas de n travaux J1, J2, …, Jn à ordonnancer sur m machines. On définit
l’attente maximale Di,j entre le travail Ji et le travail Jj de la façon suivante : si l’on exécute
uniquement les travaux Ji et Jj et dans cet ordre, sur l’ensemble des m machines en satisfaisant
la contrainte no-idle, Di,j correspond à l’attente de la dernière machine (m) avant d’entamer
l’exécution du travail Ji (voir figure 3.7).
|--i---|---j----|
|--i----|----j---|
|--i--|-----j----|
.
.
|---i---|-----j-----|
|---i----|-----j-----|
Di,j
Figure 3.7. Evaluation de la distance (l’attente maximale)
L’idée de l’heuristique consiste à chercher un ordonnancement qui minimise la somme des
Di,j. Le problème peut alors être vu comme celui du voyageur de commerce dans lequel les
nœuds (villes) représentent les travaux et les arcs représentent les attentes maximales en guise
des distances entre travaux. Nous préconisons de chercher le circuit hamiltonien le plus court
en appliquant la technique de la plus proche insertion.
Considérons un graphe orienté G = (X, U) où X représente l’ensemble des nœuds et U
représente l’ensemble des arcs. Nous rappelons qu’un circuit hamiltonien sur le graphe G est
un circuit qui passe par chacun des nœuds du graphe G une et une seule fois. Une valeur (Di,j)
est affectée à chacun des arcs et la valeur du circuit hamiltonien est définie par la somme des
93
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
valeurs de tous les arcs composant ce circuit. Le problème consistant à trouver le plus court
circuit hamiltonien est appelé le problème du voyageur de commerce.
La technique de la plus proche insertion commence par chercher la plus petite distance Di,j.
Un circuit de i à j est alors défini ; la longueur du circuit est égale à Di,j + Dj,i. Ensuite, les
nœuds qui n'appartiennent pas au circuit sont ajoutés. A chaque étape, le nœud minimisant la
nouvelle valeur de la longueur du circuit augmenté du nœud est ajouté au circuit et il est
inséré à la position qui minimise cette valeur. Ce processus est répété jusqu'à avoir tous les
nœuds inclus dans ce circuit. La complexité de cette règle est O(n3).
Nous adaptons cette technique à la résolution de notre problème selon le schéma suivant
[Saadani et al., 2001b], [Saadani et al., 2003b] :
1. Calculer la distance si Ji est exécuté avant Jj, pour toute paire de travaux ordonnés Ji et Jj.
La distance est égale à la différence entre la date de début du travail Ji sur la première
machine et la date de début du travail Ji sur la dernière machine en respectant la contrainte
no-idle.
2. Choisir le couple des travaux (Ji, Jj) ayant la plus petite attente Di,j ; il constituera
l’élément de départ du chemin (de l’ordre) à construire. Les travaux Ji et Jj sont alors
ordonnés.
3. Pour tout travail Jk non encore ordonné, insérer Jk dans les différentes positions du chemin
en cours de construction et choisir le travail et la position qui minimisent la longueur
totale du nouveau chemin. A partir de l'ordre obtenu en ajoutant le travail au chemin, on
somme les différentes distances Di,j des travaux adjacents pour calculer la longueur totale
du chemin. Choisir le travail Jk et la position qui minimisent la nouvelle valeur du chemin.
Le travail Jk est alors ordonné.
4. Répéter 3 jusqu’à ce que tous les travaux soient ordonnés.
Nous désignons par NIR l’heuristique proposée.
2.3. Expérimentations
2.3.1. Comparaison avec la solution optimale
La qualité de cette heuristique est examinée en résolvant 3584 problèmes. Pour générer les
données, nous avons utilisé une distribution log normale et nous avons étudié 112 différentes
94
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
tailles de problèmes. Pour chaque taille et chaque configuration, 32 tests ont été générés. En
premier lieu, notre comparaison est faite par rapport à la solution optimale. Dans le but de
calculer cette dernière, toutes les séquences de travaux ont été énumérées. La séquence avec
le plus petit C max a été retenue. L'algorithme énumératif est désigné par OPT.
Données
Le nombre de travaux varie dans cet ensemble [3, 4, 5, 6, 7, 8, 9, 10]. Les différents nombres
de machines sont [4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30]. Les durées opératoires
sont des entiers et elles sont générées avec une moyenne égale à 12 et un écart type égal à 4.
Résultats
Les résultats des expérimentations, pour les différentes configurations, sont présentés par les
tables 3.6 à 3.13. Pour chaque configuration, nous trouvons :
-
m : le nombre de machines,
-
PMin : min
(( NIRi − OPTi ) / OPTi ) où NIRi et OPTi sont, respectivement, les valeurs
i =1..32
des C max obtenus par l’heuristique NIR et la solution optimale OPT pour le ième test ;
PMin est ainsi le minimum des écarts entre la valeur de la solution trouvée par
l'heuristique NIR et celle trouvée par la solution optimale OPT, divisés par la solution
optimale,
-
PMax : max
(( NIRi − OPTi ) / OPTi ) , le maximum des écarts entre la valeur de la
i =1..32
solution trouvée par l'heuristique NIR et celle trouvée par la solution optimale OPT,
divisés par la solution optimale,
-
PMoy : moy (( NIRi − OPTi ) / OPTi) , la moyenne des écarts entre la valeur de la
i =1..32
solution trouvée par l'heuristique NIR et celle trouvée par la solution optimale OPT,
divisés par la solution optimale.
Pour le cas de deux travaux, l’heuristique se ramène à un algorithme de résolution exacte
puisque la règle de l'insertion la plus proche donne toujours la solution optimale pour le cas de
deux villes. Pour les configurations avec n = 3, n = 4 et n = 5 et m variant de 4 à 30,
l’heuristique NIR donne assez souvent l’ordre qui minimise le C max . Pour n supérieur à 5,
le minimum des rapports ne dépasse pas 4,8% et la moyenne des rapports ne dépasse pas
10,10%. Dans le pire des cas, le maximum ne dépasse pas 20,8%. L’écart entre les valeurs
moyennes et les valeurs maximums est significatif de la rareté relative des pires cas.
95
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
m
PMin. PMoy. PMax.
m
PMin.
PMoy.
PMax.
4
0
0,0404 0,1587
4
0
0,0458
0,1591
6
0
0,0216 0,0870
6
0
0,0339
0,1275
8
0
0,0197 0,1111
8
0
0,0438
0,1333
10
0
0,0189 0,0983
10
0
0,0372
0,1506
12
0
0,0118 0,0537
12
0
0,0365
0,0927
14
0
0,0186 0,0691
14
0
0,0386
0,0989
16
0
0,0211 0,1061
16
0
0,0208
0,0458
18
0
0,0157 0,0664
18
0
0,0270
0,0655
20
0
0,0112 0,0429
20
0
0,0260
0,0829
22
0
0,0116 0,0640
22
0
0,0238
0,0877
24
0
0,0090 0,0470
24
0
0,0280
0,0888
26
0
0,0117 0,0450
26
0
0,0185
0,0769
28
0
0,0173 0,0502
28
0
0,0228
0,0546
30
0
0,0165 0,0512
30
0
0,0235
0,0725
Moyenne
0
0,0175 0,0750
Moyenne
0
0,0305
0,0955
Table 3.6. Cas de trois travaux
m
PMin. PMoy. PMax.
Table 3.7. Cas de quatre travaux
m
PMin.
PMoy.
PMax.
4
0
0,0601 0,1684
4
0
0,0611
0,1481
6
0
0,0400 0,1168
6
0
0,0563
0,1846
8
0
0,0497 0,1579
8
0
0,0585
0,1244
10
0
0,0425 0,1250
10
0,0097
0,0608
0,1395
12
0
0,0441 0,1296
12
0,0045
0,0581
0,1152
14
0
0,0415 0,0870
14
0,0035
0,0451
0,1190
16
0
0,0395 0,1226
16
0,0108
0,0532
0,1220
18
0
0,0339 0,0779
18
0,0055
0,0528
0,1163
20
0
0,0425 0,0939
20
0,0145
0,0540 0,1308
22
0
0,0383 0,0921
22
0
0,0463 0,1062
0,0092 0,0340 0,0786
24
0,0042
0,0475 0,1390
24
26
0
0,0301 0,0941
26
0
0,0418 0,0755
28
0
0,0285 0,0754
28
0
0,0385 0,0863
30
0
0,0302 0,0909
30
0
0,0363 0,0865
Moyenne
0,0037
0,0507 0,1209
Moyenne 0,0006 0,0396 0,1078
Table 3.8. Cas de cinq travaux
Table 3.9. Cas de six travaux
96
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
m
PMin. PMoy. PMax.
m
PMin.
PMoy.
PMax.
4
0,0204 0,0861 0,2031
4
0,0079
0,0907
0,0626
0,0738 0,1503
6
0,0054
0,0736
0,1346
8
0,0100 0,0721 0,1399
8
0,0141
0,0831
0,1532
10
0,0085 0,0594 0,1586
10
0,0310
0,0848
0,1739
12
0,0104 0,0660 0,1621
12
0,0223
0,0742
0,1365
14
0,0060 0,0689 0,1319
14
0,0336
0,0753
0,1338
16
0,0220 0,0586 0,1529
16
0,0208
0,0793
0,1746
18
0,0026 0,0586 0,0972
18
0,0075
0,0674
0,1525
20
0,0198 0,0583 0,1005
20
0,0163
0,0606
0,1303
22
0,0085 0,0545 0,1196
22
0,0204
0,0667
0,1336
24
0,0062 0,0588 0,1313
24
0,0295
0,0658
0,1508
26
0,0037 0,0555 0,0916
26
0,0219
0,0615
0,1128
28
0,0055 0,0489 0,0937
28
0,0265
0,0626
0,0986
30
0,0094
0,0603
0,1079
Moyenne
0,0190
0,0718
0,1397
6
30
0
0
0,0481 0,0979
Moyenne 0,0088 0,0620 0,1308
Table 3.10. Cas de sept travaux
Table 3.11. Cas de huit travaux
m
PMin. PMoy. PMax.
m
PMin.
PMoy.
PMax.
4
0,0144 0,0852 0,1959
4
0,0320
0,0900
0,1860
6
0,0284 0,0875 0,1979
6
0,0140
0,1030
0,1730
8
0,0375 0,1008 0,1532
8
0,0320
0,1010
0,2080
10
0,0387 0,0953 0,1885
10
0,0340
0,0950
0,1680
12
0,0141 0,0870 0,1649
12
0,0280
0,1000
0,1760
14
0,0391 0,0856 0,1648
14
0,0340
0,0890
0,1440
16
0,0323 0,0858 0,1897
16
0,0480
0,0950
0,2080
18
0,0132 0,0779 0,1560
18
0,0400
0,0940
0,1900
20
0,0186 0,0721 0,1450
20
0,0390
0,0770
0,1270
22
0,0313 0,0673 0,1022
22
0,0370
0,0787
0,1434
24
0,0208 0,0634 0,1245
24
0,0379
0,0771
0,1318
26
0,0294 0,0733 0,1070
26
0,0203
0,0727
0,1233
28
0,0209 0,0668 0,1128
28
0,0399
0,0750
0,1500
30
0,0169 0,0709 0,1205
30
0,0311
0,0720
0,1102
Moyenne
0,0333
0,0871
0,1599
Moyenne 0,0254 0,0799 0,1516
Table 3.12. Cas de neuf travaux
Table 3.13. Cas de dix travaux
97
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
0,18
0,16
0,14
0,12
0,10
0,08
0,06
0,04
0,02
0,00
PMin
PMoy
PMax
2
3
4
5
6
7
8
9
10
Nombre de travaux
Figure 3.8. Les résultats de l'heuristique pour n<=10 et m<=30
La figure 3.8 donne l’allure de l’évolution de PMin, de PMoy et de PMax en fonction du
nombre de travaux. Nous retiendrons que pour n allant jusqu’à 10 et m allant jusqu’à 3, la
valeur de PMoy reste inférieure à 10% et celle de PMax reste inférieure à 20%. La série des
moyennes est plus proche de la série des minimums que de celle des maximums.
m
n=2
n=3
n=4
n=5
n=6
n=7
n=8
n=9
n = 10
4
32
10
5
5
1
0
0
0
0
6
32
14
9
8
1
1
0
0
0
8
32
15
3
4
1
0
0
0
0
10
32
16
6
4
0
0
0
0
0
12
32
15
4
3
0
0
0
0
0
14
32
13
2
1
0
0
0
0
0
16
32
11
7
1
0
0
0
0
0
18
32
15
5
2
0
0
0
0
0
20
32
14
7
1
0
0
0
0
0
22
32
12
5
3
1
0
0
0
0
24
32
19
1
0
0
0
0
0
0
26
32
12
9
4
1
0
0
0
0
28
32
7
7
4
1
0
0
0
0
30
32
8
3
3
1
1
0
0
0
Table 3.14. Nombre de solutions optimales trouvées par NIR
La table 3.14 présente, pour chaque configuration, le nombre de cas où l’heuristique NIR
trouve la solution optimale (c.-à-d. lorsque la solution de l'heuristique est la même que la
98
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
solution trouvée par énumération). Comme nous l'avons déjà mentionné, 32 tests sont résolus
pour chaque configuration et, pour le cas de deux travaux, les résultats sont nécessairement
identiques. Lorsque n augmente, le nombre de solutions optimales trouvées décroît. Pour un n
donné, le nombre de cas où cette heuristique donne la solution optimale est non linéaire.
2.3.2. Comparaison avec la solution trouvée par un solveur
Dans la pratique, le recours à la résolution par énumération n’est pas concevable (signalons
que, d’une part, les expérimentations rapportées ci-dessus ont nécessité des temps de calcul
atteignant quelques heures à plusieurs jours et, d’autre part, nous ne pouvons pas énumérer
pour plus de dix travaux). Aussi, nous avons envisagé d’étudier la résolution par le solveur de
programmation mixte Lingo sur la base du modèle présenté dans la section 1.2.2.1 de ce
chapitre [Saadani et al., 2003b].
La qualité de notre heuristique a été examinée en résolvant 270 problèmes. Pour générer les
données du problème, la même distribution log normale a été employée. Nous avons fait notre
étude pour un nombre de machines variant de 5 à 25 avec un pas égal à 5. Le nombre
maximum de travaux dépend de la capacité du solveur. Pour chaque configuration de
problème, 10 tests sont générés.
Nous rappelons que la version utilisée de Lingo fonctionne avec un nombre maximum de
4000 contraintes et de 800 variables. Dans la table 3.15, nous donnons un aperçu sur la taille
des problèmes étudiés en nombre de travaux, nombre de contraintes et nombre de variables.
Nombre de
Nombre maximum
Nombre de
Espace mémoire
Nombre de
machines
de travaux
variables
(K∅)
contraintes
5
25
750
197
272
10
23
759
281
475
15
21
756
337
638
20
20
800
391
802
25
18
774
405
895
30
17
799
437
1009
Table 3.15. Caractéristiques des problèmes générés
99
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
Les tables de 3.16 à 3.21 rapportent les résultats des expérimentations pour chaque valeur de
n. Pour chaque taille de problème, 10 tests sont considérés. Nous trouvons pour chaque
configuration de problème :
-
n : le nombre de travaux,
-
PMin : min
(( NIRi − LGi ) / LGi ) où NIRi et LGi sont, respectivement, les valeurs des
i =1..10
C max obtenus par l’heuristique NIR et la résolution du solveur Lingo pour le ième test ;
PMin est le minimum des écarts entre la valeur de la solution trouvée par notre heuristique
(NIR) et la solution obtenue avec Lingo (LG), divisés par la solution obtenue avec Lingo,
-
PMax : max
(( NIRi − LGi ) / LGi ) , le maximum des écarts entre la valeur de la solution
i =1..10
trouvée par notre heuristique (NIR) et la solution obtenue avec Lingo (LG), divisés par la
solution obtenue avec Lingo,
-
PMoy : moy (( NIRi − LGi ) / LGi ) , la moyenne des écarts entre la valeur de la solution
i =1..10
trouvée par notre heuristique (NIR) et la solution obtenue avec Lingo (LG), divisés par la
solution obtenue avec Lingo,
m=5
PMin.
PMax.
PMoy.
m = 10
PMin.
PMax.
PMoy.
n=5
0,0093
0,0811
0,0408
n=5
0,0000
0,1116
0,0405
n = 10
0,0476
0,0989
0,0764
n = 10
0,0342
0,1593
0,1037
n = 15
0,0391
0,1557
0,0937
n = 15
-0,0206
0,1591
0,0575
n = 20
0,0231
0,1306
0,0752
n = 20
-0,0156
0,0758
0,0336
n = 25
0,0257
0,1433
0,0666
n= 23
-0,0059
0,1245
0,0483
Moyenne
0,0752
0,1219
0,0705
Moyenne
-0,0016
0,1261
0,0567
Table 3.16. Cas de cinq machines
Table 3.17. Cas de dix machines
m = 15
PMin.
PMax.
PMoy.
m = 20
PMin.
PMax.
PMoy.
n=5
0,0168
0,1254
0,0564
n=5
0,0139
0,0896
0,0432
n= 10
0,0173
0,1416
0,0732
n = 10
0,0393
0,1445
0,0864
n = 15
-0,0081
0,1208
0,0416
n = 15
-0,0319
0,0663
0,0168
n = 20
-0,0230
0,0768
0,0348
n = 20
-0,0187
0,0779
0,0168
n = 21
-0,0240
0,0873
0,0277
Moyenne
0,0006
0,0946
0,0408
Moyenne
-0,0042
0,1104
0,0467
Table 3.18. Cas de quinze machines
Table 3.19. Cas de vingt machines
100
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
m = 25
PMin.
PMax.
PMoy.
m = 30
PMin.
PMax.
PMoy.
n=5
0,0000
0,0000
0,0000
n=5
0,0000
0,0000
0,0000
n = 10
0,0346
0,1395
0,0808
n = 10
-0,0302
0,1308
0,0631
n = 15
-0,0704
0,0291
-0,0219
n = 15
-0,0401
0,1711
-0,0108
n = 18
-0,0129
0,0391
0,0082
n= 17
-0,0683
0,0765
0,0035
Moyenne
-0,0122
0,0519
0,0168
Moyenne
-0,0346
0,0946
0,0140
Table 3.20. Cas de vingt cinq machines
Table 3.21. Cas de trente machines
Signalons que lorsque le nombre de travaux augmente, Lingo passe de plus en plus de temps
(variant de quelques heures à des jours) pour trouver la solution optimale. Pour cinq travaux,
il trouve la solution optimale au pire des cas en deux ou trois heures. A partir de dix travaux,
il s'avère difficile d'obtenir l'optimal pour un nombre de machines supérieur à dix. Pour des
grandes tailles, un test d’optimalité peut nécessiter des jours avant qu'il soit achevé.
Cependant, au fur et à mesure des itérations, Lingo affiche la solution obtenue
provisoirement. Nous avons adopté, pour les pires des cas, d’arrêter Lingo au bout de 14
heures et de considérer la solution provisoire comme étant optimale.
A partir des tables 3.16 à 3.21, nous pouvons voir que notre heuristique donne souvent une
solution très proche de celle obtenue avec Lingo. La figure 3.9 illustre l’allure de l’évolution
de min, de moy et de max en fonction du nombre de machines :
-
Courbe moy donne la moyenne des rapports moyens (( C max (NIR)- LG)/ LG) sur le
nombre de problèmes générés pour chaque nombre de machines.
-
Courbe min donne la moyenne des rapports minimums (( C max (NIR)- LG)/ LG) sur le
nombre de problèmes générés pour chaque nombre de machines.
-
Courbe max donne la moyenne des rapports maximums (( C max (NIR)- LG)/ LG) sur le
nombre de problèmes générés pour chaque nombre de machines.
Nous notons que l’écart de la solution obtenue par l’heuristique varie entre 1,4% et 7,05%.
Cependant, l'heuristique proposée fournit une solution en quelques secondes. La figure 3.10
illustre l’allure de l’évolution de min, de moy et de max en fonction du nombre de travaux.
Les écarts pour les trois courbes suivent une allure décroissante à partir de n = 10 ; ceci est
justifié puisque les résultats de Lingo deviennent approchés à partir de dix travaux pour la
plupart des configurations.
101
(Cmax(NIR)-LG)/LG
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
0,14
0,12
0,10
0,08
0,06
0,04
0,02
0,00
-0,02
-0,04
-0,06
min
max
moy
5
10
15
20
25
30
Nombre de machines
Figure 3.9. Comparaison du comportement de l’heuristique avec
(Cmax(NIR)-LG)/LG
celui de la résolution par Lingo en fonction de m
0,16
0,14
0,12
0,10
0,08
0,06
0,04
0,02
0,00
-0,02
-0,04
min
max
moy
5
10
15
20
Nombre de travaux
Figure 3.10. Comparaison du comportement de l’heuristique avec
celui de la résolution par Lingo en fonction de n
Pour un nombre de travaux donné, nous présentons dans la figure 3.11, le nombre de tests
donnant un rapport inférieur à 5%. Comme nous le montrons, le nombre d’occurrences sur 10
testées avec un rapport inférieur à 5%, augmente avec le nombre de travaux. Le nombre
d’occurrences est très important lorsque le nombre de travaux est différent de 10 ; ceci est
justifié par le fait que pour n = 10, Lingo donne la solution optimale et au-delà de 10, les
résultats ne sont plus optimaux et le rapprochement entre les valeurs obtenues de Lingo et
celles obtenues par NIR devient plus important. Dans la figure 3.12, nous avons étudié le
nombre de cas ayant un rapport inférieur à 5% pour chaque nombre de machines. Le nombre
de cas augmente avec le nombre de machines lorsque la valeur de n est grande.
102
Nombre de cas où le rapport est
inférieur à 5%
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
12
10
m=5
8
m=10
m=15
6
m=20
4
m=25
2
m=30
0
5
10
15
20
25
Nombre de travaux
Figure 3.11. Evolution du nombre de cas ayant un
Nombre de cas où le rapport est
inférieur à 5%
rapport inférieur à 5% en fonction du nombre de travaux
12
10
n=5
8
n=10
6
n=15
4
n=20
n=25
2
0
5
10
15
20
25
30
Nombre de machines
Figure 3.12. Evolution du nombre de cas ayant un rapport
inférieur à 5% en fonction du nombre de machines
2.3.3. Comparaison avec les solutions trouvées par l’algorithme de type séparation et
évaluation
Nous avons déjà effectué, dans les deux paragraphes précédents, une comparaison avec les
résultats exacts obtenus par énumération et les résultats fournis par Lingo. Cela nous a permis
de situer les performances de notre heuristique et de mettre en évidence le gain extrêmement
important en temps d’exécution que nous pouvons obtenir avec cette heuristique, si l’on
accepte un écart moyen de précision inférieur à 10%. Toutefois, aussi bien avec le calcul par
énumération qu’avec la résolution Lingo, nous n’avons pas pu aller au-delà des configurations
n = 10 et m = 30 pour la méthode par énumération et n = 17 et m = 30 pour la résolution avec
Lingo. Nous avons été plusieurs fois contraints de nous contentez des solutions intermédiaires
atteintes par Lingo au bout de 14 heures de calcul.
La troisième et la dernière comparaison que nous tentons dans ce paragraphe vise à aller
davantage dans l’augmentation de la taille des problèmes traités (de quoi avoir une idée de
103
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
l’allure du comportement de notre heuristique quand n augmente), en profitant de la précision
apportée par l’algorithme de type séparation et évaluation (que nous désignons par BB) par
rapport à celle offerte par Lingo.
Les résultats des tests sont présentés dans les tables 3.22, 3.23 et 3.24. Pour chaque taille de
problème, 10 tests sont considérés et nous avons gardé les mêmes tests pour les configurations
déjà étudiées dans le paragraphe 2.3.2. Pour chaque configuration de problème, nous avons :
-
PMin : min
(( NIRi − BBi) / BBi) où NIRi et BBi sont, respectivement, les valeurs des
i =1..10
C max obtenus par l’heuristique NIR et la résolution avec l’algorithme de type séparation
et évaluation BB ; ainsi PMin est le minimum des écarts entre la valeur de la solution
trouvée par notre heuristique (NIR) et la résolution avec l’algorithme de type séparation et
évaluation BB, divisés par BBi.
-
PMax : max
(( NIRi − BBi ) / BBi ) , le maximum des écarts entre la valeur de la solution
i =1..10
trouvée par notre heuristique (NIR) et la résolution avec l’algorithme de type séparation et
évaluation BB, divisés par BBi.
-
PMoy : moy (( NIRi − BBi) / BBi) , la moyenne des écarts entre la valeur de la solution
i =1..10
trouvée par notre heuristique (NIR) et la résolution avec l’algorithme de type séparation et
évaluation BB, divisés par BBi.
m=5
PMin.
PMax.
PMoy.
m = 10
PMin.
PMax.
PMoy.
n=5
0,0093
0,0811
0,0408
n=5
0,0000
0,1116
0,0405
n = 10
0,0476
0,0989
0,0764
n = 10
0,0342
0,1593
0,1037
n = 15
0,0391
0,1557
0,0937
n = 15
0,0409
0,2060
0,1004
n = 20
0,0231
0,1306
0,0752
n = 20
0,0354
0,1376
0,0993
n = 25
0,0257
0,1433
0,0666
n= 23
0,0409
0,1756
0,1024
n = 30
0,0107
0,1569
0,1007
Moyenne
0,0259
0,1277
0,0755
Moyenne
0,0302
0,1580
0,0892
Table 3.22. Cas de cinq machines
Table 3.23. Cas de dix machines
En reprenant les mêmes valeurs des tests pour le cas de 5 machines, nous avons obtenu
exactement les mêmes résultats que ceux de la comparaison avec Lingo (voir table 3.22). Les
exécutions sont cependant plus rapides et elles atteignent au maximum 7 heures (pour n = 20).
L’algorithme de type séparation et évaluation est meilleur si nous considérons les durées
d’exécution.
104
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
Pour 10 machines (voir table 3.23), nous avons obtenu aussi des résultats identiques
uniquement pour n = 5 et n = 10, puisque Lingo ne donne plus l’optimal à partir de n = 15. Le
maximum dans les durées d’exécution est de 17 heures (pour n = 20 et n = 23), le nombre de
tests demandant du temps d’exécution est plus grand.
Pour 15 machines (voir table 3.24), nous avons les mêmes résultats que la résolution avec
Lingo pour n = 5 et n = 10. A partir de 15 travaux, les durées commencent à augmenter et,
pour certains tests, elles atteignent des jours (au maximum 7 jours) ; les C max sont cette
fois-ci précis s’appuyant sur une résolution véritablement exacte.
m = 15
PMin.
PMax.
PMoy.
n=5
0,0168
0,1254
0,0564
n= 10
0,0173
0,1416
0,0732
n = 15
0,0576
0,1540
0,1102
n = 21
0,059
0,1675
0,0955
Moyenne
0,0376
0,1471
0,0838
Table 3.24. Cas de quinze machines
A partir de 20 machines, les durées d’exécution avec l’algorithme de type séparation et
évaluation deviennent très grandes. Concernant l’allure du comportement de l’heuristique,
nous avons constaté que les écarts moyens en fonction de n et de m restent à peu près dans la
même fourchette autour de 7% à 8%.
2.3.4. Comparaison dans le cas de trois machines
Nous comparons ici, les résultats de l’heuristique NIR avec ceux de l'heuristique proposée
dans la première section pour le cas de trois machines. Pour générer les données du problème,
nous avons gardé la même loi. Nous avons fait varier n de 5 à 99 par pas de 5. Pour chaque
configuration de problème (20 au total), nous avons généré 32 tests.
La complexité de l'heuristique NIR est en O(n3). L'heuristique H utilise la règle de Johnson
qui a une complexité en O(n*log(n)). H donne un résultat meilleur que NIR dans plusieurs
cas ; les résultats sont rapportés dans la table 3.25.
105
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
n
PMin.
PMax.
PMoy.
Pourcentage de cas où Pourcentage de cas où le rapport
le rapport est
est compris entre 0,0 et 0,05
strictement négatif
5
-0,1753
0,0818
-0,0226
53,13%
37,5%
10
-0,1020
0,1467
-0,0079
50,00%
25,00%
15
-0,1350
0,0872
-0,0073
53,13%
31,25%
20
-0,0325
0,1465
0,0379
12,50%
53,13%
25
-0,0126
0,1344
0,0577
3,13%
34,38%
30
-0,0118
0,1406
0,0432
6,50%
53,13%
35
-0,0287
0,1200
0,0572
3,13%
28,13%
40
0,0020
0,1025
0,0524
0,00%
43,75%
45
0,0112
0,1443
0,0638
0,00%
34,38%
50
-0,0014
0,1333
0,0574
3,13%
43,75%
55
0,0072
0,1209
0,0729
0,00%
18,75%
60
0,0129
0,1960
0,0657
0,00%
28,13%
65
0,0120
0,1032
0,0627
0,00%
34,38%
70
0,0068
0,1671
0,0696
0,00%
31,25%
75
0,0295
0,1196
0,0765
0,00%
25,00%
80
0,0359
0,1251
0,0769
0,00%
12,50%
85
0,0039
0,1201
0,0744
0,00%
18,75%
90
0,0182
0,1190
0,0787
0,00%
12,50%
95
0,0363
0,1166
0,0743
0,00%
16,63%
99
0,0041
0,1312
0,0787
0,00%
16,63%
Moyenne -0,0160
0,1245
0,0531
2,95%
29,85%
Table 3.25.Comparaison entre les résultats de NIR et ceux de H
Il est indiqué, dans cette table, pour chaque configuration de problème :
-
n : le nombre de travaux,
-
PMin : min
(( Hi − NIRi ) / NIRi ) où Hi et NIRi sont, respectivement, les valeurs des
i =1..32
C max obtenus par l’heuristique H et l’heuristique NIR pour le ième test,
-
PMax : max
(( Hi − NIRi) / NIRi) ,
i =1..32
-
PMoy : moy (( Hi − NIRi) / NIRi) ,
-
le pourcentage de cas où le rapport (Hi- NIRi)/ NIRi est négatif sur 32 tests,
i =1..32
106
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
-
le pourcentage de cas où le rapport (Hi- NIRi)/ NIRi est entre 0% et 5% sur 32 tests.
Cette table montre que le minimum des rapports ne dépasse pas –17,3%, le maximum est
entre 8,18% et 19,6% et la moyenne varie de –2,26% à 7,87%. Le nombre de cas où la
solution donnée par H est meilleure que la solution donnée par NIR est plus important quand
le nombre de travaux est inférieur à 20. Pour un nombre de travaux plus grand, l'heuristique
NIR est meilleure.
n
PMin.
PMax.
PMoy.
5
0,0101
0,3026
0,1193
10
0,0321
0,2138
0,1162
15
0,0226
0,2154
0,1180
20
0,0195
0,0909
0,0544
25
0,0000
0,0915
0,0454
30
0,0025
0,0808
0,0462
35
0,0088
0,0713
0,0404
40
0,0071
0,0647
0,0311
45
0,018
0,0727
0,0330
50
0,0045
0,0611
0,0283
55
0,0059
0,0645
0,0334
60
0,0041
0,0572
0,0569
65
0,0064
0,484
0,0240
70
0,0058
0,0558
0,0232
75
0,0056
0,0486
0,0221
80
0,0063
0,0620
0,0220
85
0,0086
0,0501
0,0239
90
0,0045
0,0457
0,0194
95
0,0070
0,0377
0,0200
99
0,0024
0,0325
0,0160
Moyenne
0,0088
0,0884
0,0432
Table 3.26. Comportement de NIR vis-à-vis de la borne inférieure
D'après les résultats trouvés dans le cas de trois machines, cette étude confirme que NIR est
meilleure quand le nombre de travaux est supérieur à 20. L’heuristique NIR a donc l’avantage,
non seulement de pouvoir s’appliquer pour m plus grand que trois, mais aussi de donner de
107
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
meilleurs résultats lorsque n augmente et ceci même pour le cas de m = 3. Nous avons aussi
comparé les résultats de NIR avec la borne inférieure proposée dans le cas de trois machines.
La table 3.26 donne le comportement de l'heuristique NIR vis-à-vis de la borne inférieure pour
le cas de trois machines. Pour chaque problème, nous définissons le minimum, le maximum et
la moyenne des écarts entre la valeur de la solution NIR et la valeur de la borne inférieure LB
divisés par la valeur de la borne.
3. Etude d’un cas particulier d’application
Dans la pratique du terrain, le fonctionnement continu peut n’être exigé que de certains
composants seulement du système. Dans cette section, nous étudions un cas particulier de
flow-shop à trois étages où la contrainte no-idle est appliquée uniquement au second étage. Il
s’agit d’une application inspirée du cas réel d’un atelier de fonderie. Aussi, contrairement à
l’hypothèse adoptée dans ce qui précède, le fonctionnement de cet atelier est celui d’un flowshop libre et non d’un flow-shop de permutation. Des heuristiques sont proposées et testées
pour un nombre de travaux allant jusqu’à 30. Nous étendons, ensuite, l’application en
remplaçant le troisième étage par des machines parallèles [Saadani et al., 2002b].
Nous nous intéressons tout d’abord à un problème flow-shop à trois étages composé d’une
seule machine par étage où la contrainte no-idle doit être respectée sur le second étage.
Comme nous l’avons déjà fait remarqué auparavant, cette contrainte est implicite sur la
première et dernière machine, les travaux peuvent toujours être décalés vers la droite pour
respecter la contrainte et sans que le makespan ( C max ) ne soit modifié. Le problème étudié
dans cette section peut se rencontrer dans une fonderie de fontes qui comprend généralement
trois étages (W1, W2, W3). A l’étage W1, des noyaux en sable sont fabriqués sur plusieurs
machines travaillant en parallèle. Le regroupement des noyaux entrant dans un moule
(collection) s’effectue dans le cadre de la gestion d’un stock intermédiaire. Au deuxième
étage (W2), des machines reliées par un convoyeur automatique fabriquent le brut de fonderie.
Le dernier étage (W3) est composé d’un ensemble de machines parallèles permettant
l’ébarbage des bruts de fonderie. Nous supposons la présence d’un tampon de taille illimitée
entre les étages. L’étage W2 peut être considéré comme une seule machine (opérations
synchrones cadencées par le convoyeur) avec la contrainte no-idle puisque nous avons besoin
de remplir les moules avec la fonte qui ne doit pas trop baisser en température. Pour simplifier
notre travail, nous considérons que le premier et le dernier étage contiennent chacun une seule
machine, en divisant la somme des durées opératoires par le nombre de machines de chaque
108
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
étage. Chaque travail doit passer par W1, ensuite W2 et enfin W3, mais l’ordre de passage des
travaux sur chacune des machines peut être quelconque.
Nous commençons par rechercher l’ordre qui minimise le C max de ce problème où chaque
étage est réduit à une seule machine, ensuite nous étendons nos travaux pour le cas de
plusieurs machines sur le dernier étage. Dans la sous-section suivante, nous présentons un
modèle d’un problème flow-shop à trois machines respectant la contrainte no-idle sur la
deuxième machine, F 3 / 2 − no − idle / C max et nous rappelons que le problème n’est plus un
flow-shop de permutation. Ensuite, nous proposons deux heuristiques pour résoudre ce
problème, ainsi qu’une étude expérimentale est présentée. Dans la sous-section 3.4, nous
étendons ce travail pour plusieurs machines parallèles au dernier étage.
3.1. Analyse du problème
Nous rappelons que le problème étudié F 3 / 2 − no − idle / C max est un flow-shop sans
permutation à trois machines respectant la contrainte no-idle sur la seconde machine. Il s’agit
d’ordonner n travaux (J1, J2,.., Jn) sur trois machines (M1, M2, M3). Un travail Ji (pour i = 1 ..
n) a au plus trois opérations (Oi,1, Oi,2, Oi,3). Une opération Oi,r doit être exécutée sur la
machine Mr sans interruption durant pi,r unités de temps. Ces durées sont fixes et positives,
elles peuvent être nulles si certains travaux ne sont pas exécutés sur une machine. Deux
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 est exécuté au plus une fois sur
chaque machine selon la même séquence M1, M2, M3. La séquence de travaux n’est pas
forcément la même pour chaque étage. Sur la deuxième machine, si un travail commence à
être exécuté, cette dernière ne doit jamais attendre le travail suivant s’il existe, mais un travail
peut attendre une machine.
Considérons les paramètres suivants :
n : le nombre de travaux à exécuter,
P = { pi , r }: la durée opératoire du travail Ji sur la machine Mr (matrice n × 3).
Z = { Zi , j , r }: une matrice binaire, Zi , j , r = 1 si le travail Ji est à la position j dans la séquence de
travaux sur la machine Mr, 0 sinon. Pour toute solution, il y a uniquement n variables dont la
valeur est égale à 1.
C = { Cj , r }: la date d’achèvement du travail à la jème position dans la séquence des travaux sur
la machine Mr.
109
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
F = { Fi , r }: la date de fin du travail Ji sur la machine Mr.
Les contraintes sont les suivantes :
n
∑Z
i, j, r
=1
(i = 1, ..., n; r = 1, .., 3)
(12)
i, j, r
=1
(j = 1, ..., n; r = 1, .., 3)
(13)
(r = 2; j = 1, ..., n - 1)
(14)
(r = 1 ou r = 3; j = 1, ..., n - 1)
(15)
j =1
n
∑Z
i =1
n
C j , r + ∑ pi , r * Z i , j + 1 , r = C j + 1 , r
i =1
n
C j , r + ∑ pi , r * Z i , j + 1 , r ≤ C j + 1 , r
i =1
n
Fi , r + ∑ pi , r + 1 * Zi , j , r + 1 ≤ Fi , r + 1
(r = 1, ...,3; j = 1, ..., n)
(16)
j =1
n
∑ p *Z = C
i ,1
i ,1,1
(17)
1, 1
i =1
Fi , r ≥ C j , r − ( Zi , j , r − 1) * HV
Cj , r ≥ Fi , r − ( Zi , j , r − 1) * HV
∀ i, j, r
(j = 1, ..., n; r = 1, .., 3 ; i = 1, ..., n)
et HV une grande valeur
(18)
Et la fonction objectif :
C max = Cn , m
(19)
Min( Cmax )
(20)
La fonction objectif (19) et l’équation (20) précisent que l’objectif est de minimiser le
maximum des dates d’achèvement. Les contraintes (12) expriment le fait que chaque travail
doit être affecté à une seule position dans la séquence et les contraintes (13) spécifient le fait
que chaque position est affectée à un seul travail sur chaque machine. Avec les contraintes
(14), la date d’achèvement du travail à la position j+1 sur la seconde machine est égale à la
somme de la date d’achèvement du travail à la position j sur cette machine et la durée
opératoire d’un travail à la position j+1 sur la même machine. Aucun temps mort n’est
permis. Les contraintes (15) montrent que la date d’achèvement du travail à la position j+1 sur
la machine Mr (la première ou la dernière) est au moins égale à la somme de la date
110
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
d’achèvement du travail à la position j sur la machine Mr et de la durée opératoire du travail à
la position j+1 sur la machine Mr. Sur ces machines les temps morts sont permis. Les
contraintes (16) expriment le fait que la date de fin du travail Ji sur la machine Mr+1 est au
moins égale à la somme de la date de fin du travail Ji sur la machine Mr et de la durée
opératoire du travail Ji sur la machine Mr+1. Les contraintes (17) spécifient que la date
d’achèvement du premier travail sur la première machine est égale à sa durée opératoire sur
cette machine. Les contraintes (18) égalisent la date d’achèvement et la date de fin d’un
travail Ji à la position j sur la machine Mr.
3.2. Heuristique
La NP-complétude du problème F 3 / no − idle / C max a été montrée au premier chapitre.
Pour deux machines, la résolution est similaire à celle du problème F 3 // C max qui est
trouvée en appliquant la règle de Johnson.
Cette
dernière
caractéristique
F 3 / 2 − no − idle / C max .
peut
être
utilisée
pour
résoudre
le
problème
Deux heuristiques utilisant le même principe peuvent être
proposées : le problème à trois machines est réduit à un problème flow-shop de permutation à
deux machines. Le meilleur ordre est obtenu par la règle de Johnson, que nous appliquons
ensuite sur chaque machine. H1 présente l’heuristique utilisant l’ordre de Johnson du
problème réduit (flow-shop de permutation à deux machines) où la durée opératoire du travail
Ji sur la première machine est la somme de celles sur M1 et M2, et la durée opératoire sur la
deuxième machine est la même que celle sur M3. H2 présente l’heuristique utilisant l’ordre de
Johnson du problème réduit où la durée opératoire sur la première machine est la même que
sur M1 et la durée opératoire sur la deuxième machine est la somme de celles sur M2 et M3.
3.3. Expérimentations
Dans ce paragraphe, nous comparons les résultats des heuristiques proposées avec une borne
inférieure.
3.3.1. Données
La qualité de notre heuristique a été examinée en résolvant 448 problèmes. Les données d’un
problème sont générées selon la même loi. Nous avons fait notre étude pour un nombre de
travaux variant dans [4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30]. Pour chaque
configuration de problème, 32 tests sont générés.
111
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
3.3.2. Borne inférieure
L’organisation étudiée est un flow-shop hybride à trois étages avec une seule machine au
deuxième étage et plusieurs pour les autres. Pour évaluer les performances de ces
heuristiques, plusieurs bornes inférieures ont été définies. Un ensemble de bornes inférieures
LB(h) sont dérivées en réduisant un problème à m étages en série avec des machines parallèles
à chaque étage à m problèmes de machines parallèles :
[ ]
h −1
n
l =1
i =1
[
m
LB (h) = Minimum
∑ p i ,l + ∑ p i , h / x(h) + Minimum
∑ p i ,l
∀i =1.. n
∀i =1.. n
l = h +1
]
∀h = 1,..., m
LB = Maximum
[LB(h)] LB(0) = 0
∀h = 0 ,..., m
où x(h) définit le nombre de machines à l’étage h.
Le premier terme de la borne inférieure LB(h) est égal au minimum du temps d’attente du
premier travail à l’étage h. Le second terme est égal à la date d’achèvement nécessaire pour
exécuter tous les travaux à l’étage h dans le cas préemptif [Gupta, 1988], [Gupta et Tunc,
1991] et [Srikandarjah et Sethi, 1989]. Le troisième terme est égal au minimum de la durée
opératoire pour terminer le dernier travail à l’étage h.
Puisque nous traitons une organisation présentant un flow-shop simple avec trois machines,
x(h) sera considéré égal à 1 pour chaque étage.
3.3.3. Résultats
Pour chaque problème, les heuristiques H1 et H2 sont appliquées et le C max est évalué.
Le détail des résultats est présenté par les trois tables suivantes :
-
La table 3.27 donne la moyenne des rapports ((Cmax(H1)-LB)/LB) et ((Cmax(H2)LB)/LB) sur les 32 problèmes générés pour chaque nombre de travaux,
-
la table 3.28 donne le maximum des rapports ((Cmax(H1)-LB)/LB) et ((Cmax(H2)LB)/LB) sur les 32 problèmes générés pour chaque nombre de travaux,
-
la table 3.29 donne le minimum des rapports ((Cmax(H1)-LB)/LB) et ((Cmax(H2)LB)/LB) sur les 32 problèmes générés pour chaque nombre de travaux.
112
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
En examinant le comportement des heuristiques (table 3.27), la tendance des moyennes
s’inverse lorsque le nombre de travaux augmente. Ces moyennes atteindront au maximum
0,1014 pour H1 et 0,1073 pour H2.
n
H1
H2
n
H1
H2
n
H1
H2
4
0,1014
0,1073
4
0,2676
0,2958
4
0,0125
0,0000
6
0,1002
0,0974
6
0,3152
0,3696
6
0,0000
0,0000
8
0,0898
0,0953
8
0,2049
0,2376
8
0,0000
0,0083
10
0,0907
0,0844
10
0,2517
0,2657
10
0,0000
0,0000
12
0,0825
0,0866
12
0,1818
0,1569
12
0,0000
0,0000
14
0,0845
0,0703
14
0,2065
0,2258
14
0,0154
0,0103
16
0,0764
0,0702
16
0,2082
0,1959
16
0,0000
0,0046
18
0,0715
0,0741
18
0,1794
0,1839
18
0,0040
0,0000
20
0,0627
0,0691
20
0,1744
0,1203
20
0,0040
0,0038
22
0,0569
0,0535
22
0,1894
0,2143
22
0,0000
0,0035
24
0,0568
0,0595
24
0,1263
0,1480
24
0,0034
0,0091
26
0,0627
0,0661
26
0,1610
0,1672
26
0,0029
0,0121
28
0,0553
0,0525
28
0,1226
0,1239
28
0,0027
0,0028
30
0,0569
0,0600
30
0,1893
0,1825
30
0,0028
0,0080
Moy.: 0,0749
0,0749
Moy.: 0,1985
0,2062
Moy.: 0,0034
0,0045
Table 3.27. Variation des
moyennes
Table 3.28. Variation des
Table 3.29. Variation des
maximums
minimums
Les maximums de ces rapports ne dépassent pas 0,3152 pour H1 et 0,3696 pour H2.
Considérons la table 3.28, nous pouvons constater que quelques cas donnent une valeur
élevée. Concernant la table 3.29, le minimum du rapport est très proche de zéro pour les deux
heuristiques.
La figure 3.13 présente les courbes ch1 et ch2 de la moyenne des rapports de ((Cmax(H1)LB)/LB) et ((Cmax(H2)-LB)/LB) sur 32 problèmes pour chaque nombre de travaux. Les deux
solutions proposées donnent le même résultat.
113
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
12,00%
10,00%
8,00%
ch1
6,00%
ch2
4,00%
2,00%
0,00%
4
6
8 10 12 14 16 18 20 22 24 26 28 30
Nombre de travaux
Figure 3.13. Evolution de la moyenne du rapport.
3.4. Extension au flow-shop hybride
Pour revenir au problème considéré (la fonderie), nous étudions maintenant le problème d’un
flow-shop hybride à trois étages où les deux premiers étages contiennent une seule machine
chacun et le dernier dix machines parallèles. La contrainte no-idle est toujours uniformément
appliquée au second étage. Pour résoudre ce problème (heuristique H3), nous avons appliqué
l’heuristique H1 à un ensemble de deux étages et n travaux. L’ordre obtenu est ensuite utilisé
pour ordonner les travaux sur M1 et M2, et pour l’étage M3 le premier travail disponible est
affecté à la première machine libre de cet étage.
Les nouvelles bornes inférieures sont les suivantes :
[ ]
+ Minimum[∑ p ]
[
h −1
n
LB1(h) = Minimum
∑ p i ,l + Maximum ∑ p i , h / x(h), Maximum( p i , h )
∀i =1.. n
l =1
m
∀i =1.. n
l = h +1
i ,l
i =1
]
∀h = 1,..., m
LB1 = Maximum
[LB(h)] LB1(0) = 0
∀h = 0 ,..., m
où x(h) désigne le nombre de machines dans l’étage h, donc x(1) = x(2) = 1, x(3) = 10 et m
représente le nombre d’étages.
La qualité de l’heuristique a été examinée en résolvant 448 problèmes générés avec la même
loi et le nombre de travaux varie dans [4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30]. Nous
avons toujours 32 tests pour chaque taille de problème et configuration.
Nous considérons les courbes de la figure 3.14 :
-
Courbe min donne le minimum du rapport ((Cmax(H3)-LB1)/LB1) sur 32 problèmes
générés pour chaque nombre de travaux.
114
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
-
Courbe moy donne la moyenne du rapport ((Cmax(H3)-LB1)/LB1) sur 32 problèmes
générés pour chaque nombre de travaux.
-
Courbe max donne le maximum du rapport ((Cmax(H3)-LB1)/LB1) sur 32 problèmes
générés pour chaque nombre de travaux.
30,00%
25,00%
20,00%
15,00%
10,00%
5,00%
0,00%
min
max
moy
4
6
8 10 12 14 16 18 20 22 24 26 28 30
Nombre de travaux
Figure 3.14. Comparaison entre le Cmax obtenu par
H3 et la borne inférieure
n
Min.
Max.
Moy.
n
Nombre de machines en moyenne
32
0,0000
0,0267
0,0109
32
2,9
36
0,0000
0,0331
0,0128
36
3
40
0,0000
0,0241
0,0087
40
3,2
44
0,0019
0,0245
0,0093
44
2,9
48
0,0000
0,0305
0,0103
48
3,1
52
0,0000
0,0163
0,0076
52
3
56
0,0000
0,0116
0,0050
56
2,8
60
0,0028
0,0264
0,0108
60
3
64
0,0013
0,0192
0,0094
64
2,9
68
0,0000
0,0262
0,0072
68
3
72
0,0000
0,0205
0,0094
72
3,3
76
0,0011
0,0147
0,0078
76
3,4
80
0,0000
0,0262
0,0066
80
3,2
84
0,0000
0,0127
0,0049
84
3,3
88
0,0039
0,0113
0,0066
88
3,2
92
0,0018
0,0117
0,0063
92
3,4
96
0,0000
0,0101
0,0062
96
3,5
Moyenne : 0,0008
0,0203
0,0082
Table 3.30. Comparaison de H3 par
Table 3.31. Variation du nombre
rapport à la borne inférieure pour un
de machines nécessaires en
nombre de travaux supérieur à 30.
fonction de n.
115
Chapitre 3 : Résolution heuristique du problème flow-shop avec contrainte no-idle
La figure 3.14 montre que la moyenne de l’écart entre le C max trouvé par H3 et la borne
inférieure divisé par la borne inférieure ne dépasse pas 5%. La courbe moy est décroissante
lorsque le nombre de travaux augmente. La courbe min est toujours nulle et la courbe max est
décroissante lorsque n augmente. Ces résultats sont toujours bons même lorsque n atteint 96.
La table 3.30 présente les différents rapports obtenus sur les 32 tests générés pour chaque
nombre de travaux.
Cependant, dix machines sont disponibles au dernier étage. Il serait plus intéressant de
déterminer la moyenne du nombre de machines réellement nécessaires. La table 3.31 donne la
moyenne du nombre de machines utilisées sur les 32 tests et ceci pur chaque nombre de
travaux. Nous pouvons noter que quatre machines au dernier étage sont suffisantes pour avoir
une bonne solution concernant le makespan.
Dans cette section, un cas particulier du flow-shop hybride à trois étages a été étudié. Ce
problème est connu pour être NP-difficile. Une contrainte additive est appliquée au second
étage, no-idle, afin de respecter des caractéristiques industrielles. Notre travail montre que des
heuristiques en O(n*log(n)) peuvent être proposées et offrant une date d’achèvement
maximale avec une erreur ne dépassant pas 3,31% par rapport à une borne inférieure [Saadani
et al., 2002b].
4. Conclusion
Nous avons présenté dans ce chapitre une heuristique de résolution du flow-shop avec
contrainte no-idle dans le cas de trois machines et nous avons prouvé son efficacité en la
comparant par rapport à une borne inférieure. En suite, une heuristique pour traiter le
problème pour un nombre quelconque de machines et basée sur la modélisation du problème
initial en un problème du voyageur de commerce est proposée. Les résultats de cette
heuristique ont été comparés à ceux obtenus par un solveur de programmation linéaire entière
mixte. La dernière partie s’est intéressée à l’étude d’un cas pratique, celui d’une fonderie ainsi
que la proposition d’une méthode en O(n*log(n)). Dans ce chapitre, nous nous sommes
intéressés qu’aux heuristiques contrairement au chapitre précédent. Dans le chapitre suivant,
nous traitons un autre aspect qui est la relaxation de la contrainte no-idle en insérant un ou
plusieurs temps morts.
116
Chapitre 4
Relaxation de la contrainte no-idle
La contrainte no-idle dans un problème d'ordonnancement exprime le fait qu'une machine
doit fonctionner sans arrêt de la première à la dernière opération. Cette contrainte peut être
utilisée dans des cas industriels, soit en raison de contrainte technologique, soit lorsque les
temps morts d’une ressource sont coûteux. Ainsi, la contrainte no-idle transforme un
problème de séquencement en un problème d'ordonnancement avec contrainte. Dans ce cas,
la contrainte est faible et peut être partiellement relaxée. Dans ce chapitre, nous montrons
qu'avec quelques temps morts, nous pouvons réduire sensiblement l'écart des valeurs entre les
C max des solutions des problèmes F / no − idle / C max et F // C max . Une solution
approchée du problème F / h − idle / C max , où h est le nombre de temps morts permis, peut
être obtenue soit en relaxant l'ordre associé au problème F / no − idle / C max soit en
relaxant l'ordre associé au problème F // C max .
Dans la plupart des cas, pour un nombre de machines inférieur à cinq, une bonne solution du
F / h − idle / C max (pour une valeur de h égale à un ou deux) est obtenue en contraignant
l'ordre de F // C max et non en relaxant l'ordre de F / no − idle / C max .
Dans ce chapitre, nous commençons par étudier l'écart entre le C max d'un flow-shop sans
contrainte no-idle et le C max d'un flow-shop no-idle. Ensuite, nous évaluons le coût de la
relaxation de l'ordre obtenu du problème flow-shop no-idle en insérant un temps mort dans le
cas de trois, quatre et cinq machines. Une étude expérimentale montre, dans la dernière
section, l'importance de la relaxation de la contrainte sur l'ordre obtenu en résolvant un
problème flow-shop sans contrainte no-idle.
1. Etat de l'art
En ordonnancement et dans un atelier, les indicateurs de performances sont le coût, la qualité
et le délai dont le premier dépend de l’ordonnancement. L’un des principaux acteurs est le
coût de la main d’œuvre qui doit être minimisé en réduisant le nombre de temps mort d’une
ressource. Le problème F / no − idle / C max étant contraignant, nous proposons l’étude du
problème F / h − idle / C max dans lequel au plus h temps morts sont permis. A notre
connaissance, ce problème n'a jamais été étudié. Ce modèle est applicable lorsque :
117
Chapitre 4 : Relaxation de la contrainte no-idle
-
La main d'œuvre nécessite une organisation du travail pour de longues périodes
continues et où les périodes de temps morts sont à minimiser,
-
certains temps morts sont programmés (par exemple la maintenance).
L'idée d'insertion de temps morts a été déjà considérée dans différents travaux. Dans [Mazzini
et Armentano, 2001], une heuristique constructive est présentée utilisant l'insertion de temps
morts, afin de minimiser le coût des retards et des avances d'un problème d'ordonnancement
sur une machine où les dates de disponibilités et de livraison sont différentes. La solution
proposée est trouvée en deux étapes. La première consiste en la recherche d'une solution
réalisable avec une procédure constructive et la deuxième consiste en des améliorations
locales appliquées à la solution réalisable trouvée en réalisant des mises à jour de temps
morts. Cette heuristique propose des changements de paires de travaux adjacents tout en
insérant simultanément des temps morts. Ce problème se rencontre souvent dans les systèmes
de fabrication utilisant les concepts de Just-in-Time.
Pour le même problème, une autre heuristique a été proposée [Garey et al., 1976]. Elle insère
optimalement les temps morts sur une séquence donnée de travaux où le coût d'avance et de
retard est égal à un pour tous les travaux. Dans [Baptiste et Hguny, 1997], les auteurs
mentionnent que l'insertion des temps morts est utilisée pour résoudre optimalement un
problème d'ordonnancement sur une machine où l'objectif est de minimiser la somme des
carrées des retards. Nous pouvons aussi citer d'autres références utilisant l'insertion des temps
morts tels que [Kogan, 2000], [Narasimhan et Panwalker, 1984].
Kogan [Kogan, 2000] a analysé un système de production à un étage capable de produire
d'une manière concurrente plusieurs types de production soumis à des rapports de production
répondant à des demandes de production dépendantes. Etant donné un horizon de
planification fini, l'objectif est de minimiser le coût de production qui est encouru quand le
système n'est pas en arrêt ainsi que les coûts de l'inventaire et des tâches de fond.
2. Dégradation du C max entre un flow-shop simple et un flow-shop no-idle
Dans le cas particulier d'un flow-shop à deux machines, la contrainte no-idle n'affecte pas le
makespan. En effet, les opérations sur la deuxième machine peuvent être décalées jusqu'à ce
que tous les temps morts soient supprimés sans conséquence sur le C max . De plus, la
118
Chapitre 4 : Relaxation de la contrainte no-idle
solution optimale pour le problème F 2 // C max peut être trouvée par l’application de la règle
de Johnson [Johnson, 1954], [Pinedo, 1995].
Contrairement à ce qu’on pourrait penser, la contrainte no-idle affecte fortement le makespan
d'un ordonnancement d’un flow-shop à plus de deux machines. Dans cette section, nous
montrons l'impact de cette contrainte.
Pour cela, nous avons étudié des problèmes avec un nombre de travaux n appartenant à [4, 6,
8, 10, 12, 14, 16, 18, 20, 22, 24, 26] et pour chaque valeur de n, le nombre de machines m
prend les valeurs 3, 4, 5. Les durées opératoires sont des entiers générés à l’aide d’une loi
uniforme bornée entre 1 et 10.
La solution optimale du F / no − idle / C max (appelé "a") et la solution optimale du
F // C max (appelé "b") sont trouvées en utilisant le solveur de programmation entière mixte
Lingo (voir annexe) [Lindo, 1999]. Nous avons utilisé le modèle proposé au chapitre 3 pour
modéliser le problème avec contrainte no-idle ainsi que pour représenter le cas d'un flow-shop
sans contrainte no-idle. Le solveur utilise sa procédure d'évaluation et de séparation pour
résoudre les deux modèles puisqu'ils comprennent des variables entières. La version de Lingo
que nous avons utilisé ne donne pas une solution pour un problème avec un nombre de
travaux supérieur à 26 (pour m dans [3, 4, 5]).
Pour chaque configuration de problème, 10 tests sont générés. Pour chaque test, le couple
(a, b) est évalué. Nous étudions ensuite le rapport (a − b) * 100 / b et pour chaque
configuration nous évaluons le minimum, le maximum et la moyenne de ce rapport.
Les figures 4.1, 4.2 et 4.3 donnent la variation (min, max et moy) du rapport (a − b) * 100 / b
pour 3, 4 et 5 machines et pour chaque nombre de travaux.
La valeur minimale de ce rapport est toujours nulle pour 3 et 4 machines. Pour 5 machines, il
est toujours proche de zéro.
La courbe des moyennes de dégradation est en moyenne égale à 3,55% pour trois machines,
2,12% pour quatre machines et 13,4% pour cinq machines.
La courbe des maximums est limitée à 24,56% pour trois machines, 16,67% pour quatre
machines et 49,02% pour cinq machines.
La figure 4.4 montre que dans 35% des cas (pour m = 3, 4 et 5), le C max a une dégradation
entre 10 et 20%, et dans 55,92% des cas la dégradation est inférieure à 10%.
119
Chapitre 4 : Relaxation de la contrainte no-idle
min
max
moy
30%
18%
16%
14%
20%
min
15%
(a-b)*100/b
(a-b)*100/b
25%
max
moy
10%
12%
10%
5%
8%
6%
4%
2%
0%
4
6
8 10 12 14 16 18 20 22 24 26
0%
4
Nombre de travaux
6
8 10 12 14 16 18 20 22 24 26
Nombre de travaux
Figure 4.2. Dégradation du makespan du
F3/no-idle/Cmax au F3//Cmax
F4/no-idle/Cmax au F4//Cmax
60%
60,00%
50%
50,00%
40%
min
30%
max
20%
moy
Probabilité
(a-b)*100/b
Figure 4.1. Dégradation du makespan du
40,00%
30,00%
20,00%
10%
10,00%
0%
4
6
8
0,00%
10 12 14 16 18 20 22 24
0
Nombre de travaux
0_10
10_20
20_30
Figure 4.3. Dégradation du makespan du
Figure 4.4. Probabilité de dégradation du
F5/no-idle/Cmax au F5//Cmax
F/no-idle/Cmax au F//Cmax (350 cas)
3. Relaxation de la contrainte no-idle avec un temps mort
Comme nous l'avons montré dans la section précédente, la contrainte no-idle est une
contrainte forte qui dégrade le makespan. Lorsque cette contrainte est imposée par le
processus, elle devra être respectée. Si elle est prise en compte pour mieux gérer la main
d'œuvre (par exemple éviter le temps mort des opérateurs), il est possible de relaxer
partiellement cette contrainte. Ainsi, nous allons essayé de trouver le meilleur endroit dans
une séquence en no-idle permettant d'insérer un temps mort sur l'une des machines en
minimisant la date d’achèvement globale. Il est évident que si il n'y a pas de temps mort dans
la séquence, avant de décaler les travaux vers la droite pour respecter la contrainte no-idle,
tout temps mort inséré ne va pas diminuer la valeur de la date d'achèvement globale d’une
séquence en no-idle. Nous présentons dans ce qui suit nos résultats concernant l’endroit
d’insertion d’un temps mort dans un ordre donné ainsi que sa durée afin de relaxer au mieux
la contrainte no-idle.
120
Chapitre 4 : Relaxation de la contrainte no-idle
Proposition 4.1.
Pour un ensemble de m machines et n travaux ordonnés en respectant la contrainte no-idle, la
meilleure réduction de la date d'achèvement maximale du flow-shop avec un seul temps mort
qui pourra être obtenue à partir d’une solution no-idle, est trouvée en insérant un temps mort
sur une machine autre que la première et la dernière.
Preuve.
En effet, l'insertion d'un temps mort sur la première machine va, soit augmenter la date
d’achèvement globale, soit la laisser inchangée. Dans ce cas, l'insertion va décaler les travaux,
qui sont calés vers la gauche, vers la droite. Sur la dernière machine, il n' y a pas de temps
mort quand on considère un flow-shop no-idle (travaux calés à droite). S’il y a une possibilité
de décalage à gauche en respectant les contraintes de séquencement des opérations, la date
d’achèvement maximale ne sera pas modifiée, sinon l'insertion peut augmenter la date
d'achèvement maximale.
Proposition 4.2.
Considérons un flow-shop avec n travaux et m machines, un ordre donné (nous pouvons
considérer sans perte de généralité l'ordre lexicographique) et un seul temps mort autorisé (par
exemple sur la (j + 1)ème machine, entre les travaux Jk et Jk+1). La longueur optimale de ce
temps mort (pour réduire au maximum la date d'achèvement globale) est plus petite ou égale à
la somme des temps morts suivant le travail Jk sur la machine Mj+1 dans le flow-shop avec
contrainte no-idle sur les j premières machines et sans la contrainte no-idle sur les autres.
Preuve.
Etant donné un ordre de travaux, nous étudions la construction de l'ordonnancement avec un
temps mort.
……………..
Machine Mj
Machine Mj+1
121
Chapitre 4 : Relaxation de la contrainte no-idle
Considérons que tous les travaux sont exécutés avec la contrainte no-idle sur les j premières
machines. C ' i , j dénote la date d'achèvement du travail Ji sur la machine Mj.
Quand les travaux sont placés sans respecter la contrainte no-idle sur la machine Mj+1, les
dates d'achèvement ( Ci , j ) sont :
C i , j +1 = max(C ' i , j ; C i −1, j +1 ) + p i , j +1
Ensuite, vis-à-vis du flow-shop no-idle sur la j+1ème machine, si l’on veut respecter la
contrainte no-idle sur la machine Mj+1, tous les travaux doivent être décalés vers la droite :
C ' n, j +1 = C n , j +1
et C ' i , j +1 = C i , j +1 + ∑
temps morts situés après le travail Ji ,
pour i = n - 1 .. 1
Si nous décalons avec une longueur supérieure à la somme des temps morts situés après le
travail considéré sur la machine Mj+1, nous sommes obligés de décaler tous les travaux
(dernier travail inclus) vers la droite et la date d'achèvement du dernier travail sur cette
machine augmente, ce qui par conséquent peut accroître la date d'achèvement globale.
Nous obtenons un flow-shop no-idle sur les j + 1 premières machines et nous pouvons refaire
le même raisonnement sur les machines de Mj+2 à Mm.
Dans ce qui suit, nous considérons que l'insertion des temps morts se fait sur une machine
différente de la première et de la dernière. Nous dénotons par C ' i , j la date d'achèvement du
travail Ji sur la machine Mj ainsi que C ' max la date d’achèvement globale quand la
contrainte no-idle est vérifiée sur toutes les machines. C i , j et Si,j dénotent respectivement la
date d'achèvement et la date de début du travail Ji sur la machine Mj quand la contrainte noidle est vérifiée uniquement sur les j-1 premières machines. C max est la date d’achèvement
globale quand un temps mort est inséré sur la machine Mj et la contrainte no-idle est vérifiée
sur les autres machines.
3.1. Cas de trois machines
Dans le cas de trois machines, si nous voulons relaxer la contrainte no-idle pour un flow-shop
no-idle afin de réduire au maximum son C ' max , il faut alors travailler sur la deuxième
machine.
122
Chapitre 4 : Relaxation de la contrainte no-idle
Considérons un flow-shop à 3 machines et un ordre donné qui génère au moins un temps mort
sur la deuxième machine après le travail Ji lorsque la contrainte no-idle est non appliquée.
Soit d la somme des longueurs des temps morts à droite du travail Ji sur M2. Dans ce qui suit,
nous considérons le même ordre avec l’hypothèse que la contrainte no-idle est appliquée
uniquement sur les deux premières machines.
Exemple 4.1. Soit le problème flow-shop dont les durées opératoires sont présentées dans la
table 4.1.
J1
J2
J3
J4
M3
2
4
3
3
M2
3
2
2
4
M3
2
2
5
3
Table 4.1. Durées d’exécution d’un problème flow-shop
M1
M1
M2
M2
M3
M3
J1
5
J2
J3
10
J4
15
J1
20
5
Figure 4.5. Flow-shop sans contrainte
J2
10
J3
J4
15
20
Figure 4.6. Flow-shop avec contrainte
no-idle
no-idle
La figure 4.5 présente le flow-shop associé au problème de la table 4.1 en gardant l’ordre J1,
J2, J3, J4. Le C max est égal à 19. Dans la figure 4.6 le même problème est représenté mais
avec la contrainte no-idle appliquée sur les trois machines. Le C max est égal à 20.
La relaxation de la contrainte avec un temps mort égal à un entre le troisième et le quatrième
travail sur la deuxième machine donne un C max qui vaut 19 (voir figure 4.7). Il est clair que
l’insertion d’une valeur égale à deux, ne va pas diminuer la valeur du C max de deux.
123
Chapitre 4 : Relaxation de la contrainte no-idle
M1
M2
M3
J1
J2
5
10
J3
J4
15
20
Figure 4.7. Contrainte no-idle relaxée
Proposition 4.3.
Pour cet ordre, l'insertion d'un seul temps mort de durée d entre deux travaux Ji et Ji+1 sur la
deuxième machine conduit à un C max dont l’écart vis-à-vis du C ' max de ce flow-shop avec
contrainte no-idle est de :
C ' max − C max = min(d , min (max(0, Sk ,3 − C ' k , 2 )))
k = i +1..n
Preuve.
L’écart des dates d'achèvement globales ( C ' max − C max ) est borné par la longueur du temps
mort inséré (proposition 4.2). En effet, l’insertion d’un temps mort de longueur d sur M2 peut
décaler vers la gauche tous les travaux du flow-shop no-idle situés avant le travail Ji+1 de d.
Sur M3, tous les travaux situés avant Ji+1 peuvent être décalé vers la gauche de d également si
les contraintes de précédence le permettent, mais pour tous ceux qui sont après Ji (à partir de
Ji+1), nous sommes contraints par leurs dates de début au plus tôt sur cette machine (fin
d’opération sur M2). Pour ces travaux, nous calons à gauche au maximum leur date de début
sur M3 (Sk,3) sur sa date d’achèvement sur M2.
En conclusion, les travaux après Ji peuvent être décalés à gauche par le minimum de toutes les
longueurs des différents décalages et de d.
d
d
Avant décalage
Après décalage
Nous avons supposé que sur la troisième machine, la contrainte no-idle est non appliquée sur
la dernière machine et ceci ne va rien changer aux résultats. En effet, deux cas sont possibles :
124
Chapitre 4 : Relaxation de la contrainte no-idle
-
Absence de temps mort sur M3 : Les travaux sont alors en no-idle et donc Si,3 est égale à
S’i,3.
-
Présence d’au moins un temps mort sur M3. Aussi il y a au moins un travail Jk tel que
Sk,3=C’k,2 après le point d’insertion et donc min (max(0, Sl ,3 − C ' l , 2 )) = 0 . On décale donc
l = i +1..n
vers la gauche avant le travail Jk.
Corollaire 4.1. Pour diminuer la date d’achèvement globale d’une séquence en no-idle, il faut
placer un temps mort sur la deuxième machine après le dernier travail vérifiant Ci,2 = S’i,3.
Proposition 4.4.
Supposons que pour un ordre donné dans un flow-shop sans contrainte no-idle, il n'y a pas de
temps mort à droite d'un travail Ji sur la deuxième machine. L'insertion d'un temps mort à
droite de ce travail, dans l'ordonnancement no-idle, ne va pas changer la date d'achèvement
globale. Si la durée du temps mort est supérieure à min ( Sk ,3 − C ' k , 2 ) , l’écart entre le C max
k = i +1.. n
du flow-shop sans contrainte no-idle sur la deuxième machine et le C ' max du flow-shop noidle ( C ' max − C max ) croît par d − min ( Sk ,3 − C ' k , 2 ) .
k = i +1.. n
Preuve.
En effet, l'insertion d'un temps mort, dans ce cas, engendre le décalage des travaux sur la
seconde machine vers la droite. Ce décalage sera compensé si la date d'achèvement du dernier
travail (Jn) sur la deuxième machine est différente de sa date de début sur la dernière machine,
la date d'achèvement du travail Jn-1 sur la deuxième machine est différente de sa date de début
sur la dernière machine,…, la date d'achèvement du travail Ji+1 sur la deuxième machine est
différente de sa date de début sur la dernière machine. Alors, d sera compensé par le
minimum des durées des décalages.
La procédure donnant la meilleure dégradation résultante de l’insertion d’un temps mort de
durée d à droite d’un travail de rang i (cost), est la suivante :
Procédure cost
Début
cost := d;
k := i + 1; /*k est le rang du travail qui suit le travail de rang i dans
l’ordre*/
125
Chapitre 4 : Relaxation de la contrainte no-idle
Tant que (k <= n) et (cost ≠ 0) faire
Si (Sk,3 <= S’k+1,2) alors
cost := 0;
Sinon
cost := min(cost, Sk,3 - C'k,2);
Fin Si
k := k + 1;
Fin Tant que
Fin
Le cas de trois machines a été testé et les résultats qui lui sont associés ont été publiés dans
[Saadani et al., 2002a].
3.2. Cas de quatre et de cinq machines
Nous considérons maintenant les problèmes à quatre et cinq machines. Dans ces cas, la
contrainte no-idle affecte toutes les machines à l'exception de la première et de la dernière.
Pour diminuer la date d'achèvement globale d'un ordonnancement no-idle, des temps morts
peuvent être introduits dans toute machine intermédiaire.
3.2.1. Relaxation d'un flow-shop no-idle avec quatre machines
•
Insertion d'un temps mort sur la troisième machine
Considérons un flow-shop à 4 machines et un ordre donné qui génère au moins un temps mort
sur la troisième machine (lorsque la contrainte no-idle est non respectée). Soit d la somme des
temps morts à droite du travail Ji sur M3. Par la suite, nous considérons le même ordre de
travaux où la contrainte no-idle est appliquée sur toutes les machines. La réduction maximale
obtenue par insertion d’un temps mort sur la troisième machine est donnée par la proposition
4.5.
Proposition 4.5.
Pour cet ordre, l'insertion d'un seul temps mort de durée d entre deux travaux Ji et Ji+1 sur la
troisième machine conduit à un C max dont l’écart vis-à-vis du C'max de ce flow-shop avec
contrainte no-idle est de :
C ' max − C max = min(d , min ( Sk , 4 − C ' k ,3 ))
k = i +1..n
126
Chapitre 4 : Relaxation de la contrainte no-idle
Preuve.
La preuve est similaire à celle de la proposition 4.3. En effet, l’écart optimal des dates
d'achèvement globales ( C ' max − C max ) est borné par la longueur du temps mort inséré.
L’insertion d’un temps mort sur M3 peut décaler vers la gauche tous les travaux situés avant le
travail Ji+1 de d. Sur M4, tous les travaux situés avant Ji+1 peuvent être décalés vers la gauche
de d, mais pour tous ceux qui sont après Ji (à partir de Ji+1), nous sommes limités par leurs
dates de début au plus tôt sur cette machine (fin d’opération sur M3). Pour un tel travail, nous
calons à gauche au maximum leur date de début sur M4 (Sk,4) sur sa date d’achèvement sur M3
(C’k,4). En conclusion, les travaux après Ji peuvent être décalés à gauche par le minimum de
toutes les longueurs des différents décalages et de d.
•
Insertion d'un temps mort sur la deuxième machine
Considérons un flow-shop à 4 machines et un ordre donné qui génère au moins un temps mort
sur la deuxième machine (quand la contrainte no-idle est non respectée). Soit d la somme des
temps mort à droite du travail Ji sur M2. Par la suite, nous considérons que la contrainte noidle est appliquée sur toutes les machines. La réduction maximale obtenue par insertion d’un
temps mort sur la deuxième machine est donnée par la proposition 4.6.
Proposition 4.6.
Pour cet ordre, l'insertion d'un temps mort de durée d entre deux travaux Ji et Ji+1 sur la
deuxième machine diminue la date d'achèvement globale par : g =min(d, min (Sk,3−C'k,2 )) visk = i +1..n
à-vis du coût de la solution en no-idle.
Preuve.
Considérons une étape de construction d'un ordonnancement no-idle :
-
Sur M1 et M2, les travaux sont ordonnés avec la contrainte no-idle (obtenus par décalage
vers la droite sur M2).
-
Sur M3, les travaux sont ordonnés sans respect de cette contrainte.
-
Sur M4, les travaux sont ordonnés sans respect de cette contrainte.
Si nous considérons les machines jusqu'à M3, l'insertion d'un temps mort de longueur d après
le travail Ji sur M2, donne sur M3 la décroissance vis-à-vis la dernière date d’achèvement sur
127
Chapitre 4 : Relaxation de la contrainte no-idle
M3 lorsque la contrainte no-idle est appliquée : g = min(d, min (max(0,Sk,3−C'k,2 ))) en fonction
k = i +1..n
de la proposition 4.3.
En effet, la proposition 4.3 précise que sur un flow-shop no-idle à trois machines
l’introduction d’un temps mort de longueur d décroît le C max de la valeur g =
min(d, min (max(0,Sk,3−C'k,2 ))) vis-à-vis du flow-shop no-idle à trois machines sans temps
k = i +1..n
mort.
Considérons le flow-shop no-idle à quatre machines sans temps mort. Si l’on décroît la date
d’achèvement de la dernière opération sur la troisième machine de g par l’introduction d’un
temps mort sachant que les opérations se succèdent sur la troisième machine sans temps mort,
alors un décroissement uniforme de g sera opéré sur les dates d’achèvement des travaux de la
quatrième machine vis-à-vis du problème flow-shop no-idle à quatre machines.
Le même raisonnement peut être entrepris pour le cas de cinq machines avec l’insertion d’un
temps mort sur la deuxième, la troisième ou la quatrième machine et plus généralement pour
la kème machine (k > 5).
3.2.2. Relaxation d'un flow-shop no-idle avec cinq machines
Le travail concernant quatre machines peut être généralisé pour cinq machines. Il y a alors
trois cas possibles pour l'insertion d'un temps mort : sur la seconde, la troisième ou la
quatrième machine. Les preuves des propositions suivantes sont similaires à celles du cas
précédent.
Sk,j dénote le temps de début du travail Jk sur la machine Mj, lorsque la contrainte no-idle est
appliquée sur les (j - 1) premières machines, et C k' , j la date d'achèvement du travail Jk sur la
machine Mj lorsque la contrainte est appliquée sur toutes les machines.
Proposition 4.7.
L'insertion d'un temps mort de durée d entre deux travaux Ji et Ji+1 sur la deuxième machine
fait diminuer la date d'achèvement globale du flow-shop avec contrainte no-idle de :
min(d, min (Sk,3−C'k,2 ))
k = i +1..n
128
Chapitre 4 : Relaxation de la contrainte no-idle
Proposition 4.8.
L'insertion d'un temps mort de durée d entre deux travaux Ji et Ji+1 sur la troisième machine
fait diminuer la date d'achèvement globale du flow-shop avec contrainte no-idle de :
min(d, min (Sk,4−C'k,3 ))
k = i +1..n
Proposition 4.9.
L'insertion d'un temps mort de durée d entre deux travaux Ji et Ji+1 sur la quatrième machine
fait diminuer la date d'achèvement globale du flow-shop avec contrainte no-idle de :
min(d, min (Sk,5−C'k,4 ))
k = i +1..n
Preuve.
La preuve est similaire à celle de la proposition 4.3. En effet, l’écart optimal des dates
d'achèvement globales ( C ' max − C max ) est borné par la longueur du temps mort inséré.
L’insertion d’un temps mort sur M4 peut faire décaler vers la gauche tous les travaux situés
avant le travail Ji+1 de d. Sur M5, tous les travaux situés avant Ji+1 peuvent être décalés vers la
gauche de d, mais pour tous ceux qui sont après Ji (à partir de Ji+1), nous sommes limités par
leurs dates de début au plus tôt sur cette machine (fin d’opération sur M4). Pour un tel travail,
nous calons à gauche au maximum leur date de début sur M5 (au plus tôt Sk,5) sur leur date
d’achèvement sur M4.
En conclusion, les travaux après Ji peuvent être décalés à gauche par le minimum de toutes
les longueurs des différents décalages et de d.
3.2.3. Relaxation d’un flow-shop no-idle avec m machines
Les résultats trouvés dans les sous-sections précédentes peuvent être généralisés pour le cas
de m machines (m > 5) et pour l’insertion d’un temps mort sur n’importe quelle machine
intermédiaire. Pour cet ordre, l’insertion d’un temps mort de durée d entre deux travaux Ji et
Ji+1
sur
la
lème
machine
fait
diminuer
la
date
d'achèvement
min(d, min (Sk,l +1−C'k,l )) vis-à-vis du coût de la solution en no-idle.
k = i +1..n
129
globale
de
:
Chapitre 4 : Relaxation de la contrainte no-idle
4. Expérimentations
Notre but n'est pas la résolution optimale du problème général F / h − idle / C max mais de
trouver un compromis entre le C max et le nombre de périodes. Pour ce problème, trois
approches peuvent être proposées :
1) Développer une méthode pour ce problème (heuristiques ou exactes),
2) Relaxer l'ordre obtenu en résolvant F / no − idle / C max en ajoutant au
maximum h périodes de temps morts,
3) Contraindre le F // C max en mettant au maximum h périodes mortes.
Le but réel est d'évaluer la valeur de h qui donne pour le problème F / h − idle / C max un
résultat proche de la solution du problème F // C max .
10 instances pour chaque taille de
problème
F/no-idle/Cmax
OPT
OPTr1
Séquence d’ordre
Ordonnancement
F//Cmax
OPTr2
FS
FSir0
FSir1
FSir2
Figure 4.8. Schéma du travail
Cette première étude expérimentale s'intéresse uniquement aux solutions 2 et 3, et le but est
de guider l'utilisateur dans son choix entre les deux approches.
Nous avons étudié les problèmes avec un nombre de travaux n dans [4, 6, 8, 10, 12, 14, 16,
18, 20, 22, 24, 26] et pour chaque valeur de n, un nombre de machines m variant dans [3, 4,
5].
Pour chaque cas, 10 problèmes sont générés aléatoirement. Nous avons alors 360 problèmes à
tester. Les durées opératoires sont entières et uniformément distribuées entre 1 et 10.
Pour chaque problème, nous avons déterminé :
-
OPT : C max obtenu par résolution exacte du problème F / no − idle / C max (valeur
optimale),
-
OPTrj : date d'achèvement globale obtenue en relaxant l'ordre de F / no − idle / C max
avec j temps morts ( j = 1, 2),
-
FS : C max obtenu par résolution exacte du problème F // C max (valeur optimale),
-
FSirj : date d'achèvement globale obtenue avec l'ordre associé à F // C max en respectant
la contrainte no-idle et en autorisant par la suite j temps morts (j = 0, 1, 2).
130
Chapitre 4 : Relaxation de la contrainte no-idle
Le schéma général de ce travail est donné dans la figure 4.8. Les valeurs OPT et FS sont
obtenues en résolvant le modèle du chapitre 3 avec Lingo. Nous rappelons que Lingo est
capable de donner la solution optimale pour un nombre faible de machines.
Nous expliquons brièvement comment nous obtenons la date d’achèvement d’un ordre en noidle relaxé, par exemple, par deux temps morts dans le cas de quatre machines. Ces temps
morts peuvent être soit tous les deux sur la deuxième machine, soit tous les deux sur la
troisième machine ou bien un sur la deuxième machine et l’autre sur la troisième machine. Si
nous considérons le cas d’insertion sur deux machines différentes, nous commençons par
évaluer le meilleur emplacement et la durée évoquée par l’insertion d’un temps mort sur la
deuxième machine. Cette insertion va engendrer le décalage de tous les travaux (situés après
le temps mort inséré) qui sont sur les machines suivantes, en particulier la troisième machine
(paragraphe 3 § du chapitre 4). L’insertion d’un temps mort sur une machine donnera une
modification de la dernière date d’achèvement sur la machine suivante qui sera la même pour
toutes les machines qui la suivent. Il suffira alors de calculer les différentes positions
d’insertion et leurs gains correspondants. Il en sera de même, si les deux temps morts sont sur
une même machine. En effet, l’évaluation consiste à déterminer l’effet d’un temps mort en
utilisant la proposition 4.3 avec les nouvelles dates de début sur M3. Ensuite, on insère un
second temps mort à la droite de premier temps mort et avec la même proposition on évalue le
gain avec ce nouveau état. Le gain total va être donc la somme des deux gains engendrés par
les deux insertions.
4.1. Comparaison avec la solution du problème F // C max
Les courbes de la figure 4.9 concernent le problème avec trois machines :
-
courbe OP (3 points) donne la moyenne des rapports (OPT / FS, OPTr1 / FS, OPTr2 / FS)
sur les 120 problèmes générés aléatoirement (pour n dans [4; 26]),
-
courbe F (3 points) donne la moyenne des rapports (FSir0 / FS, FSir1 / FS, FSir2 / FS) sur
les 120 problèmes générés aléatoirement (pour n dans [4; 26]).
Les figures 4.10 et 4.11 présentent le même type de courbes pour 4 et 5 machines.
131
Chapitre 4 : Relaxation de la contrainte no-idle
1,2000
1,1800
1,1600
1,1400
1,1200
1,1000
1,0800
1,0600
1,0400
1,0200
1,0000
0,9800
0,9600
1,1500
1,1000
OP
1,0500
F
1,0000
0,9500
0,9000
0
1
OP
F
0
2
1
2
N om bre d e tem p s m orts
N o m bre de tem ps m o rts
Figure 4.9. Cas de trois machines.
Figure 4.10. Cas de quatre machines.
min
1,2500
1,2000
max
moy
OP
1,1000
FS
(OPTr1-FSIr1)*100
/OPTr1
15,00%
1,1500
10,00%
5,00%
1,0500
0,00%
1,0000
0
1
2
-5,00%
Nombre de temps morts
4
6
8
10
12
14
16
18
20
22
24
26
-10,00%
Nombre de travaux
Figure 4.12. Dégradation du makespan du
Figure 4.11. Cas de cinq machines
F3/no-idle/Cmax au F3//Cmax
Les courbes F et OP sont décroissantes en fonction du nombre de temps morts autorisés.
Lorsque ce nombre est grand, il est intéressant de prendre l'ordre obtenu en résolvant le
problème F // C max plutôt que celui obtenu en résolvant le problème F / no − idle / C max .
Ceci est particulièrement vrai pour trois machines où la solution du F / h − idle / C max est
très proche de celle du F // C max . Lorsque m augmente, cette constatation est moins vraie
(voir figure 4.9) et cet ordre n'est pas toujours bon.
La relaxation à partir de la solution F // C max est plus importante dans les cas de quatre et
cinq machines (voir figures 4.10 et 4.11).
Pour cela, nous avons généré d'autres durées d'exécution pour vérifier le résultat pour le
problème à trois machines. Pour générer les données du problème, une distribution log normal
a été employée avec une moyenne égale à 12 et un écart type égal à 4. Pour chaque nombre de
travaux, 10 tests sont générés. La figure 4.12 donne la variation (min, max, moy) du rapport
(OPTr1 - FSir1)*100 / OPTr1 pour chaque valeur de n.
132
Chapitre 4 : Relaxation de la contrainte no-idle
La moyenne ne dépasse pas 2,2% et elle est toujours positive. La courbe max ne dépasse pas
9,6%. Ceci signifie qu'en moyenne l'ordre obtenu de la résolution du problème F // C max est
bon malgré que le minimum puisse être négatif.
4.2. Comparaison en fonction du nombre de machines
Dans ce paragraphe, nous étudions le pourcentage des cas où la date d'achèvement globale de
l'ordre contraignant le problème F // C max est plus petite que celle de l'ordre du problème
F / no − idle / C max relaxé.
Les courbes de la figure 4.13 sont :
-
Courbe Pr1 donne le pourcentage des cas où FSir1 est plus petit que OPTr1,
-
courbe Pr2 donne le pourcentage des cas où FSir2 est plus petit que OPTr2.
Cette étude est faite sur les mêmes données générées uniformément. Nous rappelons que
FSir1 (respectivement FSir2) est la date d'achèvement globale obtenue avec l'ordre associé à
F // C max en respectant la contrainte no-idle et en autorisant par la suite un (respectivement
deux) temps mort.
Les deux courbes Pr1 et Pr2 ont la même apparence et elles sont croissantes quand le nombre
de machines augmente.
La relaxation avec deux temps morts donne un résultat meilleur que celui obtenu avec un seul
temps mort. Le nombre de cas où FSir2 est plus petit que OPTr2 est toujours meilleur que le
pourcentage de cas
nombre de cas où FSir1 est plus petit que OPTr1.
100%
80%
Pr1
60%
40%
Pr2
20%
0%
3
4
5
Nombre de machines
Figure 4.13. Evolution du nombre des cas où FSirj est meilleur que
OPTij en fonction du nombre de machines
133
Chapitre 4 : Relaxation de la contrainte no-idle
Le nombre de cas où l'ordre obtenu, en résolvant le problème F // C max , donne une solution
meilleure que celui du problème F / no − idle / C max augmente avec le nombre de machines
et peut atteindre 80% des cas. Pour un nombre de machines supérieur à trois, ce pourcentage
est de plus de 50%.
4.3. Comparaison entre les solutions proposées
Un autre aspect à évoquer est l'évolution du rapport (OPTrj - FSirj) / OPTrj (j = 1, 2) , d'une
part, en fonction du nombre de machines, et d'autre part, en fonction du nombre de travaux.
Cette étude est faite aussi sur les mêmes données générées uniformément.
Les courbes de la figure 4.14 sont :
-
Courbe moy donne la moyenne des rapports (OPTr1 - FSir1)*100 / FSir1 sur 120
problèmes générés pour chaque nombre de machines,
-
courbe min donne le minimum des rapports (OPTr1 - FSir1)*100 / FSir1 sur 120
problèmes générés pour chaque nombre de machines,
-
courbe max donne le maximum des rapports (OPTr1 - FSir1)*100 / FSir1 sur 120
problèmes générés pour chaque nombre de machines.
La figure 4.15 donne le même type de courbes en relaxant avec deux temps morts.
La courbe moy de la figure 4.14 montre qu'en moyenne les occurrences étudiées donnent la
même valeur pour OPTr1 et FSir1 et ceci pour 4 et 5 machines. Avec deux temps morts, en
moyenne l'ordre du problème F // C max est meilleur et au pire des cas nous obtenons la
même date d'achèvement que celle de l'ordre du problème F / no − idle / C max .
La courbe max est toujours positive et la courbe min est toujours négative (pour tout nombre
de temps morts insérés).
En moyenne, l'écart type trouvé pour le rapport (OPTr1 - FSir1) / FSir1 est 0,042 pour trois
machines, 0,0116 pour quatre machines et 0,149 pour cinq machines. Pour le rapport ((OPTr2
-FSir2) / OPTr2), l'écart type est plus petit que celui trouvé avec un seul temps mort (0,0414
pour trois machines, 0,0110 pour quatre machines et 0,0133 pour cinq machines).
134
Chapitre 4 : Relaxation de la contrainte no-idle
(OPTr2-FSir2)*100/OPTr2
10%
(OPTr1-FSir1)*100/OPTr1
5%
0%
3
-5%
4
5
m in
-10%
m ax
-15%
m oy
-20%
-25%
-30%
15%
10%
5%
0%
-5%
-10%
-15%
-20%
-25%
-30%
min
3
4
5
max
moy
N om bre de m achines
Nombre de machines
Figure 4.14. Etude du rapport OPTr1-
Figure 4.15. Etude du rapport OPTr2-
FSir1/OPTr1 en fonction du nombre de
FSir2/OPTr2 en fonction du nombre de
machines
machines
Les courbes de la figure 4.16 sont :
-
Courbe m3 donne la moyenne du rapport (OPTr1 - FSir1)*100 / FSir1 sur 10 problèmes
générés pour chaque nombre de travaux dans le cas de trois machines,
-
courbe m4 donne la moyenne du rapport (OPTr1 - FSir1)*100 / FSir1 sur 10 problèmes
générés pour chaque nombre de travaux dans le cas de quatre machines,
-
courbe m5 donne la moyenne du rapport (OPTr1 - FSir1)*100 / FSir1 sur 10 problèmes
générés pour chaque nombre de travaux dans le cas de cinq machines.
La figure 4.17 donne le même type de courbes en relaxant avec deux temps morts.
10%
(OPTr2-FSir2)*100/OPTr2
(OPTr1-FSir1)*100/OPTr1
5%
0%
4
6
8
10 12 14 16 18 20 22 24 26
m3
-5%
m4
-10%
m5
-15%
-20%
5%
0%
4
6
8
10 12 14 16 18 20 22 24 26
m3
m4
-5%
m5
-10%
-15%
-20%
Nombre de travaux
Nombre de travaux
Figure 4.16. Evolution de la moyenne du
Figure 4.17. Evolution de la moyenne du
rapport OPTr1-FSir1/OPTr1 en fonction du
rapport OPTr2-FSir2/OPTr2 en fonction du
nombre de travaux pour chaque nombre de
nombre de travaux pour chaque nombre de
machines
machines
135
Chapitre 4 : Relaxation de la contrainte no-idle
Pour tout nombre de machines et tout nombre de temps morts autorisés, le rapport (OPTrjFSirj)/OPTrj ( j = 1, 2) est presque croissant en fonction du nombre de travaux (pour tout
nombre de temps morts insérés).
Les courbes m4 et m5 sont très proches de zéro que m3 qui peut atteindre -17% (pour un ou
deux temps morts). L’insertion de deux temps morts dans le cas de trois machines ne donne
pas un grand changement.
Ces courbes confirment que l’ordre optimal du problème F // C max peut être intéressant
pour la résolution du problème F / h − idle / C max lorsque le nombre de machines est
supérieur à trois.
5. Conclusion
La contrainte no-idle augmente considérablement les dates d'achèvement globales. En
revanche, les temps morts occasionnés par la main d'œuvre sont coûteux. Sous certaines
circonstances, permettre un petit nombre de temps morts (un ou deux) peut réduire
énormément la date d'achèvement globale. Dans ce chapitre, nous avons étudié le problème
flow-shop minimisant le C max en respectant la contrainte no-idle sur certaines machines et
permettant “h“ temps morts.
Des heuristiques naturelles pour résoudre le problème F / h − idle / C max consistent à relaxer
l'ordre du F / no − idle / C max ou à contraindre l'ordre du F // C max . Des études
expérimentales ont montré que dans plus de 50% de cas étudiés l'ordre du F // C max donne
un bon résultat. Les ordres obtenus donnent une date d'achèvement ne dépassant pas 15% par
rapport au C max associé au flow-shop sans la contrainte no-idle avec un ou deux temps
morts. Finalement, la relaxation de cette contrainte, en ajoutant un petit nombre de temps
morts (1 ou 2), est souvent suffisante pour réduire la date d'achèvement et pour atteindre la
performance d'un flow-shop non contraint. Cette relaxation paraît être une bonne solution
pour le problème F / h − idle / C max .
136
Conclusion
L’ordonnancement repose essentiellement sur la résolution de problèmes combinatoires. Ces
problèmes consistent à rechercher, dans un ensemble de solutions possibles, une solution
particulièrement intéressante au regard d’un ou de plusieurs critères. Ces problèmes sont pour
la plupart NP-complets.
Les problèmes d’ordonnancement peuvent être modélisés analytiquement (fonction objectif,
ensemble de contraintes) selon une démarche classique de recherche opérationnelle afin
d’utiliser des outils standards de résolution. Mais, d’une part, ceci n’autorise pas forcément
l’exploitation des propriétés propres au problème étudié pour affronter la complexité de sa
résolution (alors qu’une approche du type ″séparation et évaluation″ spécifique, par exemple,
le permet) et, d’autre part, le modèle initial ne peut être facilement étendu pour prendre en
compte de nouvelles contraintes.
Dans cette thèse, nous nous sommes intéressés à l’optimisation du makespan sous la
contrainte no-idle pour un problème flow-shop. L’optimisation consiste à trouver un ordre des
travaux donnant la plus petite date d’achèvement globale en assurant que lorsqu’une machine
commence à travailler, elle ne doit s’arrêter que quand tous les travaux qui lui sont affectés
sont achevés. Ce problème est NP-complet. L’importance de l’étude de ce thème se ressent
dans le cas où l’outillage est cher ou quand le temps de démarrage des machines est coûteux.
D’un autre côté, les entreprises ont besoin de gérer efficacement le rendement de leur
personnel de production. La bonne ou la mauvaise répartition des tâches sur les ouvriers
influera sur le coût total calculé soit en temps d’exécution total soit en coûts totaux.
Quelques solutions existent dans la littérature mais la plupart d’entre elles ne traitent pas le
cas général. Les seuls qui aient réellement traité ce problème de près sont Baptiste et Hguny
137
Conclusion
[Baptiste et Hguny, 1997]. Ces derniers ont proposé un algorithme de type séparation et
évaluation qui s’appuie sur une décomposition du problème principal en des sous-problèmes
dont la technique de résolution, quand il n’y a pas de contraintes particulières, est connue. En
cas de présence de contraintes, il faudra énumérer tous les cas possibles. Le problème à
résoudre consiste à déterminer l’ordre d’un ensemble de travaux sur deux machines où
certains travaux ne doivent pas être mis en tête. Notre première contribution dans cette thèse
est le développement d’un ensemble de résultats permettant d’éviter une telle énumération par
une réduction significative du nombre de cas à examiner et de détecter d’entrée les cas à
résolution immédiate. L’étude expérimentale de ce travail a donné une réduction en temps
d’exécution de 12% en moyenne.
La procédure de séparation et d’évaluation proposée génère un nombre de nœuds exponentiel
lorsque le nombre de travaux ou de machines augmente. Notre deuxième apport dans cette
thèse a consisté en la proposition d’une heuristique en O(n*log(n)) pour le problème
F / no − idle / C max dans le cas de trois machines. La conception de cette heuristique est
fondée sur la règle de Johnson pour le cas de deux machines. Les résultats trouvés ont été
comparés à une borne inférieure et aux résultats donnés par un outil de programmation mixte
(Lingo). Pour utiliser ce dernier, nous avons dû modéliser le problème F / no − idle / C max
sous forme d’un programme linéaire à variables mixtes.
Dans le cadre général (plusieurs machines), une étude bibliographique sur le problème du
voyageur de commerce (TSP) nous a permis d’évoluer vers une modélisation et une
heuristique de résolution que nous avons proposées dans le chapitre 3. La résolution d’un
problème TSP consiste, d’une façon générale, à trouver le plus court chemin passant une et
une seule fois par toutes les villes (représentant les travaux). La longueur du chemin est
évaluée par la somme des distances des arcs par lesquels on passe. Pour le problème tel que
nous l’avons modélisé, nous avons choisi de le résoudre par l’heuristique de la « plus proche
insertion » après l’avoir adapté au besoin. La résolution peut ainsi être faite en O(n3). Le
résultat a été évalué en le comparant à la solution exacte, dans un premier temps, et à la
solution trouvée à partir de Lingo, dans un deuxième temps. Nous avons noté que Lingo
devient trop coûteux en temps de calcul pour donner une solution lorsque le nombre de
travaux et/ou nombre de machines augmentent.
138
Conclusion
En nous basant sur ces travaux, nous avons étudié le cas d’une ligne de production réelle, à
savoir une fonderie de fonte. Le problème est un flow-shop hybride à trois étages et la
contrainte no-idle n’est appliquée qu’au second étage. Les heuristiques proposées sont en
O(n*log(n)) et les résultats sont comparés à une borne inférieure.
Dans la pratique du terrain, et particulièrement lorsque les machines représentent la ressource
goulot d’une entreprise, il est intéressant d’autoriser quelques points d’arrêt. Ceci peut être
fort utile aussi s’il y a des activités de maintenance à faire. Notre troisième contribution est de
trouver un compromis entre la minimisation du C max et la contrainte d’un ensemble de
temps morts autorisés. Deux points différents ont été étudiés. Le premier point consiste,
partant d’un ordonnancement donné vérifiant la contrainte no-idle, à trouver la meilleure
insertion d’un temps mort qui donne la meilleure réduction du Cmax. Le deuxième point
consiste à caractériser un ordre de départ des travaux qui favorise l’obtention du meilleur
Cmax si l’on procède par un tassement à droite pour obtenir l’ordonnancement no-idle
correspondant à cet ordre puis par l’insertion d’un temps mort. Concernant ce deuxième point,
une étude expérimentale que nous avons réalisée a montré que, dans la plupart des cas, si nous
partons de l’ordre obtenu en résolvant le problème F // C max , nous obtenons une meilleure
réduction du C max que si nous partons d’un ordonnancement optimal no-idle. Les solutions
obtenues donnent une date d'achèvement ne dépassant pas 15% celle du flow-shop sans la
contrainte no-idle, pour un ou deux temps morts autorisés. Les performances de cette
heuristique augmentent quand le nombre de machines ou de travaux augmente. Cette
relaxation paraît être une bonne solution pour le problème F / h − idle / C max .
A l’issue de ce travail, les perspectives de recherches futures sur l’étude de la contrainte noidle nous paraissent nombreuses. Une première perspective consisterait à étendre le travail
effectué au quatrième chapitre pour répondre d’une façon plus directe au problème posé par le
deuxième point, à savoir l’identification des indices qui permettent d’effectuer le meilleur
choix de l’ordre de départ. Il s’agit, en même temps, d’étudier la relaxation avec un plus grand
nombre de temps morts (plus de deux). Des heuristiques peuvent être proposées pour résoudre
ce problème et une étude peut être faite pour déterminer un compromis entre le nombre
d’arrêts insérés et la variation de la valeur du C max .
139
Conclusion
Une deuxième perspective serait la parallélisation de l’algorithme de type séparation et
évaluation, ce qui pourrait réduire sa durée d’exécution quand il est appliqué à des problèmes
durs qui nécessitent un temps de calcul de plusieurs jours.
Enfin, une troisième perspective serait l’application de la contrainte no-idle à des trains de
travaux qui exigent d’être exécutés ensemble (sans temps d’arrêt) mais où il est autorisé
d’avoir des temps morts entre les trains.
140
Bibliographie
[Adiri et Pohoryles, 1982] : I. Adiri et D. Pohoryles, 1982, «Flowshop/no-idle or no-wait
scheduling to minimize the sum of completion times», Naval research quaterly, Vol. 29, n° 3,
pp. 495-504.
[Applegate et al., 1991] : D. Applegate, R. Bixby, V. Chvàtal et W. Cook, 1995, «Finding
cuts in the TSP» (A preliminary report), DIMACS, Tech. Report 95-05.
[Balas et Christofides, 1981] : E. Balas et N. Christofides, 1981, «A restricted Lagrangean
approach to the travelling salesman problem», Mathematical Programming 21, pp. 19-46.
[Baptiste et Hguny, 1997] : P. Baptiste et L. K. Hguny, 1997, «A Branch and Bound
Algorithm for the F / no − idle / C max », Proceedings of the International Conference on
Industrial Engineering and Production Management (IEPM'97), Vol. 1, pp. 429-438.
[Baker, 1974] : K. R. Baker, «Introduction to sequencing and scheduling», John Willey &
Sons, Inc. 1974.
[Barnhart et al., 1998] : C. Barnhart, N. L. Boland, L. W. Clarke, E. L. Johnson, G. L.
Nemhauser et R. G. Shenoi, 1998, «Flight string models for aircrafteeting and routing»,
Transportation Science, Vol. 32, pp. 208-220.
[Bellmann, 1957]: R. Bellmann, 1957, «Dynamic Programming», Princeton University Press,
Princeton.
[Bellmann, 1962] : R. Bellmann, 1962, «Dynamic programming treatment of the travelling
salesman problem», J. Assoc. Comput. Mach., Vol. 9, pp. 61-63.
[Bellmore et Malone, 1971] : M. Bellmore et J. C. Malone, 1971, «Pathology of traveling
salesman problem subtour elimination algorithms», Operations Research, Vol. 19, pp. 278307.
[Blackstone et al., 1982] : J. H. Blackstone, D. T. Phillips et G. L. Hogg, 1982, «A state of the
art survey of dispatching rules for manufacturing job shop tasks», International Journal of
Production Research, Vol. 5, pp. 11-24.
[Blazewicz et al., 1996] : J. Blacewicz, K. H. Ecker, E. Pesch, G. Schmidt et J. Weglarz,
1996, «Scheduling Computer and Manufacturing Processes», ed. Springer-Verlag, Berlin,
Heidelberg.
[Blazewicz et al., 1997] : J. Blacewicz, G. Finke, M. L. Espinouse et G. Pawlak, 1997,
«Scheduling vehicles in a cyclic hybrid flowshop», Proceedings of International Conference
141
Bibliographie
on Industrial Engineering and Production Management (IEPM'97), Tome I, pp. 611-619,
Lyon, France.
[Boctor et Renaud, 1993] : F. F. Boctor et J. Renauld, 1993, «A tour improvement procedure
for the traveling salesman problem», Working paper, Faculté des Sciences de
l’Administration, Université Laval, Canada, pp. 93-97.
[Boland et al., 2000] : N. L. Boland, L. W. Clarke et G. L. Nemhauser, 2000, «The
asymmetric traveling salesman problem with replenishment arcs», European Journal of
Operational Research, Vol. 123, Issue 2, pp. 408-427 .
[Bruno et al., 1974] : J. Bruno, E. G. Coffman et J. R. Sethi, 1974, «Scheduling independent
tasks to reduce mean finish time», Comm. ACM, Vol. 17, pp. 382-387.
[Brucker, 1995] : P. Brucker, «Scheduling Algorithms», Springer, Berlin, 1995.
[Carlier et Chretienne, 1988] : J. Carlier et P. Chretienne, 1988, «Problèmes
d’ordonnancement : modélisation, complexités, algorithmes», Masson, pp. 326.
[Carlier et Villon, 1990] : J. Carlier et P. Villon, 1990, «A new heuristic for the travelling
salesman problem», R.A.I.R.O. Recherche Opérationnelle, Vol. 24, pp. 245-253.
[Carpaneto et Toth, 1980] : G. Carpaneto et P. Toth, 1980, «Some new branching and
bounding criteria for the asymmetric travelling salesman problem», Management Science,
Vol. 26, pp. 736-743.
[Campbell et al., 1970] : H. G. Campbell, R. A. Dudek et M. L. Smith, 1970, «A new
heuristic for the n jobs m machines sequencing problem», Management Science, Vol. 16B,
pp. 630-637.
[Chevalier, 1977] : A. Chevalier, 1977, «La programmation dynamique», Dunod.
[Chentsov et Korotayeva, 1997] : A. G. Chenstov et L. N. Korotayeva, 1997, «The dynamic
programming method in the generalized travelling salesman problem», Mathematical
Computer Modelling, Vol. 25, pp. 93-105.
[Chentsov et Chentsov, 2001] : A. A. Chentsov et A. G. Chentsov, 2001, «Dynamic
programming method in the generalized traveling salesman problem: The influence of inexact
calculations», Mathematical and Computer Modelling, Vol. 33, Issues 8-9, pp. 801-819.
[Chisman, 1975] : J. Chisman, 1975, «The clustered travelling salesman problem»,
Computers and Operations Research, Vol. 2, pp. 115-119.
[Christofides, 1972] : N. Christofides, 1972, «Bounds for the traveling salesman problem»,
Operations Research, Vol. 20, pp. 1044-1056.
[Christofides et al., 1979] : N. Christofides, A. Mingozzi, P. Toth et C. Sandi, 1979, «The
travelling Salesman Problem», Combinatorial Optimisation, John Willey and Sons.
[Conway et al., 1976] : R. Conway, W. Maxwell et L. Miller, 1976, «Theory of scheduling»,
Addison Wesley, Massachussets.
142
Bibliographie
[Cook, 1971] : S. Cook, 1971, «The complexity of the theorem prooving procedures», In
Third ACM Symposium on Theory of computing, pp. 151-158.
[Dannenbring, 1977] : D. G. Dannenbring, 1977, «An evaluation of flow shop sequencing
heuristics», Management Science, Vol. 23, pp. 1174-1182.
[Faure, 1978] : R. Faure, 1978, «Précis de recherche opérationnelle», Dunod, Paris.
[Fischetti et Toth, 1989] : M. Fischetti et P. Toth, 1989, «An additive bounding procedure for
combinatorial optimization problems», Operations Research, Vol. 37, pp. 319-328.
[Fischetti et Toth, 1992] : M. Fischetti et P. Toth, 1989, «An additive bounding procedure for
the asymmetric traveling salesman problem», Mathematical Programming, Vol. 53, pp. 173197.
[Fischetti et al., 1994] : M. Fischetti, J. J. Gonzalez et P. Toth, 1994, «A branch and cut
algorithm for the symetric generalized traveling salesman problem», in Golden, B.L., Assad,
A.A. (Eds.), Vehicle Routing : Methods and studies, North-Holland, pp. 319-343.
[Garey et al., 1976] : M. R. Garey, D. S. Johnson et R. Sethi, 1976, «The complexity of
flowshop and jobshop scheduling», Mathematics of Operational Research, Vol. 1, pp. 117129.
[Garey et Johnson, 1979] : R. Garey et D. S. Johnson, 1979, «Computers and Intractability: A
guide to the theory of NP-Completness», Freeman and Company, New York.
[Garfinkel, 1973] : R. S. Garfinkel, 1973, «On partitionning the feasible set in a branch andbound algorithm for the asymmetric traveling salesman problem», Operations Research, Vol.
21, pp. 340-343.
[Gendreau et al., 1994] : M. Gendreau, G. Laporte et F. Semet, 1995, «The covering tour
problem», working paper CRT-95-08.
[Gendreau et al., 1999] : M. Gendreau, G. Laporte et D. Vigo, 1999, «Heuristics for the
traveling salesman problem with pickup and delivery», Computers and Operations Research,
Vol. 26, Issue 7, pp. 699-714.
[Giaro, 2001] : K. Giaro, 2001, «NP-hardness of compact scheduling in simplified open and
flow shops», European Journal of Operational research, Vol. 130, pp. 90-98.
[Giuseppe et al., 2001] : A. S. Giuseppe, D. Megherbi et G. Isern, 2001, «Implementation of a
parallel Genetic Algorithm on a cluster of workstations: Traveling Salesman Problem, a case
study», Future Generation Computer Systems, Vol. 17, Issue 4, pp. 477-488.
[Glover, 1977] : F. Glover, 1977, «Heuristic for integer programming using surrogate
constraints», Decision Sciences, Vol. 8, pp. 156-166.
[Glover, 1986] : F. Glover, 1986, «Future paths for integer programming and links to artificial
intelligence», Computers and Operations Research, Vol. 13, pp. 533-549.
143
Bibliographie
[Glover, 1989] : F. Glover, 1989, «Tabou search- part i.», ORSA Journal on Computing 1 ,
pp. 190-206.
[Glover, 1990] : F. Glover, 1990, «Tabou search- part ii.», ORSA Journal on Computing 2,
pp. 4-62.
[Glover et al., 2001] : F. Glover, G. Gutin, A. Yeo et A. Zverovich, 2001,
«Construction heuristics for the asymmetric TSP», European Journal of Operational
Research, Vol. 129, Issue 3, pp. 555-568.
[Goldberg, 1989] : D. Goldberg, 1989, «Genetic Algorithms in Search,Optimization, and
Machine Learning», Addison Wesley, Reading, USA.
[Golden et al., 1980] : B. Golden, L. Bodin, T. Doyle et W. J. Stewart, 1980, «Approximate
Traveling Salesman Algorithms», Operations Research 28, Vol. 3, Part II (May-June), pp.
694-711.
[Gomory, 1958] : R. E. Gomory, 1958, «Outline of an algorithm for integer solutions to linear
programs», Bull. Amer.Math. Soc. Vol. 64, pp. 275-278.
[Gondran et Minoux, 1979] : M. Gondran et M. Minoux, 1979, «Graphes et Algorithmes»,
Editions Eyrolles, Paris.
[Gonzalez et Sahni, 1976] : T. Gonzalez et S. Sahni, 1976, «Openshop scheduling to
minimize finish time», Journal of the Association for Computing Machinery, Vol. 23, pp.
665-679.
[Gonzalez et Sahni, 1978] : T. Gonzalez et S. Sahni, 1978, «Flowshop and Jobshop schedules:
Complexity and Approximation», Operations Research, Vol. 26, n°1, pp. 36-52.
[Goth, 1993] : A. Goth, 1993, «Les problèmes d'ordonnancement», R.A.I.R.O- O.R, Vol. 27,
pp. 77-150.
[Graham, 1966] : R. L. Graham, 1966, «Bounds for certain multiprocessing anomalies», Bell
System Tech. Journal., Vol. 45, pp. 1563-1581.
[Graham et al., 1979] : R. L. Graham, E. L. Lawler, J. K. Lenstra et A. G. Rinnoy KAN, 1979,
«Optimization and approximation in deterministic sequencing and scheduling theory: a
survey», Annals of Discrete Mathematics, Vol. 5, pp. 287-326.
[Grununberger et Souedet, 1989] : E. Grununberger et S. Souedet, 1989, «Etude des travaux
de King et Spachis», Rapport des TPs de GPAO, MST2 d'IAPI/ Université de tours.
[Guinet, 1984] : A. Guinet, 1984, «Transports industriels routiers, un problème d'affectation
avec réemploi sous contraintes», R.A.I.R.O. Recherche Opérationnelle, Vol. 18, pp. 353-379.
[Gupta et Reddi, 1978] : J. N. D. Gupta et S. S. Reddi, 1978, «Improve dominance conditions
for the three machines flow shop scheduling problem», Operations Research, Vol. 26, pp.
200-203.
144
Bibliographie
[Gupta, 1988] : J. N. D. Gupta, 1988, «Two stage, hybrid flowshop scheduling problem»,
Journal of Operational Research, Vol. 39, pp. 359-364.
[Gupta et Tunc, 1991] : J. Gupta et E. Tunc, 1991, «Schedules for two hybrid flowshop with
parallel machines at the second stage», International Journal of Production Research, Vol.
29, pp. 1489-1502.
[Hassin et Rubinstein, 1998] : R. Hassin et S. Rubinstein, 1998, «An approximation algorithm
for the maximum traveling salesman problem», Information Processing Letters, Vol. 67, pp.
125-130.
[Held et Karp, 1962] : M. Held et R. M. Karp, 1962, «A dynamic programming approach to
sequencing problems», J. Soc. Industr and Appl. Math., Vol. 10, pp. 196-210.
[Helsgaun, 2000] : K. Helsgaun, 2000, «An effective implementation of the Lin¯Kernighan
traveling salesman heuristic», European Journal of Operational Research, Vol. 126, Issue 1,
pp. 106-130.
[Henry-Labordere, 1969] : A. L. Henry-Labordere, 1969, «The record balancing problem: A
dynamic programming solution of a generalized traveling salesman problem», RAIRO B2, pp.
43-49.
[Homaifar et al., 1993] : A. Homaifar, S. Guan et G. E. Liepins, 1993, «A new approach on
the traveling salesman problem by genetic algorithms», Proceedings of the fifth International
Conference on Genetic Algorithms, Morgan Kaufmann, Los Atlos, CA, pp. 460-466.
[Hurrion, 1980] : R. D. Hurrion, 1980, «Visual interactive (Computer) Solutions for the
travelling salesman problem», J. Opl. Res. Soc., Vol. 31, pp. 537-539.
[Ibarra et Kim, 1977] : O. H. Ibarra et C. E. Kim, 1977, «Heuristic Algorithms for scheduling
independent tasks on non identical processors», Journal of the Association for Computing
Machinery, Vol. 24, pp. 280-289.
[Ignall et Schrage, 1965] : E. Ignall et L. E. Schrage, 1965, «Application of the branch-andbound technique to some flow-shop scheduling problems», Operations Research, Vol. 13, pp.
400-412.
[Incotec, 1999] : INCOTEC, 1999, INCOPLAN Progiciel d'ordonnancement, Parc
d'innovation Strasbourg Sud B.P. 316, Illkirch (France) F-67411.
[Jackson, 1955] : J. R. Jackson, 1955, «Scheduling a production line to minimize maximum
tardiness», Research Report 43, Management Science Research Project, UCLA.
[Johnson, 1954] : S. M. Johnson, 1954, «Optimal Two- and Three-stage Production Schedules
with Setup Times Included», Naval Research Quarterly, Vol. 1, pp. 61-68.
[Johnson, 1990] : D.S. Johnson, 1990, «Local optimization and the traveling salesman
problem», Lecture Notes in Computer Science 442, pp. 446-461.
145
Bibliographie
[Johnson et McGeoch, 1997] : D. S. Johnson et L. A. McGeoch, 1997, «The traveling
salesman problem : A case study in local optimization», in : E.H.L. Aarts, J.K. Lenstra (Eds),
Local Search in Combinatorial Optimization, Wiley, New York.
[Jongens et Volgenant, 1985] : K. Jongens et T. Volgenant, 1985, «The symetric clustered
traveling salesman problem», European Journal of Operational Reserach, Vol. 41, pp. 224231.
[Kadipasaoylu et al., 1997] : S. N. Kadipasaoylu, W. Xiang et B. M. Khumawola, 1997, «A
comparison of scheduling rules in static and dynamic hybrid flow systems», International
Journal of Production Research, Vol. 5, pp. 1359-1384.
[Karp, 1972] : R. M. Karp, 1972, «Reductibility among combinatorial problems» in R. E.
Miller et J. W. Tharcher (eds.) «Complexity of computer computations», Plenum Press, New
York, pp. 85-94.
[King et Spachis, 1980] : J. R. King et A. S. Spachis, 1980, «Heuristics for flow-shop
scheduling», International Journal of Operational Research, Vol. 18, n° 3, pp. 345-357.
[Kirkpatrick et al., 1983] : S. Kirkpatrick, C. Gelatt et M. Vecchi, 1983, «Optimization by
simulated annealing», Science 220, pp. 671-680.
[Khoan, 1971] : V. -K. Khoan, 1971, «La régulation dans les problèmes combinatoires et son
application au problème de sectoristaion», R. A. I. R. O. Rech. Op., 5ème année, Vol. 2, pp. 5977.
[Kogan, 2000] : K. Kogan, 2000, «Scheduling concurrent production over a finite planning
horizon: polynomially solvable cases», Computers & Operations Research, Vol. 27, Issue 14,
pp. 1409-1419.
[Koulamas, 1996] : C. Koulamas, 1996, «Single-machine scheduling with time windows and
earliness/tardiness penalties», European Journal of Operational Research, Vol. 91, pp. 190202.
[Kubiak et al., 1991] : W. Kubiac, C. Srishkandarajah et K. Zaras, 1991, «A note on the
complexity of open shop scheduling problems», W.R. Pulley Blank (eds), Academic Press,
New York.
[Kuhn, 1955] : H. W. Kuhn, 1955, «The Hungarian method for the assignment problem»,
Naval Research Logistics Quarterly, Vol. 2, pp. 83-98.
[Labetoulle et al., 1984] : J. Labetoulle, E. Lawler, J. Lenstra et A. Rinnoy Kan, 1984,
«Progress in Combinatorial Optimization», W.R. Pulley Blank (eds), Academic Press, New
York
[Lageweg et Lenstra, 1978] : B. J. Lageweg et J. K. Lenstra, 1978, «A General Bounding
Scheme for the Permutation Flow-shop problem», Operations Research, Vol. 26, pp. 53-67.
146
Bibliographie
[Laporte et Nobert, 1983] : G. Laporte et Y. Nobert, 1983, «Generalized traveling salesman
problem through n sets of nodes : an integer programming approach», INFOR, Vol. 21, pp.
61-75.
[Laporte et al., 1987] : G. Laporte, H. Mercure et Y. Nobert, 1987, «Generalized traveling
salesman problem through n sets of nodes : the asymetric case», Discrete Applied
Mathematics, Vol. 18, pp. 185-197.
[Lawler et Labetoulle, 1978] : E. Lawler et J. Labetoulle, 1978, «Preemptive scheduling of
unrelated parallel processors by linear programming», J. Assoc. Comput. Mach, Vol. 25, pp.
612-619.
[Lenstra et al., 1977] : J. K. Lenstra, A. H. G. Rinnoy Kan et P. Brucker, 1977, «Complexity
of machine scheduling problems», Annals of Discrete Mathematics, Vol. 1, pp. 343-362.
[Lin, 1965] : Lin S., 1965, «Computer solutions of the travelling salesman problem», Bell
System Technical Journal, Vol. 44, pp. 2245-2269.
[Lin et Kernighan, 1973] : S. Lin et B. Kernighan, 1973, «An effective Heuristic Algorithm
for the Travelling Salesman Problem», Operations Research, Vol. 21, pp. 498-516.
[Lindo, 1999] : LINDO SYSTEM INC (1999). LINGO the modelling language and optimizer,
1415 North Dayton Street, Chicago,Illinois (USA) 60622.
[Little et al., 1963] : J. D. C. Little, K. G. Murty, D. W. Sweeney et C. Karel, 1963, «An
algorithm for the travelling salesman problem», Operations Research, Vol. 11, pp. 972-989.
[Lysgaard, 1999] : J. Lysgaard, 1999, «Cluster based branching for the asymmetric traveling
salesman problem», European Journal of Operational Research, Vol. 119, Issue 2, pp. 314325.
[Mak et Morton, 1993] : K. T. Mak et A. J. Morton, 1993, «A modified Lin-Kernighan
traveling salesman problem», Operations Research Letters, Vol. 13, pp. 127-132.
[Mak et Boland, 2000] : V. Mak et N. Boland, 2000, «Heuristic approaches to the asymmetric
travelling salesman problem with replenishment arcs», International Transactions in
Operational Research, Vol. 7, Issues 4-5, pp. 431-447.
[Mazzini et Armentano, 2001] : R. Mazzini et V. A. Armentano, 2001, «A heuristic for single
machine scheduling with early and tardy costs», European Journal of Operational Research,
Vol. 128, Issue 1, pp. 129-146.
[Mellor, 1966] : P. Mellor, 1966, «A review of job shop scheduling», Operational Research,
Vol. 17, pp. 161-171.
[Monma et Rinnooy Kan, 1983] : C. L. Monma et A. G. H. Rinnooy Kan, 1983, «A concise
survey of efficiently solvable special cases of the permutation flow-shop problem», RAIRO
Recherche Opérationnelle, Vol. 17, pp. 979-990.
147
Bibliographie
[Narasimhan et Panwalkar, 1984] : S. L. Narasimhan et S. S. Panwalkar, 1984, «Scheduling in
a two stage manufacturing process», Int. J. Prod. Res., Vol. 22, pp. 555-564.
[Narasimhan et al., 1987] : S. L. Narasimhan et P. M. Mangiameli, 1987, «A comparison of
sequencing rules for a two-stage hybrid flowshop», Decision Sciences, Vol. 18, pp. 250-265.
[Padberg et Rinaldi, 1991] : M. W. Padberg et G. Rinaldi, 1991, «A branch and cut algorithm
for the resolution of large scalesymetric traveling salesman problems», SIAM Review, Vol. 33,
pp. 60-100.
[Panwalker et Iskander, 1977] : S. Panwalker et W. Iskander, 1977, «A survey of scheduling
rules», Operations Research, Vol. 25, pp. 45-61.
[Pigassou et Partant, 1992] : S. Pigassou et P-Y. Partant, 1992, «Etude des travaux de King et
Spachis», Rapport des TPs de GPAO, MST2 d'IAPI/ Université de tours.
[Pinedo, 1995]: P. Pinedo, 1955, «Scheduling Theory, Algorithms and Systems», Prentice
Hall, Englewood Cliffs, N.J.
[Potts et al., 1991] : C. N. Potts, D. B. Shmoys et D. P. Williamsons, 1991, «Permutation vs.
Non-permutation flow shop schedules», Operations Research Letters, Vol. 10, pp. 281-284.
[Renaud et al., 1996] : J. Renaud, F. F. Boctor et G. Laporte, 1996, «A fast composite
heuristic for the symmetric travelling salesman problem», IN-FORMS Journal on Computing
8, Vol. 2, pp. 134-143.
[Renaud et Boctor, 1998] : J. Renaud et F. F. Boctor, 1998, «An efficient composite heuristic
for the symmetric generalized traveling salesman problem», European Journal of Operational
Research, Vol. 108, Issue 3, pp. 571-584.
[Rinnoy Kan, 1976] : A. Rinnoy Kan, 1976, «Machine scheduling problems: classification,
complexity and computations», Nijhoff, The Hague.
[Reeves, 1995] : C. Reeves, 1995, «A genetic algorithm for flow-shop sequencing»,
Computer Operation Research, Vol. 22, pp. 5-13.
[Saadani et al., 2001a] : N. H. Saadani, P. Baptiste et M. Moalla, 2001, «The simple
F2//Cmax with forbidden tasks in first or last position: a problem more complex that it
seems», The proceedings of Industrial Engineering and Production Management
(IEPM'2001), Quebec (Canada).
[Saadani et al., 2001b] : N. H. Saadani, A. Guinet et M. Moalla, 2001, «A travelling salesman
approach to solve the F/no-idle/Cmax problem», The proceedings of Industrial Engineering
and Production Management (IEPM'2001), Quebec (Canada).
[Saadani et al., 2002a] : N. H. Saadani, P. Baptiste et M. Moalla, 2002, «Relaxation of the noidle constraint in the flow-shop problem», PMS’2002, Valencia-Espagne.
148
Bibliographie
[Saadani et al., 2002b] : N. H. Saadani, A. Guinet et M. Moalla, 2002, «Three stages flowshop with over-passing», IEEE International Conference on Systems, Man and Cybernetics,
October 6-9, pp. 150.
[Saadani et al., 2003a] : N. H. Saadani, P. Baptiste et M. Moalla, 2003, «The simple
F2//Cmax with forbidden tasks in first or last position: a problem more complex that it
seems», European Journal of Operational Research, n°4 (accepté).
[Saadani et al., 2003b] : N. H. Saadani, A. Guinet et M. Moalla, 2003, «A travelling salesman
approach to solve the F/no-idle/Cmax problem», European Journal of Operational Research,
n°7 (accepté).
[Saadani et al., 2003c] : N. H. Saadani, A. Guinet et M. Moalla, 2003, «Three stages no-idle
flow-shop», Computers and Industrial Engineering Journal, n° 399, Vol. 44, pp. 425-434 .
[Schmitt et Amini, 1995] : L. J. Schmitt et M. M. Amini, 1995, «Genetic algorithm
approaches to the traveling Salesman problem: design and Configuration Issues», Working
paper ITMGA01.002/95, Christian Brothers University, Memphis, TN.
[Srikandarjah et Sethi, 1989] : C. Srikandarjah et S. Sethi, 1989, «Scheduling algorithms for
flexible flow-shops: worst and average performance», European Journal of Operational
Research, Vol. 43, pp. 143-160.
[Srivastava et al., 1969] : S. S. S. Srivastava, R. C. G. Kumar et P. Sen, 1969, «Generelized
traveling Salesman problem through n sets of nodes», CORS journal, Vol. 7, pp. 97-101.
[Strusevitch, 1981] : V. A. Strusevitch, 1981, «On possibility of approximate solution of a
scheduling theory problem», 1st All-union Conference on Statistics and Discrete Analysis
Non-numerical Information, Expert estimates and discrete optimization, Moskov, pp. 222223.
[Tanarv et al., 1994] : V. S. Tanarv, Y. N. Sotskov et V. A. Strvsevitch, 1994, «Scheduling
Theory Multi-stage System», Kluwer Academic Publishers, ISBN O-7923-2854-X.
[Taillard, 1990] : E. Taillard, 1990, «Some Efficient Heuristic Methods for the Flowshop
Sequencing Problem», European Journal of Operational Research, Vol. 47, pp. 65-74.
[Valente et Alves, 2003a] : J. M. S. Valente et R. A. F. S. Alves, 2003, «Heuristics for the
early/tardy scheduling problem with release dates», working paper 130, Faculdade de
economica do Porto, Portugal, Mai.
[Valente et Alves, 2003b] : J. M. S. Valente et R. A. F. S. Alves, 2003, «Improved heuristics
for the early/tardy scheduling problem with no-idle time», working paper 126, Faculdade de
economica do Porto, Portugal, Avril.
[Wagneur et Sriskandarajah, 1993] : E. Wagneur et C. Sriskandarajah, 1993, «Openshops
with job overlap», European Journal of Operational Research, Vol. 71, pp. 336-378.
[Whitley et al., 1989] : D. Whitley, T. Starkweather et D. Fuquay, 1989, «Scheduling
Problems and Traveling Salesman: The Genetic Edge Recombination Operator», In: Schaffer,
149
Bibliographie
JD (ED.), Proceedings of the third international Conference on Genetic Algorithms, Morgan
Kaufmann, Los Altos, CA, pp. 133-140.
[Widmem et Hertz, 1989] : M. Widmem et A. Hertz, 1989, «A New Heuristic Method for the
Flow Shop Sequencing Problem», European Journal and Operational Research, Vol. 41,
pp.186-193.
[Xuong, 1992] : H. Xuong, 1992, «Mathématiques discrètes et informatique», Edition.
Masson.
150
Annexe
Les problèmes d’optimisation peuvent être classés en linéaire ou non linéaire selon la relation
entre les variables. Lingo est un outil qui permet de résoudre un problème d’optimisation qu’il
soit linéaire ou non linéaire et de l’analyser. En entrée, ce solveur Lingo doit recevoir un
modèle mathématique et il possède quatre solveurs qu’il utilise afin de résoudre les différents
types de modèles :
Solveur direct
Solveur linéaire
Solveur non linéaire
Méthode de type séparation et évaluation
Le modèle mathématique reçu par Lingo doit respecter le langage de modélisation associé à
Lingo. Les données passées au solveur peuvent se faire soit d’une manière directe, soit en à
travers des fichiers intermédiaires.
Durant la résolution d’un modèle, Lingo commence par utiliser son solveur direct qui
détermine les valeurs des différentes variables du solveur tant que c’est possible. Si le solveur
direct trouve une contrainte d’égalité avec une variable indéterminée, il décide une valeur à
cette variable qui vérifie la contrainte. En revanche, s’il y a plusieurs variables indéterminées
ou s’il n’y a plus de contrainte d’égalité avec une variable indéterminée, il s’arrête.
Une fois le solveur direct a terminé en déterminant le contenu de toutes les variables, il
affiche un rapport à propos la solution. S’il en reste des variables indéterminées, Lingo
détermine quels solveurs faut–il utiliser en examinant la structure du modèle à résoudre et son
contenu mathématique. Pour un modèle linéaire continu, Lingo appelle le solveur linéaire. Si
le modèle contient une ou plusieurs contraintes non linéaires, le solveur non linéaire est
appelé. Dans le cas où le modèle contiendrait des restrictions entières, un algorithme de type
séparation et évaluation est invoqué pour les enforcer et la main est rendue ensuite au solveur
linéaire ou non linéaire selon la nature du modèle généré.
Le solveur linéaire utilise la méthode du simplex révisé avec une forme produite inverse. Le
solveur non linéaire utilise les algorithmes de programmation linéaire successive et les
algorithmes du gradient généralisé réduit. Les modèles entiers sont résolus en utilisant un
150
Annexe
algorithme de type séparation et évaluation. Pour les modèles linéaires, Lingo fait un prétraitement considérable. En effet, il ajoute des contraintes de «découpe» pour restreindre la
région non entière réalisable. Ces découpes augmentent considérablement le temps de
résolution de la plupart des modèles de programmation entière.
151