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