• Aucun résultat trouvé

Chapitre 3 : Réseaux de contraintes

3.4 Approches de résolution des problèmes CSP

3.4.5 Strategies d'énumération

Un algorithme de recherche pour la satisfaction des contraintes nécessite un ordre dans lequel les variables seront étudiées et aussi l'ordre dans lequel les valeurs seront choisies.

81

La sélection de l'ordre correct des variables et valeurs peut considérablement améliorer l'efficacité de la résolution. Les heuristiques des variables et des valeurs jouent un rôle important dans la résolution des CSP.

Pour établir ces ordres des heuristiques de sélection de variables et des heuristiques de sélection de valeurs sont utilisées respectivement pour la résolution de CSP[105].

a) Heuristiques de selection de variables

La recherche soutient que l'ordre dans lequel les variables sont affectées au cours de la recherche affecte fortement la taille de l'espace exploré à la recherche de solutions, ce qui démontre que l'ordre des variables est crucial pour le traitement d'une solution efficace. Certaines heuristiques pour la sélection de variables permettent de diminuer le temps de calcul pendant le processus de recherche.

La littérature présente différentes voies pour le développement de cette sélection, qui dépend de la nature du problème, pour diriger une propagation efficace des contraintes. Deux types d'heuristiques d'ordre de variable doivent être pris en compte.

L’heuristique de sélection des variables statiques: qui génère un ordre fixe des variables avant de lancer la recherche, sur la base d’informations globales dérivées du graphe de contraintes initial.

L’heuristique de sélections variables dynamiques: qui peut changer l'ordre des variables dynamiquement basé sur l'information locale qui est généré pendant la recherche.

L'idée principale qui existe après le choix d'une variable est de minimiser la taille de l'arbre de recherche (espace de recherche amélioré) et de s'assurer que les branches de l'arbre qui n'ont pas de solution seront élaguées le plus rapidement possible [111].

L'ordre dans lequel les variables sont affectées lors de la recherche peut avoir un impact significatif sur la taille de l'espace de recherche. Généralement, les heuristiques de sélection de variables essaient de sélectionner les variables qui limitent le plus les autres dès que possible. L'intuition est d'essayer d'affecter le plus rapidement possible les variables les plus contraintes.

La sélection des variables peut être dynamique ou statique, les termes dynamiques et statiques se réfèrent au moment où l'ordre dans lequel les variables pour l'instanciation sont considérées.

82

Heuristiques de sélection statique

Ces heuristiques de sélection statiques sont basées sur les informations globales dérivées de la topologie du graphe de contraintes d'origine qui représente le CSP.

Ces heuristiques de sélection statiques génèrent un ordre fixe, des variables avant de commencer la recherche, sur la base d'informations globales dérivées de la structure du réseau de contraintes d'origine qui représente le CSP[105]. Parmi les heuristiques les plus utilisées, nous pouvons citer:

Largeur minimale : considère la largeur de la variable 𝑥 comme le nombre de variables qui sont avant 𝑥, selon un ordre donné, et qui sont adjacentes à 𝑥. Les variables sont ordonnées du dernier au premier en largeur décroissante. Cela signifie que les variables qui sont au début de l'ordre sont les plus contraintes et les variables qui sont à la fin de l'ordre sont les moins contraintes. Cette heuristique est particulièrement utile pour les CSP où le degré des nœuds dans le graphe de contraintes varie significativement.

Degré maximal : ordonne les variables dans un ordre décroissant de leur degré dans le graphe de contraintes. Le degré d'un nœud est défini comme le nombre de nœuds qui lui sont adjacents. Cette heuristique vise également à trouver un ordre de largeur minimum, bien qu'il ne le garantisse pas.

Heuristiques de sélection dynamiques

Les heuristiques dynamiques peuvent changer l'ordre des variables dynamiquement en fonction des informations locales générées pendant la recherche. Généralement, les heuristiques de sélection dynamique essaient de sélectionner les variables qui limitent le plus les autres dès que possible. L'idée principale est d'essayer d'affecter le plus rapidement possible les variables les plus contraintes et réduisant ainsi le nombre de retour en arrière. Dans la littérature, plusieurs heuristiques de sélection dynamiques ont été proposées, les plus courantes étant: [105].

Valeurs restantes minimales: consiste à sélectionner une variable avec un domaine plus petit. Cette technique est basée sur l'idée que si une variable a peu de valeurs dans son domaine, alors il est plus difficile de trouver une valeur cohérente.

Cardinalité maximale : Cette heuristique, appelée Degré Max, consiste à sélectionner arbitrairement la première variable, puis à sélectionner la variable liée au plus grand nombre de variables déjà instanciées.

83

b) Heuristiques de sélection de valeurs

Une fois la décision d'instancier une variable est prise, plusieurs valeurs peuvent être disponibles pour la sélection. Encore une fois, l'ordre dans lequel ces valeurs sont considérées peut avoir un impact important sur le temps pour trouver la première solution.

Un ordre de valeurs permet de rechercher une branche qui mène à une solution plus tôt que les branches qui ne mènent pas à la solution. Par exemple, si le CSP a une solution, et si une valeur correcte est choisie pour chaque variable, alors une solution peut être trouvée sans retour arrière. Supposons que nous avons sélectionné une variable à instancier alors comment choisir une valeur associée à cette variable? Cette question nous ramène à traiter deux cas possibles. Dans le cas où aucune valeur ne réussit à satisfaire les contraintes, alors l’ordre de valeurs n’a pas d’importance. D'autre part, si nous pouvons trouver une solution complète basée sur les instanciations passées, alors nous pouvons utiliser une des techniques des heuristiques de sélection de valeurs[105].

Min-Conflits: cette heuristique ordonne les valeurs en fonction des conflits dans lesquels elles sont impliquées avec les variables non instanciées.Chaque valeur de la variable 𝑥𝑖 est associée au nombre total de tuples qui sont incompatibles avec les contraintes qui sont impliquées dans la variable 𝑥𝑖. Donc, la valeur avec la plus petite somme est sélectionnée[112].

Domaine de taille maximale: est un algorithme qui consiste à sélectionner la valeur qui laisse pour les futures variables un domaine de taille maximale[112].