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

1.6 Search: un schéma de recherche adapté à la méthode

La méthode DLS se base sur une recherche en profondeur. Une fois qu'une variable a été choisie, on choisit une valeur (selon les règles déterminées par les pondérations), puis on applique des algorithmes de filtrage (propagation de contraintes ou calcul de bornes inférieures). S'il reste des variables non instanciées, on réitère le processus.

Lorsque l'exploration d'un sous-arbre est complète, c'est-à-dire que toutes les valeurs d'une variable ont été instanciées, la fonction d'évaluation est appelée, afin d'obtenir des pondérations pour les valeurs instanciées, ainsi que pour la variable instanciée. Le fait de mettre les pondérations à jour uniquement lorsque le sous-arbre est complété permet d'assurer d'une part la complétude de la méthode, d'autre part la non-répétition de solutions.

Néanmoins, on peut imaginer ne pas visiter le sous-arbre dans son intégralité. Une phase de sondage pour chaque sous-arbre avec des informations de plus en plus complètes au fur et à mesure de la descente dans l'arbre de recherche permettrait d'envisager une méthode efficace applicable dans des temps limités.

De même, on peut appliquer une méthode de type Limited Discrepancy Search afin de limiter le nombre de valeurs instanciées pour chaque variable.

Enfin, lorsqu'il faut choisir la prochaine variable à instancier, on peut limiter le choix aux variables appartenant au voisinage des variables déjà instanciées (le voisinage d'une variable xi étant défini comme l'ensemble des variables qui partagent une contrainte avec xi). Cela permet une certaine continuité dans le parcours de l'arbre de recherche.

1.7 Algorithme général de la méthode

Par la suite, nous utiliserons les notations suivantes : Soit la variable i pour i allant de 1 à n. On note Di le domaine de la variable i. Soit pi,j la valeur de la pondération associée à la jeme valeur de la variable i, mini (respectivement maxi) la valeur minimum (respectivement maximum) des pondérations des valeurs de la variable i.

L'algorithme de la méthode DLS est le suivant :

1.8 Méthode Dynamic Learning Search: critères de sélection

La plupart des méthodes existantes consistent à définir des priorités de branchement sur les variables ou sur les valeurs. La méthode que nous proposons consiste, quant à elle, à définir dynamiquement des politiques de priorités de branchement sur les variables, ainsi que sur les valeurs que peuvent prendre les variables. N'étant pas basée sur des critères heuristiques, cette méthode se veut surtout générique. En effet, dans

Algorithme 1 : Algorithme général de DLS

1 Phase Sondage;

2 tant que critère d'arrêt non atteint faire

3

 

Construction d'arbres aléatoires : choix aléatoire d'une variable, choix aléatoire d'une valeur dans son domaine;

4 Mises à jour des pondérations en fonction des arbres aléatoires obtenus par le biais de la fonction d'évaluation;

5 tant que critère d'arrêt non atteint faire

6 Sélectionner la variable k selon les pondérations;

7

8

9

10

Trier les valeurs j avec j ? Dk selon les pondérations;

Branchement et propagation des contraintes et/ou calcul d'une borne inférieure;

Mise à jour des pondérations sur les valeurs et sur les variables au cours de la recherche dès qu'un sous-arbre est complété (ou une partie du sous-arbre visitée dans le cas d'une méthode non complète);

Phase d'évaporation;

un premier temps, sa seule dépendance au problème est la nécessité de différencier les problèmes d'optimisation combinatoires aux problèmes de satisfaction de contraintes.

En s'inspirant des principes énoncés précédemment, notre méthode propose des politiques de branchement pour les valeurs et pour les variables.

1.8.1 Problèmes de Satisfaction des Contraintes

Dans le cadre de l'application de la méthode DLS aux problèmes de Satisfaction de Contraintes, plusieurs possibilités se sont présentées à nous pour les choix des valeurs, ainsi que pour le choix des variables.

Choix de sélection des valeurs

Dans un problème de Satisfaction de Contraintes, la réponse classique au problème est de type « oui >> ou « non >> (existence ou non d'une solution). Le cas où on recherche l'ensemble des solutions n'est pas abordé ici. La qualité des solutions trouvées ne peut donc pas être un critère pour le calcul des pondérations liées aux valeurs ou aux variables.

Lorsque l'on cherche à résoudre un problème de satisfaction de contraintes, une solution correspond à l'instanciation de l'ensemble des variables. La feuille dans l'arbre de recherche qui correspond à cette solution a donc une profondeur égale au nombre de variables du problème. On comprend alors que lorsqu'une solution existe, la feuille correspondante se situera dans un sous-arbre de profondeur importante. On va donc

chercher à se diriger dans de tels sous-arbres. Le critère de pondérations pour la politique de branchement sur les valeurs est donc le suivant : pour chaque valeur de chaque variable, on garde en mémoire le maximum des profondeurs maximales des sous-arbres engendrés. La profondeur correspond dans notre cas au nombre de variables instanciées. On ne différenciera pas le cas des variables instanciées lors de la phase de propagation des contraintes, des variables instanciées lors de la séparation. La pondération associée au choix de cette valeur est donc mise à jour chaque fois que le choix de cette valeur engendre un sous-arbre d'une profondeur plus importante que tous les sous-arbres engendrés précédemment dans l'arbre par cette valeur.

Comme on cherche à se diriger vers les sous-arbres de plus grande profondeur, on va donc choisir pour chaque variable la valeur ayant la pondération la plus importante.

La moyenne de la profondeur du sous-arbre engendré ne nous a pas semblé être un bon critère de sélection. En effet, une valeur qui amènerait à un sous-arbre ayant un chemin de grande profondeur et un grand nombre de chemins de petites profondeurs aurait une moyenne de profondeur de sous-arbre assez faible et serait donc pénalisée alors que cette valeur peut s'avérer très intéressante, puisqu'elle a amené à un chemin de grande profondeur.

Choix de sélection des variables

On a vu que le choix des variables était primordial pour la taille de l'arbre de recherche. Plusieurs choix sur l'ordre de sélection des variables sont possibles, certains tirent parti des pondérations calculées pour le choix des valeurs, d'autres sont plus génériques et utilisés de façon assez répandue. Les choix suivants sont des choix classiques de la littérature.

- Première variable non instanciée : on choisit parmi les variables non instanciées la première variable dans un ordre lexicographique.

- Plus petit domaine : on choisit en priorité parmi les variables non instanciées la variable qui possède le plus petit domaine. Ce domaine peut être calculé en phase initiale de la résolution du problème ou de manière dynamique à chaque noeud.

- Plus petit regret minimum : ce choix renvoie la variable avec la plus petite différence entre la plus petite valeur possible et la prochaine plus petite valeur possible. Ce choix est basé sur le principe de regret. Le regret est défini comme la différence entre ce qu'aurait été la meilleure décision possible dans un scénario et la décision actuelle. Dans un problème des satisfaction de contraintes, on peut définir le regret minimum comme la différence entre les deux plus petites valeurs du domaine d'une variable.

- Plus petit regret maximum: ce choix renvoie la variable avec la plus petite différence entre la plus grande valeur possible et la prochaine plus grande valeur possible.

- Plus fort degré : on choisit la variable ayant le degré futur le plus important, le degré étant défini pour une variable comme le nombre de contraintes portant sur celle-ci et ayant au moins une variable non affectée.

- Plus petit domaine divisé par le plus fort degré (MinDom/Deg) : on choisit la variable ayant le plus petit rapport entre la taille de son domaine et le degré de cette variable.

Pour les choix des variables qui utilisent les pondérations sur les variables, nous avons proposé les ordres suivants :

- Profondeur maximale : on choisit parmi les variables non instanciées la variable qui a parmi ses valeurs celle qui a amené au sous-arbre le plus profond. Ce choix ne nous semble pas cohérent. En effet, lors de la fermeture d'un sous-arbre de profondeur n (où n est maximal), toutes les variables instanciées ont une de leurs valeurs qui a une pondération égale à n. Selon le critère « Profondeur maximale » pour le choix de la variable, toutes les variables auraient la même pondération et il faudrait donc choisir parmi toutes ces variables. Ce choix pourrait alors se faire de manière aléatoire ou lexicographique, mais ne profiterait pas des informations apportées par les pondérations sur les valeurs.

- Moyenne maximale : ce critère propose de choisir la variable ayant la moyenne de pondération de ses valeurs la plus importante. Par ce principe, on cherche à brancher en priorité sur les variables qui ont amené à des sous-arbres de taille importante. Ce critère est en opposition avec certains principes proposés auparavant (Haralick et Elliot, 1980).

- Moyenne minimale : ce critère propose de choisir la variable ayant la moyenne de pondération de ses valeurs la moins importante. On dirige donc la recherche vers les variables les plus contraintes. Ce critère est proche de la philosophie de la méthode First Fail.

- Plus petit écart aux extrêmes : ce critère part du principe que les variables les plus intéressantes sont les variables dont les valeurs ont amené à des sous-arbres soit de toute petite profondeur (ces variables réduisent la taille de l'arbre de recherche) soit de grande profondeur. On cherche donc à choisir en priorité les variables dont les pondérations sur les valeurs sont le plus proches possibles des extrêmes. On branchera donc sur la variable qui minimise l'équation (1.1).

1

|Di| ? minimum(n - pi,j, pi,j) (1.1)

j?Di

n représente le nombre de variables (et donc une borne supérieure de la profondeur maximale de l'arbre de recherche).

Pour ne pas privilégier les variables dont le domaine initial est restreint, cette somme est divisée par le nombre de valeurs du domaine (|Di|).

On peut remarquer que si l'on enlève le premier terme du minimum, on cherche alors la variable qui minimise

1

|Di| ? (n - pi,j) (1.2)

j?Di

ce qui est équivalent à rechercher la variable qui maximise

1

|Di| ? (pi,j) (1.3)

j?Di

Ce critère correspond alors à une constante prêt au critère de choix de Moyenne maximale. De manière équivalente, si l'on enlève le deuxième terme, on cherche alors la variable qui minimise

1

|Di| ? (pi,j) (1.4)

j?Di

ce qui correspond au critère de choix de Moyenne minimale.

Les critères de pondérations retenus pour les choix des valeurs (et donc certains des critères de choix des variables qui dépendent des pondérations) ne sont pas adaptés pour les problèmes d'optimisation combinatoire.

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








"Un démenti, si pauvre qu'il soit, rassure les sots et déroute les incrédules"   Talleyrand