2
8. Optimisation combinatoire 5
Propagation de contraintes
Mécanisme par lequel les réductions de domaines se
propagent d’une contrainte à l’autre
Ajoutons la contrainte
x
1
+
x
3
= 4 dans notre exemple
L’algorithme de réduction de domaine pour cette
contrainte déduit que
x
1
ne peut prendre la valeur 2,
d’où
x
1
ε {1}
Si on applique à nouveau l’algorithme de réduction de
domaine pour
alldiff
, on déduit que
x
2
ε {2}: il y a eu
propagation de contraintes
8. Optimisation combinatoire 6
Recherche de solutions
Lorsque le domaine de chaque variable est réduit à une
seule valeur, on obtient une solution (ou instanciation)
La combinaison réduction de domaine/propagation de
contraintes ne fournit pas nécessairement des solutions
Il faut alors recourir à un algorithme de recherche de
solutions: le plus courant procède à la
construction de
l’arbre des solutions
comme dans l’algorithme de branch-
and-bound en programmation en nombres entiers (PNE)
Dans notre exemple, on choisirait la variable non
instanciée
x
4
et on générerait les deux alternatives
(sommets)
x
4
= 4 et
x
4
= 5
8. Optimisation combinatoire 7
Optimisation combinatoire et PPC
Soit un problème d’optimisation combinatoire
Si on a une représentation (un modèle) de l’ensemble
X
à l’aide d’un langage de PPC, on peut alors résoudre un
tel problème:
En appliquant un algorithme de construction de l’arbre des
solutions dans lequel on applique à
chaque sommet
la
combinaison réduction de domaine/propagation de contraintes
On ajoute une variable
Z
représentant la valeur de l’objectif et
une contrainte
Z
≥
L
: la borne inférieure peut être améliorée
chaque fois qu’une nouvelle solution est identifiée
Idéalement, on aimerait aussi ajouter une contrainte
Z
≤
U
)(max xf
Xx∈
8. Optimisation combinatoire 8
Problème d’affectation
n
tâches à affecter à
n
machines de telle sorte que
chaque machine soit affectée à une seule tâche et
chaque tâche soit affectée à une seule machine
Si on affecte la tâche
j
à la machine
i
, il en coûte
c
ij
L’objectif est de minimiser la somme des coûts
Il s’agit d’un problème d’optimisation combinatoire:
X
est
l’ensemble de toutes les affectations possibles des
n
tâches aux
n
machines (il y en a
n
!)