• Aucun résultat trouvé

M´ethodes de recherche heuristiques

Dans la pr´esentation des principales m´ethodes de recherche de solution, nous avons toujours suppos´e sans pr´ecis´e un ordre sur les variables ainsi que sur les valeurs d’instan- ciation. Nous d´etaillons ci-dessous quelques heuristiques d’ordonnacement des variables et des valeurs d’un probl`eme. Le calcul de ces ordres peut faire l’objet d’un pr´e-traitement, l’ordonnancement est alors qualifi´e de statique ou bien peut ´evoluer avec la recherche, on parle alors d’ordonnacement dynamique.

Avant de d´etailler quelques uns de ces ordonnancements, nous donnons ici quelques mesures relatives `a la topologie des graphes qui seront utiles pour caract´eriser les r´eseaux de contraintes.

D´efinition 1.18. Largeur d’un noeud : ´

Etant donn´e un graphe G = (X, E) et un order <X des noeuds du graphe, la largeur d’un noeud particulier x est le nombre de noeuds de G adjacents `a x et inf´erieurs relativement `

a <X. On le note largeur-noeud(G, <X, x)

∀G = (X, E), ∀ <X, ∀x ∈ X, largeur-noeud(G, <X, x) = |{y ∈ X / (x, y) ∈ E et y <X x}|

D´efinition 1.19. Largeur d’un ordre : ´

Etant donn´e un graphe G = (X, E) , la largeur de l’ordre <X des noeuds du graphe est

´egale au maximum de la largeur des noeuds composants G. On le note largeur-ordre(G, <X)

∀G = (X, E), ∀ <X, largeur-ordre(G, <X) = max(largeur-noeud(G, <X, x)) tq x ∈ X

D´efinition 1.20. Largeur d’un graphe :

La largeur d’un graphe G = (X, E) est la largeur minimum de l’ensemble des ordres possibles sur ce graphe. On note largeur-graphe(G)

∀G = (X, E), largeur-graphe(G) = min(largeur-ordre(G, <X)∀ <X

Les d´efinitions suivantes affinent les notions pr´ec´edentes `a la largeur d’un graphe. Elles proposent la d´efinition d’un «facteur de regroupement» des noeuds relativement `a la relation d’adjacence. Nous pr´ef´erons le terme classique de bandwidth pour exprimer ce regroupement.

D´efinition 1.21. Rang :

Le rang d’un ´el´ement relativement `a un ordre < est ´egal `a la position de dans cet ordre. On note rang(<, e)

D´efinition 1.22. Distance entre noeuds

: La distance entre deux noeuds x, y d’un graphe G = (X, E) relativement `a un ordre <X

des noeuds est ´egale `a la diff´erence des rangs de chacun des noeuds dans cet ordre. On note distance(G, <X, x)

1.6. M´ethodes de recherche heuristiques 31

D´efinition 1.23. Bandwidth d’un noeud : ´Etant donn´e un graphe G = (X, E) et un order <X des noeuds du graphe, la bandwidth d’un noeud x du graphe est ´egale `a la distance maximale entre ce noeud et tout autre noeud adjacent y relativement `a l’ordre utilis´e. On le note bandwidth-noeud (G, <X, x, y)

∀G = (X, E), ∀x ∈ X, bandwidth-noeud (G, <X, x) = max(distance(G, <X, x, y)) tq

(x, y) ∈ X

D´efinition 1.24. Bandwidth d’un ordre : ´

Etant donn´e un graphe G = (X, E), la bandwidth de l’ordre <X des noeuds du graphe est ´egale au maximum de la bandwidth des noeuds composants G. On note bandwidth- ordre(G, <X)

∀G = (X, E), bandwidth-ordre(G, <X) = max(bandwidth-noeud(G, <X, x)) tq x ∈ X

D´efinition 1.25. Bandwidth d’un graphe :

La bandwidth d’un graphe G = (X, E) est la bandwidth minimum de l’ensemble des ordre possibles sur ce graphe. On le note bandwidth-graphe(G)

∀G = (X, E), bandwidth-graphe(G) = min(bandwidth-ordre(G, <X))∀ <X

1.6.1 Ordonnancement des variables

Selon Bessi`ere et al. [BMFL02], un des facteurs essentiels pour l’efficacit´e d’une re- cherche en arbre de type Backtraking est le crit`ere utilis´e pour s´electionner la prochaine variable `a instancier. C’est pourquoi des m´ethodes d’ordonnancement de variables ont ´et´e ´elabor´ees. Ces m´ethodes visent `a d´eterminer quelle sera la prochaine variable `a affecter en utilisant certaines heuristiques. Ces m´ethodes peuvent aussi ˆetre utilis´ees pour d´eterminer l’ordre selon lequel les valeurs des domaines sont test´ees lors de l’affectation des variables. Un premier type d’ordonnancement des variables se base uniquement sur la structure du probl`eme ou sur le graphe de contraintes. ´Etant donn´e que la structure du graphe de contraintes ne change pas lors de la r´esolution, on parle alors de m´ethodes d’ordonnance- ment de variables statiques (Statique Variables Ordering). Des heuristiques tel Largeur- minimum (min-width) [Fre82] qui choisit un ordre minimisant la largeur du graphe ou max-degree (max-deg) [DM94] qui ordonne les variables selon la taille de leur voisinage peuvent ˆetre employ´ees.

Le second type est l’ordonnancement dynamique de variables (DVO). Comme son nom l’indique, le DVO choisira une variable d’une mani`ere d´ependante `a l’´etat courant de la r´esolution du probl`eme. Une heuristique de ce type est le dom [HE79]. Pour l’ensemble des variables non affect´ees Z, on choisira une variable xnext ∈ Z tel que le domaine de xnext

est le plus petit de tous les domaines de Z. L’ordre d’affectation des variables sera donc modifi´e d´ependamment des variables d´ej`a affect´ees.

D’autres m´ethodes hybrides de s´election ont aussi ´et´e sugg´er´ees tel dom+deg [FD95] utilisant la m´ethode dom pour la s´election prioritaire et deg pour briser les ´egalit´es. Une autre heuristique est le dom+futdeg [FD95] qui brise les ´egalit´es en s´electionnant la va- riable ayant le plus grand degr´e futur. Finalement, d’autres heuristiques de type DVO peuvent ˆetre utilis´ees. Ce sont des heuristiques s´electionnant les variables selon la duret´e des contraintes associ´ees `a celles-ci. Il faudra, dans ce cas pr´ecis, v´erifier `a quel point une contrainte restreint le probl`eme. Cependant, comme mentionn´e par Bessi`ere et al. [BCS01], le d´efaut de ces heuristiques est la n´ecessit´e de v´erifier la duret´e des contraintes, ce qui est

32 Chapitre 1. Probl`emes de Satisfaction de Contraintes

tr`es gourmand en tests de contraintes.

L’ordonnancement de variables a ´egalement ´et´e ´etudi´e par Smith [Smi]. Plus sp´ecifi- quement, les effets du succeed-first et du fail-first ont ´et´e exp´eriment´es pour le probl`eme de «car-sequencing» sur une chaˆıne de production. Le fail-first consiste `

a choisir la variable restreignant le plus possible les domaines des autres variables. Le succeed-first consiste `a choisir la variable restreignant le moins possible les domaines des autres variables. Selon les exp´erimentations de Smith, une strat´egie d’ordonnancement de valeurs de type fail-first obtient de meilleurs r´esultats pour ce probl`eme. Cepen- dant, il ne semble pas possible de pouvoir g´en´eraliser le ph´enom`ene `a tous les probl`emes de CSP. En effet, aucune de ces heuristiques n’a montr´e un traitement meilleur pour tous CSP

[BCS01]. L’heuristique `a utiliser lors de la r´esolution sera donc grandement d´ependante

du probl`eme `a r´esoudre.

1.6.2 Ordonnancement des valeurs

Ordonner les valeurs dans chaque domaine revient `a changer l’ordre d’exploration des branches de l’arbre de recherche d’un probl`eme. Cette r´eorganisation influe fortement sur l’efficacit´e d’une m´ethode de recherche. Elle n’a d’int´erˆet que si le but est de trouver une solution au probl`eme [Dec90]. Relativement `a l’effort fourni dans l’´etude des ordonnance- ments de variables, les heuristiques sur les valeurs sont relativement rares.

Selon le probl`eme pos´e, on limitera le degr´e de contrainte induit par l’ordre sur les va- leurs afin de converger au plus vite vers une solution car cela revient `a limiter les chances de backtracker.

L’heuristique min-conflict favorise les valeurs les plus prometteuses. Cet ordonnan- cement est fait relativement aux variables «futures» non d´efinitivement instanci´ees.

un autre type d’ordre utilisable notamment dans un sch´ema look-ahead consiste `a consid´erer le nombre de supports de chaque valeur dans un espace non explor´e. L’algo- rithme AC-4 (Voir algorithme1.6) pr´esentant une capacit´e de d´enombrement des supports de chaque valeur est un candidat de choix pour l’implantation d’une telle heuristique.

Dans le mˆeme approche, l’heuristique LVO (Look-ahead Value Ordring) [FD95] compte le nombre de fois o`u une valeur du domaine de la variable courante est en conflit avec une valeur d’une variable future. La valeur conduisant au plus petit nombre de conflits est choisie prioritairement. Associ´e `a l’algorithme FC-CBJ cette m´ethode pr´esente de bons r´esultats notamment dans le traitement de probl`emes sur-contraintes.

Citons enfin, l’heuristique stiching value [FD] qui dans un sch´ema de type look-back non chronologique, se rem´emore la valeur affect´ee `a une variable lors de la phase avant. Ensuite lors d’une nouvelle phase avant, sticking value se propose de r´einstancier cette variable `a son ancienne valeur si elle se r´ev`ele ´egalement compatible avec le nouvel engage- ment. L’intuition ici est qu’une variable compatible une fois peut l’ˆetre `a nouveau surtout si nous consid´erons que les sauts pr´ec´edents la nouvelle phase «avant» ne remettent en cause g´en´eralement qu’une petite partie de l’engagement. Cette heuristique qui maintient un certain historique heuristique durant la recherche est tr`es proche du backtracking. Son implantation est cependant largement plus simple. Les r´esultats report´es par D. Frost et