Chapitre Quatrième : PROTOTYPAGE,
EXPERIMENTATION ET ARGUMENTATION DES RESULTATS
Ce chapitre sera pour nous une opportunité de
présenter la traduction de l'algorithme HI-BHA dans le langage C, nous
allons présenter les fonctions utilisées dans le programme et les
fichiers des données. Cette partie de notre travail sera pour nous aussi
une occasion de présenter le test de l'algorithme HI-BHA et
l'argumentation du résultat, c'est-à-dire l'évaluation de
celui-ci par rapport au LAFF algorithme.
VI.1. Prototypage
VI.1.1. Les fonctions du programme
Le prototype du programme comporte les fonctions suivantes :
Tableau 5 : les fonctions de l'algorithme HI-BHA
Nom de la Fonction Description
Packlayer Met à jours le `'Boxlist[]Array`' quand une
boîte est rangée
Findsmallestz Détermine le vide ayant la valeur z le plus
petite dans la courante
couche
Findbox Sert à trouver la boîte qui remplit le
mieux le vide courant dans la couche
Analyzebox Cette fonction est utilisée par la
précédente pour analyser les dimensions des boîtes
Checkfound Détermine quelle boîte charger
d'après sa capacité à remplir le vide
Execiterations Exécute les itérations en appelant
les fonctions appropriées
Report Stocke la meilleure solution de chargement
Outputboxlist Ecrit les informations de la solution de chargement
dans un fichier
Graphunpackedout Ecrit l'ordre de rangement des articles pour la
visualisation
43
La fonction `'Findbox» analyse les boîtes non encore
chargées en utilisant la fonction `'Analyzebox». Pour chaque
orientation de la boîte non encore chargée, la fonction Analyzebox
utilise les paramètres suivants :
Hmx : longueur maximum (dimension x) disponible pour le
chargement
Hy : hauteur (dimension y) de la courante couche
Hmy : hauteur maximum (dimension y) disponible pour le
chargement
Hz : profondeur (dimension z) de la courante couche pour le
chargement Hmz : profondeur maximum (dimension z) disponible pour le
chargement
Dim1 : dimension x de la boîte à examiner
après orientation
Dim2 : dimension y de la boîte à examiner
après orientation Dim1 : dimension z de la boîte à examiner
après orientation
X
Hmy
Z
Hy
Y
Hmx
Hmz
Figure 9 : Paramètres de la fonction FindBox()
La fonction AnalyzeBox cherche, par ordre de priorité,
une boîte ayant une hauteur qui est proche de Hy mais pas
supérieur à Hmy, une longueur proche mais pas supérieure
à Hmx et une largeur proche de Hz mais pas supérieur à
Hmz. Ceci
44
veut dire que cette fonction considère d'abord la
hauteur (y dimension), donc, parmi les boîtes qui ont une même
hauteur, elle vérifie les longueurs (x dimension) et finalement parmi
les boîtes ayant la même longueur et la même hauteur, elle
vérifie la profondeur (z dimension). Cette fonction calcule les
différences entre le volume encore disponible dans la couche
(c'est-à-dire le vide) et le volume de chaque boîte, à la
fin, elle récupère la boîte qui génère une
moindre différence pour un meilleure remplissage. Elle cherche aussi les
boîtes ayant une y-dimension supérieure mais proche de la hauteur
de la couche courante. Les boîtes qui conviennent, celle qui ont la
hauteur appropriée sont chargées. Celles qui ne conviennent pas
nécessitent, en effet, une autre considération.
Dans l'algorithme HI-BHA, une méthode appelée
`'Layer-in-layer packing`' ceci pour dire chargement d'une couche dans une
couche. Layer-in-Layer est une fonction qui crée une couche au sein
d'une autre. Cette fonction permet de loger la boîte ayant la hauteur qui
ne convient pas à la couche. Si aucune boîte de convient dans le
vide, ce vide est considérée comme perdue.
Dans la fonction `'FindBox`', la hauteur de la couche est
adaptée au y-dimension de la plus haute boîte. Quand la hauteur de
la courante couche augmente, le total des incrémentations de la couche
du début à la fin du chargement des boîtes dans cette
couche est stocké dans la variable layerinlayer. A la fin du chargement
des boites dans cette couche, si la variable layerinlayer est supérieure
à zéro, un autre chargement dans la couche est entrepris. Quand,
le Layer-in-layer packing`' est utilisé, le modèle utilise
beaucoup de volume.
Après chaque chargement, le volume des boîtes
chargées ainsi que le volume des boîtes non chargé sont
calculés afin d'obtenir le taux d'utilisation de l'entrepôt et
la
45
pourcentage du volume des boîtes chargées. La
solution avec un meilleur taux d'utilisation est considérée comme
la solution finale.
Après qu'on ait obtenu tous les paramètres de la
meilleure solution, la fonction `'Report`' est appelée. Cette fonction
ré exécute le chargement avec les paramètres de la
meilleure solution trouvée et appelle la fonction `'Outputboxlist`' pour
générer le rapport (fichier) et `'Graphunpackedout`' pour
générer le fichier input de la visualisation. Les informations
sur les boîtes non chargées sont affichées à la fin
du rapport.
|