Projet ordonnancement avec conflit
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. Le premier 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é en dernier 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 nombre de 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écessaire d’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.