WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Optimisation heuristique du problème d'entreposage d'objets en trois dimensions.

( Télécharger le fichier original )
par Mulindwa Chirac RUHAMYA
Universite adventiste de Lukanga - Licence 2012
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

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.

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Soit réservé sans ostentation pour éviter de t'attirer l'incompréhension haineuse des ignorants"   Pythagore