Академический Документы
Профессиональный Документы
Культура Документы
Laurent Beaudou
Programmation par contrainte Modélisation Résolution
On se trouve où ?
Un problème, une solution : la solution est-elle une solution
du problème ?
simulation, vérification
2
Programmation par contrainte Modélisation Résolution
On se trouve où ?
Un problème, une solution : la solution est-elle une solution
du problème ?
simulation, vérification
2
Programmation par contrainte Modélisation Résolution
On se trouve où ?
Un problème, une solution : la solution est-elle une solution
du problème ?
simulation, vérification
2
Programmation par contrainte Modélisation Résolution
On se trouve où ?
Un problème, une solution : la solution est-elle une solution
du problème ?
simulation, vérification
2
Programmation par contrainte Modélisation Résolution
Un premier exemple
x , y ∈ {0, 1 . . . 7}
7
6
Contraintes
5
4
x £y =6
3
x +y =5
2
x >y 1
0
0 1 2 3 4 5 6 7
3
Programmation par contrainte Modélisation Résolution
Un premier exemple
x , y ∈ {0, 1 . . . 7}
7
6
Contraintes
5
4
x £y =6
3
x +y =5
2
x >y 1
0
0 1 2 3 4 5 6 7
3
Programmation par contrainte Modélisation Résolution
Un premier exemple
x , y ∈ {0, 1 . . . 7}
7
6
Contraintes
5
4
x £y =6
3
x +y =5
2
x >y 1
0
0 1 2 3 4 5 6 7
3
Programmation par contrainte Modélisation Résolution
Un premier exemple
x , y ∈ {0, 1 . . . 7}
7
6
Contraintes
5
4
x £y =6
3
x +y =5
2
x >y 1
0
0 1 2 3 4 5 6 7
3
Programmation par contrainte Modélisation Résolution
Un premier exemple
x , y ∈ {0, 1 . . . 7}
7
6
Contraintes
5
4
x £y =6
3
x +y =5
2
x >y 1
0
0 1 2 3 4 5 6 7
3
Programmation par contrainte Modélisation Résolution
Un premier exemple
x , y ∈ {0, 1 . . . 7}
7
6
Contraintes
5
4
x £y =6
3
x +y =5
2
x >y 1
0
0 1 2 3 4 5 6 7
3
Programmation par contrainte Modélisation Résolution
2 Modélisation
3 Résolution
4
Programmation par contrainte Modélisation Résolution
2 Modélisation
3 Résolution
5
Programmation par contrainte Modélisation Résolution
Objectif
6
Programmation par contrainte Modélisation Résolution
Domaines
Définition
Domaine
La variable Xi doit prendre ses valeurs dans le domaine Di
discret
fini ou infini
7
Programmation par contrainte Modélisation Résolution
Domaines
Exercice
{1, 2, 3, 4}
L’ensemble des entiers naturels.
L’ensemble des réels
Les entiers naturels impairs
L’intervalle [¡1, 1]
Les points à coordonnées entières du plan
8
Programmation par contrainte Modélisation Résolution
Domaines
Exercice
{1, 2, 3, 4} ✔
L’ensemble des entiers naturels. ✔
L’ensemble des réels ✘
Les entiers naturels impairs ✔
L’intervalle [¡1, 1] ✘
Les points à coordonnées entières du plan ✔
8
Programmation par contrainte Modélisation Résolution
Contraintes
C’est quoi ? )
Variables
Contraintes
Domaines
Une contrainte restreint les valeurs que l’on peut affecter
simultanément à des variables
9
Programmation par contrainte Modélisation Résolution
Contraintes
C’est quoi ? )
Variables
Contraintes
Domaines
Une contrainte restreint les valeurs que l’on peut affecter
simultanément à des variables
Exemples :
2x + 3y = 12 x 6= 3y
3x 2 =3 (ABC ) forme un triangle isocèle
A∪B ½C x , y , z distincts deux à deux
9
Programmation par contrainte Modélisation Résolution
Contraintes
2 types de déclaration :
10
Programmation par contrainte Modélisation Résolution
Contraintes
Exemples supplémentaires
Contraintes logiques
Si x = 4 alors y = 5
x = y ou x = 2y
Contraintes globales
Toutes les variables sont différentes
Méta-contraintes
La valeur 5 est utilisée exactement 3 fois
11
Programmation par contrainte Modélisation Résolution
(X , D, C ) tel que
X = {X1 , X2 , . . . , Xn }
l’ensemble des variables
D = {D1 , D2 , . . . , Dn } où Di est le domaine de Xi
C = {C , C , . . . , C } l’ensemble des contraintes
1 2 m
Exemple
X = {a, b, c, d}
D(a) = D(b) = D(c) = D(d) = {0, 1}
C = {a 6= b, c 6= d, a + c < b}
12
Programmation par contrainte Modélisation Résolution
13
Programmation par contrainte Modélisation Résolution
Problème
X = {a, b, c, d}
D(a) = D(b) = D(c) = D(d) = {0, 1}
C = {a 6= b, c 6= d, a + c < b}
14
Programmation par contrainte Modélisation Résolution
Problème
X = {a, b, c, d}
D(a) = D(b) = D(c) = D(d) = {0, 1}
C = {a 6= b, c 6= d, a + c < b}
A1 = {(a, 1), (b, 0), (c, 0), (d, 0)} totale, inconsistante
A2 = {(a, 0), (b, 0)} partielle, inconsistante
A3 = {(a, 1), (b, 0)} partielle, consistante
A4 = {(a, 0), (b, 1), (c, 0), (d, 1)} totale, consistante
14
Programmation par contrainte Modélisation Résolution
15
Programmation par contrainte Modélisation Résolution
15
Programmation par contrainte Modélisation Résolution
2 Modélisation
3 Résolution
16
Programmation par contrainte Modélisation Résolution
Un constat
17
Programmation par contrainte Modélisation Résolution
1 2 3 4
18
Programmation par contrainte Modélisation Résolution
18
Programmation par contrainte Modélisation Résolution
Modélisation
1 2 3 4
variables L1 , L2 , L3 , L4 et
C1 , C2 , C3 , C4 1
domaines Li ∈ {1, 2, 3, 4} et
2
Ci ∈ {1, 2, 3, 4}
contraintes lignes, colonnes
3
et diagonales différentes.
4
18
Programmation par contrainte Modélisation Résolution
Modélisation
Modélisation
variables L1 , L2 , L3 , L4 et 1 2 3 4
C1 , C2 , C3 , C4
1
domaines Li ∈ {1, 2, 3, 4} et
Ci ∈ {1, 2, 3, 4} 2
contraintes 3
∀i 6= j, Li 6= Lj
Ci 6= Cj 4
∀i 6= j, Li + Ci 6= Lj + Cj
Li ¡ Ci 6= Lj ¡ Cj
19
Programmation par contrainte Modélisation Résolution
Modélisation
Attention
Il n’y a pas qu’une modélisation possible !
Modélisation
variables L1 , L2 , L3 , L4 et 1 2 3 4
C1 , C2 , C3 , C4
1
domaines Li ∈ {1, 2, 3, 4} et
Ci ∈ {1, 2, 3, 4} 2
contraintes 3
∀i 6= j, Li 6= Lj
Ci 6= Cj 4
∀i 6= j, Li + Ci 6= Lj + Cj
Li ¡ Ci 6= Lj ¡ Cj
19
Programmation par contrainte Modélisation Résolution
Modélisation
Attention
Il n’y a pas qu’une modélisation possible !
Modélisation
variables L1 , L2 , L3 , L4 1 2 3 4
domaines Li ∈ {1, 2, 3, 4}
1
contraintes
∀i =
6 j, Li 6= Lj 2
∀i =6 j, Li + i 6= Lj + j
3
Li ¡ i 6= Lj ¡ j
4
19
Programmation par contrainte Modélisation Résolution
20
Programmation par contrainte Modélisation Résolution
<handout :0>
21
Programmation par contrainte Modélisation Résolution
<handout :0>
Variables : X2 , X1 , X50 , X20 , X10 , nombres de pièces à rendre
21
Programmation par contrainte Modélisation Résolution
<handout :0>
Variables : X2 , X1 , X50 , X20 , X10 , nombres de pièces à rendre
Domaines :
DX2 = {0, 1, . . . , E2 }
21
Programmation par contrainte Modélisation Résolution
<handout :0>
Variables : X2 , X1 , X50 , X20 , X10 , nombres de pièces à rendre
Domaines :
DX2 = {0, 1, . . . , E2 }
DX1 = {0, 1, . . . , E1 }
DX50 = {0, 1, . . . , C50 }
DX20 = {0, 1, . . . , C20 }
DX10 = {0, 1, . . . , C10 }
21
Programmation par contrainte Modélisation Résolution
<handout :0>
Variables : X2 , X1 , X50 , X20 , X10 , nombres de pièces à rendre
Domaines :
DX2 = {0, 1, . . . , E2 }
DX1 = {0, 1, . . . , E1 }
DX50 = {0, 1, . . . , C50 }
DX20 = {0, 1, . . . , C20 }
DX10 = {0, 1, . . . , C10 }
Contrainte :
200X2 + 100X1 + 50X50 + 20X20 + 10X10 = T ¡ P
21
Programmation par contrainte Modélisation Résolution
22
Programmation par contrainte Modélisation Résolution
23
Programmation par contrainte Modélisation Résolution
Variables : S, E , N, D, M, O, R, Y
23
Programmation par contrainte Modélisation Résolution
Variables : S, E , N, D, M, O, R, Y
Domaines :
DS = DM = {1, 2, 3, 4, 5, 6, 7, 8, 9}
DE = DN = DD = DO = DR = DY = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
23
Programmation par contrainte Modélisation Résolution
Variables : S, E , N, D, M, O, R, Y
Domaines :
DS = DM = {1, 2, 3, 4, 5, 6, 7, 8, 9}
DE = DN = DD = DO = DR = DY = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
Contraintes :
1000(S + M) + 100(E + O) + 10(N + R) + (D + E ) =
10000M + 1000O + 100N + 10E + Y
tousDifferents(S, E , N, D, M, O, R, Y )
23
Programmation par contrainte Modélisation Résolution
2 Modélisation
3 Résolution
24
Programmation par contrainte Modélisation Résolution
Résolution naïve
Enumération
On génère toutes les affectations totales possibles
25
Programmation par contrainte Modélisation Résolution
Résolution naïve
Enumération
On génère toutes les affectations totales possibles
25
Programmation par contrainte Modélisation Résolution
Résolution naïve
n nb d’affectations temps
10 103
20 106
30 109
40 1012
50 1015
60 1018
70 1021
26
Programmation par contrainte Modélisation Résolution
Résolution naïve
n nb d’affectations temps
10 103 10 6 secondes ✔
20 106 10 3 secondes ✔
30 109 1 seconde ✔
40 1012 16 minutes
50 1015 11 jours ✘
60 1018 32 ans ✘✘
70 1021 317 siècles ✘✘
26
Programmation par contrainte Modélisation Résolution
Les remèdes
S’arrêter quand une affectation partielle est inconsistante
backtrack
Restreindre les domaines des variables durant l’exécution
propagation de contraintes
Utiliser des heuristiques
Utiliser nos connaissances sur le problème étudié
...
27
Programmation par contrainte Modélisation Résolution
Backtrack
Principe :
On parcourt l’arbre des affectations en profondeur
Lorsqu’une affectation partielle est inconsistante, on n’explore
pas le sous-arbre correspondant
28
Programmation par contrainte Modélisation Résolution
Exemple d’exécution
29
Programmation par contrainte Modélisation Résolution
Backtrack
30
Programmation par contrainte Modélisation Résolution
Principe :
On restreint le domaine d’une variable
avec les contraintes, on restreint les autres domaines
Exemple
0 < x · 10 et 3 · y · 9
contrainte : x > y
Alors on peut restreindre le domaine de x à 4 · x · 10
31
Programmation par contrainte Modélisation Résolution
Exemple d’exécution
32
Programmation par contrainte Modélisation Résolution
Choix
On propage :
Quand un domaine est réduit
Quand une des bornes du domaine est changée
Quand un domaine est un singleton
On propage :
Une fois : nœud-consistance
Deux fois : arc-consistance
Ou plus...
33
Programmation par contrainte Modélisation Résolution
Nœud-consistance
Formellement, un CSP (X , D, C ) est consistant de nœud si pour
toute variable Xi de X , et pour toute valeur v de D(Xi ),
l’affectation partielle (Xi , v ) satisfait toutes les contraintes unaires
de C .
34
Programmation par contrainte Modélisation Résolution
Nœud-consistance
Formellement, un CSP (X , D, C ) est consistant de nœud si pour
toute variable Xi de X , et pour toute valeur v de D(Xi ),
l’affectation partielle (Xi , v ) satisfait toutes les contraintes unaires
de C .
34
Programmation par contrainte Modélisation Résolution
Nœud-consistance
35
Programmation par contrainte Modélisation Résolution
Arc-consistance
Formellement, un CSP (X , D, C ) est consistant d’arc si pour tout
couple de variables (Xi , Xj ) de X , et pour toute valeur vi
appartenant à D(Xi ), il existe une valeur vj appartenant à D(Xj )
telle que l’affectation partielle {(Xi , vi ), (Xj , vj )} satisfasse toutes
les contraintes binaires de C .
36
Programmation par contrainte Modélisation Résolution
Arc-consistance
Formellement, un CSP (X , D, C ) est consistant d’arc si pour tout
couple de variables (Xi , Xj ) de X , et pour toute valeur vi
appartenant à D(Xi ), il existe une valeur vj appartenant à D(Xj )
telle que l’affectation partielle {(Xi , vi ), (Xj , vj )} satisfasse toutes
les contraintes binaires de C .
36
Programmation par contrainte Modélisation Résolution
37
Programmation par contrainte Modélisation Résolution
Propagation de contraintes
Nœud-consistance : Arc-consistance :
38
Programmation par contrainte Modélisation Résolution
Résolution : bilan
Remarques :
39
Exemple : Affectation de stock
40
Correction : Affectation de stock
41
Correction : Affectation de stock
41
Correction : Affectation de stock
42
Correction : Affectation de stock
42
Correction : Affectation de stock
42
Correction : Affectation de stock
42