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

4.3.3 Implémentation détaillée de l'opérateur de croisement

Algorithme de programmation dynamique

L'algorithme de programmation dynamique utilisé pour trouver le plus court chemin dans le graphe est celui présenté dans le chapitre 2. L'algorithme commence avec des chemins partiels initiaux associés à chaque noeud du premier groupe. Les chemins partiels sont ensuite étendus itérativement avec la contrainte que chaque groupe doit être visité exactement une fois. Cette contrainte est traitée comme la contrainte d'élémentarité du chemin, présentée par Feillet et al. (2004). Le graphe étant acyclique, l'extension des chemins partiels dans l'ordre topologique des noeuds fournit le chemin optimal.

Dans ce qui suit, nous notons L = (C, ä1, .. . , äm) un label correspondant à un chemin partiel, pour lequel C représente le coût de transport du chemin partiel et äi E {0, 1} indique si le groupe Wi est présent dans le chemin ou non. L'extension d'un label à travers un arc est réalisable quand äi = 0 pour le groupe Wi de la ville de destination, excepté lorsque ce groupe est le dernier groupe de la séquence. Dans ce cas, les conditions de réalisabilité sont que la ville de destination est la première ville du label et que äi = 1 pour 1 i m.

Un label L1 domine un label L2, ce qui est noté L1 < L2, lorsque ces deux labels mènent au même noeud et que l'on peut être sûr que n'importe quelle extension de L1 est de coût moindre que l'extension identique pour L2. Ici, L1 < L2 quand C1 C2,

ä1 i ä2 i pour 1 i m et que les premières et dernières villes de deux labels sont
identiques. Dans ce cas, L2 peut être supprimé.

Bornes inférieures

À chaque fois qu'un label L = (C, 51, . . . , 5m) est étendu vers une ville, on calcule une borne inférieure sur le coût de n'importe quel chemin pouvant être obtenu à partir de ce label. Cette borne inférieure est comparée avec une borne supérieure initialement définie par le coût de l'individu père. Cette borne supérieure est valide, puisque le tour des villes du père existe dans le graphe. La borne supérieure est mise à jour à chaque fois qu'une nouvelle meilleure solution est trouvée par l'algorithme. Lorsque la borne inférieure n'est pas inférieure à la borne supérieure, le label L est supprimé.

La borne inférieure LB(L) est donnée par la formule suivante :

LB(L)=C+ ? Clj

{1=j=m,5j=0}

pour laquelle l est la position dans la séquence maître du groupe vers lequel L vient d'être étendu et Clj est le coût minimal induit pour la visite future du groupe Wj.

Clj est calculé comme le coût minimum de l'arc parmi les arcs dont :

1. la destination est une des villes de la dernière occurrence du groupe Wj dans la séquence maître,

2. l'origine est une des villes situés entre le groupe en position l (incluse) et la dernière occurrence du groupe Wj dans la séquence maître.

Les valeurs Clj sont calculées dans une phase de prétraitement, dès que la séquence maître est fixée, pour chaque position l de la séquence et pour chaque groupe Wj. La complexité de ce calcul est en O(nm).

On peut noter qu'il peut arriver que la dernière occurrence de Wj précède la position l. Dans ce cas, Clj est fixé à une grande valeur et le label est automatiquement supprimé si 5j = 0, puisque le groupe Wj est inaccessible.

Réduction du graphe

Le graphe construit à partir de la séquence maître peut être réduit. Puisque chaque groupe doit être visité, aucun arc n'est autorisé à passer au-dessus de toutes les occurrences d'un groupe. De plus, deux occurrences d'un même groupe n'ont pas à être connectées. Enfin, un groupe situé à la position j dans la séquence maître ne doit être connecté qu'avec la première occurrence de chaque groupe, dans le cas où les deux occurrences seraient situées après la position j. En effet, dans ce cas, toute extension possible à partir de la deuxième occurrence du groupe est aussi possible à partir de la première occurrence du groupe. La figure 4.3 présente le graphe obtenu à partir de l'exemple présenté par la figure 4.1 une fois ces règles appliquées.

W4 W1 W3 W1 W5 W2 W3 W2 W5 W4

FIGURE 4.3 - Exemple d'un croisement et du graphe résultant réduit utilisé par la procédure dropstar : vue avec agrégation des sommets en groupes

Accélérations heuristiques

La procédure de croisement peut être une procédure très coûteuse en temps. Dans le but d'accélérer sa résolution, nous proposons deux accélérations heuristiques.

Limitation de la taille des listes de chemins partiels Pendant la déroulement de l'algorithme de programmation dynamique, une liste de chemins partiels est associée à chaque ville. Malgré les règles de dominances, ces listes peuvent être de taille relativement importante. Le but ici est de limiter leur taille. Une limite unique est fixée (100 dans nos expérimentations). Un règle d'évaluation est définie afin de déterminer quels chemins partiels doivent être supprimés lorsque la taille de la liste dépasse la limite. L'évaluation eval(L) d'un label L = (C, ö1, . . . , öm) est :

?{1=j=m} C1j ? Clj

{1=j=m,öj=0}

pour laquelle UB0 est le coût de l'individu père et l est la position du chemin partiel dans la séquence maître. Cette formule cherche à équilibrer le coût actuel d'un chemin partiel et une évaluation du coût d'extension (tel que proposée dans la section 4.3.3). Les deux termes sont normalisés afin que l'évaluation d'un chemin partiel initial et du chemin partiel correspondant au tour des villes de l'individu père aient une valeur identique UB0.

UB0

eval(L) = C +

Réduction des groupes Le but ici est de limiter la taille du graphe, en supprimant des villes de différents groupes. Une mesure est définie afin d'évaluer l'attrait d'une ville. Les villes les moins attractives sont supprimées de chaque groupe de la séquence maître. La mesure quantifiant l'intérêt de la ville vk du groupe à la position l de la séquence est :

eval(k, l) = ?

vi?-(l) ?

vj?+(l)

cik + ckj - cij

où -(l) (respectivement, +(l)) est l'ensemble des villes appartenant aux deux groupes précédent (respectivement suivant) la position l dans la séquence maître. Cette mesure indique une tendance du coût d'insertion de la ville vk dans une solution. En se basant sur cette mesure, la taille maximale d'un groupe Wi est fixée ) [|Wi|p1, où p est

un paramètre (0.8 dans nos expérimentations). On peut noter qu'avec cette formule, le pourcentage de villes supprimées d'un groupe augmente avec la taille du groupe.

Complexité de la procédure de croisement

Il est intéressant de noter que l'algorithme n'atteint pas une complexité en temps polynomiale. L'objectif de cette section est d'apporter plus de précisions quant à la complexité. Dans cette analyse, nous ne prenons pas en compte les deux accélérations heuristiques décrites ci-dessus.

Un état est défini pour chaque noeud du graphe et pour chaque valeur des ressources {ä1, . . . , äm}. Le graphe contient 2n villes. Les ressources äi sont binaires. Ainsi, le nombre d'état est O(n2m). Le label associé à un état est étendu vers un maximum de n autres états. Chaque nouveau label est inséré dans une liste de labels de taille maxi-male 2m. L'insertion consiste en une comparaison avec chaque autre label de la liste. Chaque comparaison a une complexité en O(m). Le coût de l'insertion d'un nouveau label dans une liste est donc O(m2m) et le coût d'extension d'un label O(nm2m).

On peut donc en déduire que la complexité dans le pire cas de notre algorithme est O(n2m22m). Évidemment, on peut espérer que le nombre d'opérations soit réduit de manière significative en pratique. On peut aussi noter qu'en limitant la taille des listes des labels, la complexité devient O(n2m).

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








"Les esprits médiocres condamnent d'ordinaire tout ce qui passe leur portée"   François de la Rochefoucauld