Académique Documents
Professionnel Documents
Culture Documents
Amal HALLOU
amalhallou@gmail.com
•Un problème :
→Vérifier qu’une solution résout le problème
Simulation, Vérification
→Trouver une solution du problème
Programmation par Contraintes
→Trouver la meilleure solution du problème
Programmation Linéaire
➔Objectif :
Trouver une solution réalisable
•qui respecte des contraintes faciles à vérifier
Formules mathématiques simples, tableaux de
valeurs possibles
•avec des ensembles de valeurs possibles pour les variables de
décision
Problèmes de satisfaction de contraintes
c) CSP continus
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI19
1. PROBLÈMES DE SATISFACTION DES CONTRAINTES (CSP)
Exemples d’application
D’abord, appliqué à des problèmes de jeu,
maintenant orienté sur des CSP de taille réelle :
- aménagement intérieur d’un avion à l’Aérospatiale
- planification du réseau France Telecom
...
Domaines d’application
•Agencement
• Diagnostique et Vérification
• Planification
• Ordonnancement et Emplois du temps
• Emballage et Placement
• Logistique
Domaines d’application
• Informatique : Analyse de programme, Robotique
• Biologie : Repliement de protéine, Séquençage de l’ADN
• Économie : Ordonnancement
• Linguistique : Analyse grammaticale
• Médecine : Aide au diagnostique
• Physique : Modélisation des systèmes
• Géographie : Systèmes de géo-information
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI19
PROBLÈMES DE SATISFACTION DES CONTRAINTES (CSP)
Secteurs d’application
•Industrie : transport de matières nucléaires (CEA) …
•Transport : rotation d’équipages (Corsair), gestion de port (port
de Singapour) …
•Télécommunications : composants visuels (Hewlett-Packard) …
•Biologie moléculaire : prédiction de structure protéique (Esprit) …
•Environnement : pollution des eaux (ville de Venise), recyclage
(Michelin) …
•Banques : aide à l’attribution de crédits (Crédit Lyonnais, Société
Générale) …
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI19
PROBLÈMES DE SATISFACTION DES CONTRAINTES (CSP)
Problème de satisfaction de contraintes (CSP)
(Introduit par Montanari en 1974)
= Triplet (V, C, D) où :
→V est un ensemble fini de variables 𝑉1 , 𝑉2 , …, 𝑉𝑛
→ C est un ensemble fini de contraintes 𝐶1 , 𝐶2 , …, 𝐶𝑚 où chaque
contrainte est définie sur un sous-ensemble de V;
→ D est un domaine non vide constitué de l’union des valeurs
possibles pour chaque variable : 𝐷𝑉1 , 𝐷𝑉2 , …, 𝐷𝑉𝑛 ;
1) Domaine
Soit 𝑉1 , 𝑉2 , …, 𝑉𝑛 les variables de décision d’un CSP
→ Chaque variable 𝑉𝑖 doit prendre ses valeurs dans le domaine 𝐷𝑉𝑖
- Discret {1,5,7} ou continu [1,9]
- Fini ou infini
2) Contraintes
Une contrainte restreint les valeurs que l’on peut affecter
simultanément à des variables (les variables concernées par cette
contrainte)
* Une contrainte restreint les valeurs que l’on peut affecter à une
variable (x<5); à deux variables simultanément (x<y); ou a
plusieurs variables simultanément (x+y<z+t)
2) Contraintes
2 types de déclaration:
- En extension : énumération des valeurs admises
(x = 1 et y = 2) ou (x = 2 et y = 4) ou (x = 3 et y = 0)
- En compréhension : formules mathématiques, …
x<y;
(ABC) forme un triangle isocèle ;
x, y, z distincts deux à deux
2) Contraintes
-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
2) Contraintes
- Contrainte unaire :
X<5
porte sur une seule variable
- Contrainte binaire :
X<Y
porte sur deux variables
- Contrainte n-aire :
porte sur n variables X+Y<Z+T
2) Contraintes
- Contrainte induite :
Contrainte satisfaite par toutes les solutions de P
➔peut être rajouté au CSP sans modifier l’ensemble des solutions
Assignation (Affectation)
Une assignation A de V dans D est une fonction qui associe à une
variable 𝑉𝑖 de V une valeur 𝑑𝑖 du sous-domaine 𝐷𝑉𝑖
➔𝑑𝑖 est assignée à 𝑉𝑖 par A
Exemple : A = {(X1,V1), (X3,V3), (X4,V4)}
Assignation (Affectation)
Une affectation peut-être :
- Partielle : affectation de certaines variables
ou
- Totale : affectation de toutes les variables
Assignation (Affectation)
Exemple :
V = {a, b, c, d}
D(a) = D(b) = D(c) = D(d) = {0, 1} Domaine discret fini
C = {a ≠ b ; c ≠ d ; a + c < b} 2 contraintes binaires , 1 contrainte 3-aires
A1 = {(a, 1), (b, 0), (c, 0), (d, 0)} totale, inconsistante
A4 = {(a, 0), (b, 1), (c, 0), (d, 1)} totale, consistante
➔ Solution du CSP
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI19
PROBLÈMES DE SATISFACTION DES CONTRAINTES (CSP)
Types de CSP :
• CSP Discret / Continu :
CSP discret : CSP dont tous les domaines sont finis ou infinis de
valeurs symboliques ou numériques dénombrables
CSP continu : CSP dont tous les domaines sont numériques
indénombrables, en général des intervalles sur R
• CSP Binaire ou non :
CSP binaire : CSP dont toutes les contraintes binaires
Types de CSP :
• CSP consistant
C’est un CSP qui admet une solution
• CSP globalement consistant
C’est un CSP dont toute instanciation consistante est globalement
consistante
Exemples d’application
1. Problème des quatre couleurs
Exemples d’application
2. Problème des N Reines
Exemples d’application
3. Le Carré magique
= 15 = 15 = 15
= 15
= 15
= 15
= 15 = 15
A. HALLOU PROGRAMMATION PAR CONTRAINTES GI19
2. MODÉLISATION DES PROBLÈMES DE SATISFACTION DES
CONTRAINTES (CSP)
Exemples :
1) Le problème des N Reines
Placer N reines dans un échiquier N*N sans qu’elles ne se
menacent
➔Une reine - par ligne,
- par colonne
- par diagonale
Exemples :
1) Le problème des N Reines
N=4
Exemples :
2) Le retour de la monnaie
On s’intéresse à un distributeur automatique de boissons.
L’utilisateur insère des pièces de monnaie pour un total de T
centimes de dirhams, puis il sélectionne une boisson, dont le prix
est de P centimes de dirhams (T et P étant des multiples de 10).
Il s’agit alors de calculer la monnaie à rendre, sachant que le
distributeur a en réserve A pièces de 2 dirhams, B pièces de
1dirham, C pièces de 50 centimes, D pièces de 20 centimes et E
pièces de 10 centimes
Exemples :
3) Send More Money
On considère l’addition suivante :
SEND
+ MORE
= MONEY
Chaque lettre représente un chiffre différent (entre 0 et 9).
On souhaite connaitre la valeur de chaque lettre, sachant que la
première lettre de chaque mot représente un chiffre non nul