• Aucun résultat trouvé

Propagation des contraintes

deux types de domaines :

• continu : les valeurs d’un domaine continu di sont comprises entre une borne basse (lb) et une

borne haute (ub). On note di:: [lb..ub]

• disjoint : les valeurs d’un domaine disjoint di constituent une liste de k entiers. On note di:: [v1, v2, . . . , vk]

efinition 2 (Variable) Une variable xid’un CSP est associ´ee `a un ensemble de k domaines Dxi= d1∪ d2∪ . . . ∪ dk qui indiquent les valeurs possibles de cette variable.

efinition 3 (Contrainte) Une contrainte ciporte sur un ensemble de k variables Xci = {x1, . . . , xk}

et restreint les valeurs possibles des combinaisons de valeurs pouvant ˆetre prises par Xci au sous-

ensemble Rci

Q

xi∈XciDxi. Une contrainte n’est satisfaite que si les valeurs de Xci se trouvent

dans un des tuples de Rci. Si Rci est vide, alors la contrainte ne pourra pas ˆetre satisfaite.

efinition 4 (CSP) Une instance de CSP est un triplet P = (X, D, C) o`u X = {x1, x2, ..., xn}

esigne un ensemble de variables, D l’ensemble de leurs domaines respectifs et C= {c1, c2, ..., cm} les

contraintes qui limiteront les valeurs l´egales de X.

efinition 5 (Instanciation) Une instanciation de P = (X, D, C) est un tuple I de valeurs prises dans le produit cart´esien Q

yi∈Y Dyi des domaines d’une liste de variables Y ⊆ X. Si Y = X,

l’instanciation est dite compl`ete et dans le cas le contraire, elle est partielle.

efinition 6 (Instanciation consistante) Une instanciation de P = (X, D, C) est consistante si chaque contrainte ci∈ C est satisfaite. Dans le cas contraire, l’instanciation est inconsistante.

2.3

Propagation des contraintes

La recherche d’une solution d’un CSP est bas´ee sur une exploration de l’espace des valeurs possibles de chaque variable. Cependant, une des caract´eristiques de la programmation par contraintes est de r´eduire dynamiquement cet espace de recherche en filtrant, en fonction de l’´etat courant des variables du probl`eme, les valeurs qui ne permettent pas de satisfaire une ou plusieurs contraintes. Cette technique de filtrage permet donc d’´elaguer l’espace de recherche en coupant les branches qui ne m`eneront pas `a une solution valide.

La figure2.1illustre l’effet du filtrage sur l’espace de recherche de toutes les solutions au probl`eme

P = ({x, y}, {[1..3], [2..4]}, x = y). Une exploration exhaustive de l’espace de recherche (figure2.1.c) est faite en douze ´evaluations dont seulement deux constituent des solutions l´egales (i.e., qui satisfont

x= y). La consistance de la contrainte x = y permet, avant mˆeme d’explorer l’espace de recherche,

de supprimer les valeurs incoh´erentes des domaines de x et y (figure2.1.b). Puis, apr`es ´evaluation de la variable x, la derni`ere valeur incoh´erente de y est ´egalement filtr´ee et quatre ´evaluations (figure

34 Chapitre 2. Optimisation par programmation par contraintes

x=1

y=2 y=3 y=4

x=2

y=2 y=3 y=4

x=3

y=2 y=3 y=4

x=2 y=2 y=3 Consistance initiale consistance après évaluation de x x=3 y=2 y=3 x ::[1..3] y ::[2..4] x ::[2..3]y ::[2..3] x = y x = y

(a)

(b)

(c)

(d)

✖ ✖ ✖

✖ ✖ ✖

Figure 2.1 – Impact du filtrage sur l’espace de recherche pour la contrainte x = y. (a) Domaines initiaux des variables x et y. (b) Espace de recherche sans filtrage des valeurs. (c) Domaine commun `a

xet y apr`es que leurs domaines respectifs soient filtr´es pour ne contenir que leurs valeurs communes (consistance de la contrainte x= y). (d) Espace de recherche avec filtrage.

Le filtrage des valeurs est appliqu´e `a chaque contrainte du probl`eme. Sa mise en œuvre est faite en deux ´etapes successives qui seront effectu´ees apr`es chaque ´evaluation de variable et tant que les domaines des variables sont modifi´es :

1. suppression, dans les domaines, des valeurs qui provoquent une inconsistance de la contrainte. 2. propagation des changements aux autres contraintes du probl`eme.

L’efficacit´e de la r´esolution d’un probl`eme est donc significativement influenc´ee par la capacit´e de chaque contrainte `a d´etecter, le plus tˆot possible, les valeurs incoh´erentes.

2.3.1

Consistances locales

Un probl`eme CSP peut ˆetre repr´esent´e par un hypergraphe o`u chaque contrainte est un hyperlien reliant toutes les variables qui y sont impliqu´ees. La figure2.2.a illustre l’hypergraphe d’un probl`eme contenant trois variables x, y et z et deux contraintes (x > y et x+ y = z).

D’autre part, si toutes les contraintes d’un CSP sont binaires (i.e., qui impliquent deux variables) ce graphe est appel´e r´eseau de contraintes et ne contient aucun hyperlien car chaque contrainte n’utilise alors que deux variables au maximum.

Il est toujours possible de construire une forme binaire d’un CSP quelconque. La figure2.2illustre un exemple de binarisation d’un probl`eme qui contient une contrainte ternaire (x+ y = z). Un ensemble de tuples U « encapsule » la contrainte x + y = z correspondant au produit cart´esien des domaines des variables x, y et z qui satisfont la contrainte. Ces tuples sont utilis´es pour exprimer des contraintes binaires liant chaque variable `a U : e.g., z ´etant la derni`ere variable d’un tuple, on ajoute une contrainte binaire z = U[2]. Dans l’exemple, il n’y a que trois tuples possibles dans U {(1, 4, 5), (2, 3, 5), (2, 4, 6)} le sous-ensemble de valeurs pour la contrainte z = U[2] est donc R(z=U [2])=

2.3. Propagation des contraintes 35 x z U y x y z x + y = z x > y x > y U = {x,y,z} U = [ (1,4,5), (2,3,5), (2,4,6) ] x=U[0] y=U[1] z=U[2] (a) (b)

Figure 2.2 – Binarisation de P = ({x, y, z}, {[1..2], [3..4], [5..6]}, {x+y = z, x > y}). (a) Hypergraphe des contraintes (b) Graphe des contraintes binaires obtenues apr`es binarisation.

La repr´esentation binaire d’un CSP est utilis´ee dans des techniques de filtrage, appel´ees consis- tances d’arcs, qui sont applicables `a n’importe quel r´eseau de contraintes. Pour une description d´e- taill´ee des algorithmes de consistances d’arcs, le lecteur est invit´e `a consulter le livre [164] `a partir de la page 37.

Si ces techniques de filtrage sont particuli`erement efficaces pour un faible nombre de variables, leur g´en´eralisation `a des chemins de taille K (on parle alors de K-consistance) est souvent trop coˆuteuse (i.e., la complexit´e est exponentielle) pour r´eduire efficacement les domaines d’un CSP complexe. On pr´ef`ere alors utiliser des contraintes n-aires dont la s´emantique sp´ecifique est associ´ee `a des algorithmes de filtrage d´edi´es et beaucoup plus efficaces.

2.3.2

Consistances de contraintes globales

Les contraintes globales impliquent un ensemble de variables dont la taille est g´en´eralement un param`etre de la contrainte. `A chaque contrainte globale correspond une m´ethode de propagation sp´e- cifique qui tire parti de la s´emantique de la contrainte pour filtrer efficacement les valeurs incoh´erentes des variables.

Les algorithmes utilis´es (on parle de consistance globale) sont souvent issus de la recherche op´e- rationnelle et s’av`erent plus efficaces et plus rapides que des consistances d’arcs sur un probl`eme binaris´e. Les contraintes globales permettent donc de capitaliser les m´ethodes de r´esolution de pro- bl`emes difficiles (e.g., probl`eme du sac `a dos, ordonnancement de tˆaches sous contraintes de ressources, etc.) pour ˆetre r´eutilisables dans de multiples contextes.

Une autre qualit´e des contraintes globales est de simplifier consid´erablement la mod´elisation de probl`emes complexes : elles permettent d’abstraire des sous-probl`emes pr´esents dans de nombreuses applications r´eelles.

36 Chapitre 2. Optimisation par programmation par contraintes