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

 > 

Techniques hybrides de recherche exacte et approchée: application à  des problèmes de transport

( Télécharger le fichier original )
par Boris BONTOUX
Université d'Avignon et des pays de Vaucluse - Doctorat spécialité informatique 2008
  

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

5.6.5 Problème de chargement séquentiel à deux dimensions

Le problème de chargement à deux dimensions est un problème que l'on retrouve fréquemment dans la littérature. Les méthodes que nous décrivons par la suite sont des méthodes classiques et qui ont montré leur efficacité.

Méthodes de calcul de bornes inférieures

Nous avons appliqué deux calculs de bornes inférieures sur la hauteur totale d'un chargement à deux dimensions. Ces bornes ont été définies dans un contexte dans lequel l'aspect séquentiel n'était pas présent. Elles restent cependant valides, bien que de qualité inférieures. À notre connaissance, il n'existe pas de borne inférieure prenant en compte les contraintes séquentielles.

La première borne est dérivée d'une borne proposée par Martello et Toth (1990) pour le Two-Dimensional Bin Packing. Cette borne inférieure se base sur un partitionnement des objets. Étant donnée une valeur entière q telle que 1 = q = 1 2W W est la largeur de la surface de chargement des véhicules et étant donné J l'ensemble des objets du chargement, on pose:

K1 = {j ? J : wj > W - q} (5.35)

1

K2 = {j ? J : W - q = wj > 2W} (5.36)

1

K3 = {j ? J : 2W = wj = q} (5.37)

On remarque que deux objets appartenant à K1 ou K2 ne peuvent être chargés côte à côte sur la surface de chargement.

Chapitre 5. Application au problème de Tournées de Véhicules avec Contraintes de Chargement

On définit pour tout entier q tel que 1 = q = 12W la borne suivante :

B(q) = ? hj + max (0, [{ ? wjhj - ? (W - wj)hj )}\W1) (5.38)

j?K1?K2 j?K3 j?K2

On obtient donc une borne inférieure définie par :

LS 1= 1=q max= {B(q)} (5.39)

/2

La complexité de cette borne est en O(n log n). En effet, Martello et Toth (1990) ont montré qu'on pouvait limiter les valeurs de q aux différentes valeurs prises par wj telles

1

que 1 =wj= 2W.

Une autre borne a été proposée par Martello et al. (2000) pour le problème du Strip Packing. En considérant que les objets sont rangés par ordre décroissant de hauteurs,

on définit k = max{i :

i

?

j=1

wj = W} et soit i(l) la valeur minimale d'index telle que

wl +

i(l)

?

j=1

wj > W quel que soit l > k vérifiant wl +

k

?

j=1

wj > W. Une borne inférieure est

donnée par :

LS2= max{hl + hi(l) : l > k et wl + ?

j=1

wj > W} (5.40)

La complexité de cette borne est en O(n log n). Il a été montré qu'il n'existe pas de relation de dominance entre LS1 et LS2.

Remplissage heuristique

Nous décrivons maintenant les différents algorithmes heuristiques que nous avons utilisés pour déterminer si un chargement est réalisable ou non. Tous ces algorithmes prennent en entrée une liste d'objets à insérer. Les différents tris possibles sur cette liste ont des conséquences sur les résultats des algorithmes. En règle générale, on considère que la liste est triée selon l'ordre de visite des clients (pour satisfaire les contraintes de séquentialité des chargements), puis par ordre décroissant soit sur la largeur des objets, soit sur la hauteur des objets.

Une première famille d'algorithmes heuristiques sont les algorithmes par niveau ou par étage. Le chargement est obtenu en plaçant les objets de gauche à droite, sur des lignes formant ainsi des niveaux ou des étages. Le premier niveau est le fond de la surface de chargement (la largeur de la surface). Les niveaux suivants sont formés

par une ligne horizontale coïncidant avec le haut du plus grand objet placé au niveau inférieur. On retrouve dans la littérature trois stratégies classiques pour le chargement à deux dimensions. Ces stratégies ont été adaptées à partir d'algorithmes prévus pour le cas à une dimension. Dans chaque cas, les objets sont triés par ordre de passage des clients à qui ils appartiennent, puis par ordre décroissant de hauteur. Soit j l'objet courant et s le dernier niveau créé :

Next-Fit Decreasing Height (NFDH) : L'objet j est inséré le plus à gauche possible sur le niveau s, s'il rentre. Si ce n'est pas le cas, on crée un nouveau niveau (s := s + 1), et j y est inséré le plus à gauche possible (voir la figure 5.7).

First-Fit Decreasing Height (FFDH) : L'objet j est inséré le plus à gauche possible sur le premier niveau dans lequel il rentre. Si aucun niveau ne peut contenir j, un nouveau niveau est créé de manière similaire à l'heuristique NFDH (voir la figure 5.8). Pour satisfaire la contrainte de séquentialité du chargement, on fixe le premier niveau dans lequel on peut insérer un objet, égal au dernier niveau créé pour le client précédent. Cet algorithme présente un intérêt lorsque les clients proposent un nombre important d'objets. Dans le cas contraire, le chargement est très proche de celui renvoyé par l'algorithme NFDH.

Best-Fit Decreasing Height (BFDH) : L'objet j est inséré le plus à gauche possible sur le niveau, parmi ceux sur lesquels il rentre, pour lequel l'espace horizontal perdu est le plus faible. Si aucun niveau ne convient, un nouveau niveau est créé tel que décrit précédemment (voir la figure 5.9). Pour satisfaire la contrainte de séquentialité du chargement, on fixe le premier niveau dans lequel on peut insérer un objet, égal au dernier niveau créé pour le client précédent. Cet algorithme présente un intérêt lorsque les clients proposent un nombre important d'objets. Dans le cas contraire, le chargement est très proche de celui renvoyé par l'algorithme NFDH.

Coffman et al. (1980) ont analysé les algorithmes heuristiques NFDH et FFDH pour la résolution du problème de Strip Packing à deux dimensions, pour lequel tous les objets sont insérés dans une boîte unique dont on cherche à minimiser la hauteur. Étant donné un problème de minimisation P et un algorithme heuristique A, on note A(I) et Opt(I) la valeur renvoyée par l'algorithme A et la valeur de la solution optimale, pour une instance I du problème P. Coffman et al. ont prouvé que, si les hauteurs des objets sont normalisées de telle sorte que maxj{hj} = 1, alors :

NFDH(I) = 2 x Opt(I) + 1 (5.41)

FFDH(I) = 17

10 x Opt(I) + 1 (5.42)

Les deux bornes sont les plus restrictives, c'est-à-dire que les facteurs multiplicatifs sont les plus petits possibles.

Nous présentons maintenant plusieurs heuristiques de chargement dont la plupart dérivent de l'heuristique Bottom Left proposée initialement par Baker et al. (1980).

Ces algorithmes suivent tous le même principe. Étant donnée une liste d'objets à insérer, les objets sont sélectionnés successivement pour être insérés dans la surface de

Chapitre 5. Application au problème de Tournées de Véhicules avec Contraintes de Chargement

1

5

3

2

6

4

FIGURE 5.7 - Next Fit Decreasing Height

chargement. Tout au long de la résolution des algorithmes, on garde en mémoire une liste ordonnée de positions de chargements disponibles pour de nouveaux objets. À l'initialisation, il n'y a qu'une position, la position en bas à gauche (d'où le nom de Bottom Left). Chaque fois qu'un objet est inséré, la position à laquelle il est inséré est modifiée et on ajoute au plus une nouvelle position. Ainsi, la taille de la liste de positions de chargements disponibles est bornée par le nombre d'objets insérés, augmenté d' une unité. Les figures 5.10 et 5.11 représentent la gestion de la liste de positions avant et après insertion d'un objet.

La position pour le placement d'un objet est sélectionnée à partir d'une liste de positions disponibles. Ce placement ne doit pas violer les contraintes de chargement (l'objet ne doit pas dépasser des limites de la surface de chargement, il ne doit pas chevaucher un autre objet, et enfin, son placement ne doit pas empêcher le déchargement d'objets situés sur la suite du parcours). La position choisie va dépendre de l'algorithme de chargement. Si tous les objets sont placés dans la surface de chargement, la route est considérée comme réalisable. Dans le cas contraire, la liste des positions disponibles est ramenée à la position initiale, et un autre algorithme de chargement est appelé afin de proposer un chargement de l'ensemble des objets.

La gestion de la liste des positions est représentée par les figures 5.10 et 5.11. Pour chaque position, on ne conserve que deux informations : la hauteur de la position et la longueur du segment jusqu'à la prochaine position (qui correspond à un changement

5.6. Notre approche : un schéma de Branch & Price

1

3

2

4

5

6

FIGURE 5.8 - First Fit Decreasing Height

de hauteur). Pour la position la plus à droite, la deuxième information est la distance jusqu'au côté droit de la surface de chargement. On peut remarquer sur la même figure qu'on ne garde pas en mémoire les positions correspondant à des « trous ». Étant données les contraintes de séquentialité, le cas d'un objet pouvant se placer sous un autre ne peut arriver que pour deux objets du même client. En partant du principe qu'en cas de chargement non-réalisable, plusieurs ordres de tris sur les objets seront appliqués, les configurations de trous ont peu de chance d'empêcher un chargement.

La figure 5.10 représente un chargement pour lequel la liste de positions disponibles est :

(4,4); (3,2); (2,2); (0,2)

Après insertion d'un objet de largeur 5 et de hauteur 2 telle que présentée dans la figure 5.11, la liste des positions disponibles devient :

(7,5); (3,1); (2,2); (2,0)

Les figures 5.12 et 5.13 présentent à partir d'un autre exemple de configuration de chargement les différentes mises à jour possibles sur la liste des positions possibles après l'insertion d'un objet.

Chapitre 5. Application au problème de Tournées de Véhicules avec Contraintes de Chargement

1

3

2

4

5

6

FIGURE 5.9 - Best Fit Decreasing Height

Les heuristiques que nous avons utiisées sont les suivantes :

Bottom-Left: Proposé par Chazelle (1983), la position choisie pour chaque objet à in-
sérer est la position la plus en bas, puis la plus à gauche (voir la figure 5.14).

Improved Bottom-Left: Liu et Teng (1999) ont développé un algorithme amélioré du Bottom-Left, en donnant la priorité aux mouvements vers le bas de telle sorte que l'objet soit déplacé vers la gauche uniquement si aucun mouvement vers le bas n'est possible (voir la figure 5.15).

Max Touching Perimeter: Cet algorithme a été proposé par Lodi et al. (1999). Pour chaque position, on calcule le périmètre des zones de contact entre l'objet à insérer et les objets déjà insérés. On choisit alors la position qui maximise ce périmètre (voir la figure 5.16, appliquée sur le même exemple que celui présenté par la figure 5.11). Une variante a été proposée (Max Touching Perimeter No Wall) qui ne prend pas en considération dans le calcul du périmètre la zone de contact entre l'objet et les parois de la surface de chargement.

Ces algorithmes heuristiques offrent un panel de solutions de chargement. La complexité de ces algorithmes est de l'ordre de O(n2) (pour chaque objet, on vérifie les n positions possibles).

(4,4)

4

4

(3,2)

2

3

(2,2)

2

2

(0,2)

FIGURE 5.10 - Représentation des coordonnées des objets

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








"Le doute est le commencement de la sagesse"   Aristote