Projet ordonnancement avec conflit

Disponible uniquement sur Etudier
  • Pages : 5 (1022 mots )
  • Téléchargement(s) : 0
  • Publié le : 23 août 2010
Lire le document complet
Aperçu du document
RROJET : ORDONNANCEMENT DE TACHES AVEC CONFLITS.

Un problème d’ordonnancement des taches consiste à optimiser le processus de production, en prenant en considération différents paramètres : le cout, les délais, l’enchainement…etc. Dans le cadre de ce projet, on s’est intéressé à deux algorithmes en particulier, d’abord le LPT (Longest Processing Time), ensuite la coloration de graphe. Lepremier consiste à affecter les taches par ordre décroissant de durée d’usinage sur les machines existantes, en vérifiant la possibilité d’enchainement sur une machine par rapport aux autres taches. Dans le cas échéant, il est donc nécessaire de créer une nouvelle machine. Les conséquences financières de cette solution sont assez importante, il est donc évident que la création couteuse sera réalisé endernier recours. Le deuxième algorithme consiste à représenter le problème sous forme de graphe, les nœuds représentants les taches, et les arêtes les conflits d’enchainement entre taches. On commence donc par affecter aux machines les taches ayants le plus de conflits avec les autres taches, et donc par ordre décroissant de degré du nœud. Notons que la coloration des graphes minimise le nombrede machines utilisées, et donc les couts supplémentaires de création, mais ne prend pas en considération la durée d’usinage, contrairement à l’algorithme LPT.

I-

LONGEST PROCESSING TIME :

D’abord, on détermine les besoins les plus évidents : des machines et des taches. On crée donc une première classe « Tache », dont les objets seront définis par un numéro et une durée nécessaired’usinage. Ensuite une classe « Machine » dont les objets seront définis par un numéro et une durée d’usinage totale (la somme des durées des taches effectuées sur cette machine). Pour les deux classes, nous déclarons les paramètres « privés ». Dans les fichiers sources « Tache.cpp » et « Machine.cpp », on initialise les indices et les durées, ainsi que les accesseurs permettant de les récupérer. Remarquonsla création d’un vecteur des taches affectées à chaque machines, initialisé vide et qui sera mis à jour au fur et à mesure. Dans le constructeur ORDONNANCEMENT, on commence par générer aléatoirement le nombre de taches t, nombre de machines m, une matrice booléenne de taille (t,t), initialisée à 0, ensuite remplie aléatoirement avec un nombre de 1, généré aussi aléatoirement (dans l’intervalledécidé dans le cours). Cette matrice représente les conflits entre taches. La classe ORDONNANCEMENT sera ici la classe où l’on définie nos fonctions : - « aleatoire » : fonction prenant en paramètres deux entiers, renvoie un entier aléatoire dans l’intervalle définis par les paramètres. Pour éviter une génération répétitive du premier terme de la suite, on le considère en fonction de la date et heureen temps réel.

-

« machines_plus_petite_duree » : cette fonction permet de parcourir les machines, comparer leur durée totale d’usinage, ensuite détermine la machine qui a été le moins utilisée pour l’instant. - « trie_machines » : grâce à la fonction définie ci-dessus, trie les machines par ordre croissant de durée d’usinage. Ainsi, cet ordre sera respecté lors de la vérification desconflits, et nous permettra ainsi la minimisation de la durée totale de la production. - « taches_plus_grande_duree » : de la même manière que les machines, on commence par créer une fonction qui permet de déterminer la tache la plus longue. Cette fonction sera appelée par « trie_taches », afin d’obtenir l’ordre décroissant des taches. - « existe_conflit » : fonction booléenne prenant pour paramètredeux taches, renvoie 1 si les deux taches ne peuvent être usinées sur la même machine, 0 sinon. - « conflit » : avec cette fonction booléenne (paramètres : une tache et une machine), on choisit de stocker les indices de taches affectées à une machine, afin de pouvoir parcourir ce vecteur pour toute vérification de conflits avec la tache choisie. - « creer_nouvelle_machine ». - « affecte_taches...
tracking img