IV - Heuristic algorithm Constraint programming

Preview:

DESCRIPTION

IV - Heuristic algorithm Constraint programming. 1 - Mise en situation. Aujourd'hui, sur un marché où la concurrence est toujours plus compétitive, la recherche de gains en productivité est devenue un point prioritaire. - PowerPoint PPT Presentation

Citation preview

1

IV - Heuristic algorithmIV - Heuristic algorithmConstraint programmingConstraint programming

2V 3.19

1 - Mise en situation1 - Mise en situation

Aujourd'hui, sur un marché où la concurrence est toujours plus compétitive, la recherche de gains en productivité est devenue un point prioritaire.

Avant d'entrer dans la théorie de la programmation par contraintes, voyons comment il est possible de résoudre l'un de ces problèmes (dits NPComplets) : la gestion d'emploi du temps.

3V 3.19

1.1 - Séminaire de nutrition1.1 - Séminaire de nutrition

Soit à réaliser l’organisation d'un séminaire de formation à la nutrition ayant les contraintes suivantes :

• Le séminaire ne doit pas durer plus de quatre jours.

• Deux salles sont disponibles,

• La salle 1 possède un rétro-projecteur et peut accueillir jusqu'à 200 personnes,

• La salle 2 possède un projecteur de diapositives et peut accueillir 500 personnes.

4V 3.19

1.1 - Séminaire de nutrition (2)1.1 - Séminaire de nutrition (2)

Les formations sont

Nombre Matériel Personnes Précédence

Physiologie de la nutrition

1 150

Biochimie métabolique

1 Rétro 150Après structurale

Biochimie alimentaire

1 Rétro 200Après structurale

Biochimie structurale

2 300

Connaissance des aliments

2 Diapo. 400

Procédés de fabrication

1 Diapo. 100

5V 3.19

1.1.1 - Solution un (générer et tester)1.1.1 - Solution un (générer et tester)

On doit trouver les valeurs de huit variables (4 jours x 2 salles); on tente une configuration, on teste si elle est viable, sinon on revient sur la valeur d'une des variables.

Figure 4.1 - Arbre

Salle 1, jour 1

Salle 2, jour 1

Salle 1, jour 2

6V 3.19

1.1.1 - Solution un (générer et tester) 21.1.1 - Solution un (générer et tester) 2

A chaque ligne, correspondent les différentes valeurs de la variable (donc les différents cours possibles pour une salle pour une journée).A une solution, correspond un parcours de l'arbre, de la racine jusqu'à une feuille.

Si la solution n'est pas viable (contraintes non respectées) on revient en arrière sur la dernière affectation (la dernière valeur de la dernière variable) et ainsi de suite tant qu'aucune solution viable n'est trouvée.

7V 3.19

1.1.2 - Solution deux1.1.2 - Solution deux

On part de l'ensemble des données, sans aucune contrainte ; on propage une à une toutes les contraintes ; s'il reste une solution on la prend, s'il en reste beaucoup, on en choisit une (cf. solution un).

Sans aucune contrainte, le problème peut être représenté par le tableau ci-dessous.

8V 3.19

1.1.2 - Solution deux (2)1.1.2 - Solution deux (2)

Figure 4.2 - Emploi du temps non contraint

Physio nutBioch méta

Bioch struct 1Bioch struct 2

Bioch alimConn alim 1Conn alim 2Proc Fabric

Physio nutBioch méta

Bioch struct 1Bioch struct 2

Bioch alimConn alim 1Conn alim 2Proc Fabric

Physio nutBioch méta

Bioch struct 1Bioch struct 2

Bioch alimConn alim 1Conn alim 2Proc Fabric

Physio nutBioch méta

Bioch struct 1Bioch struct 2

Bioch alimConn alim 1Conn alim 2Proc Fabric

Physio nutBioch méta

Bioch struct 1Bioch struct 2

Bioch alimConn alim 1Conn alim 2Proc Fabric

Physio nutBioch méta

Bioch struct 1Bioch struct 2

Bioch alimConn alim 1Conn alim 2Proc Fabric

Physio nutBioch méta

Bioch struct 1Bioch struct 2

Bioch alimConn alim 1Conn alim 2Proc Fabric

Physio nutBioch méta

Bioch struct 1Bioch struct 2

Bioch alimConn alim 1Conn alim 2Proc Fabric

Jour 1

Salle 1

Salle 2

Jour 2 Jour 3 Jour 4

9V 3.19

1.1.2 - Solution deux (3)1.1.2 - Solution deux (3)

Puis l’on pose une à une chaque contrainte…

• La contenance de la salle doit être supérieure ou égale au nombre de personnes attendues.

• Une formation nécessitant un matériel doit se dérouler dans la salle possédant ce matériel.

• Les séances allant par deux se suivent.

• Les précédences sur les formations doivent être respectées.

…ce qui donne…

10V 3.19

1.1.2 - Solution deux (4)1.1.2 - Solution deux (4)

Figure 4.3 - Emploi du temps contraint

Physio nutBioch méta

Bioch struct 1Bioch struct 2

Bioch alimConn alim 1Conn alim 2Proc Fabric

Physio nutBioch méta

Bioch struct 1Bioch struct 2

Bioch alimConn alim 1Conn alim 2Proc Fabric

Physio nutBioch méta

Bioch struct 1Bioch struct 2

Bioch alimConn alim 1Conn alim 2Proc Fabric

Physio nutBioch méta

Bioch struct 1Bioch struct 2

Bioch alimConn alim 1Conn alim 2Proc Fabric

Physio nutBioch méta

Bioch struct 1Bioch struct 2

Bioch alimConn alim 1Conn alim 2Proc Fabric

Physio nutBioch méta

Bioch struct 1Bioch struct 2

Bioch alimConn alim 1Conn alim 2Proc Fabric

Jour 1

Salle 1

Salle 2

Jour 2 Jour 3 Jour 4

Physio nutBioch méta

Bioch struct 1Bioch struct 2

Bioch alimConn alim 1Conn alim 2Proc Fabric

Physio nutBioch méta

Bioch struct 1Bioch struct 2

Bioch alimConn alim 1Conn alim 2Proc Fabric

11V 3.19

1.1.2 - Solution deux (5)1.1.2 - Solution deux (5)

…il reste quatre solutions dont une est :

Figure 4.4 - Emploi du temps final

Jour 1

Salle 1

Salle 2

Jour 2 Jour 3 Jour 4

Physiologie de la

nutrition

Procédés de fabrication

Biochimie métabolique

Biochimie alimentaire

Biochimie structurale

1

Biochimie structurale

2

Connaissance

des aliments

1

Connaissance

des aliments

2

12V 3.19

1.2 - Idée1.2 - Idée

En fait, la programmation par contraintes va combiner ces deux manières de procéder afin de réduire le nombre de tentatives et donc d'optimiser le temps de recherche de la solution.

La propagation des contraintes sera intégrée à chaque cycle de choix de l'algorithme. Cela réduira d'autant le nombre de choix pour le cycle suivant.

13V 3.19

2 - Principe théorique2 - Principe théorique2.1 - Type de problèmes2.1 - Type de problèmes2.1.1 - Problèmes de classe "P"2.1.1 - Problèmes de classe "P"

Exemple• Chercher un enregistrement dans un fichier.• Complexité O(n1), le temps de recherche est proportionnel au nombre

d'enregistrements présents. Autre exemple

• Trier les éléments d'un tableau en les comparant deux à deux et en les permutant si nécessaire.

• Au maximum : n permutations pour n nombres, donc complexité en O(n2), c'est à dire proportionnelle au carré du nombre d'éléments à trier.

14V 3.19

2.1.2 - Problèmes NP Complets2.1.2 - Problèmes NP Complets

Les problèmes dits "Non déterministe Polynomiaux Complets" sont des problèmes de grande taille, pour lesquels les recherches de solutions par algorithme conduisent à des calculs exponentiels.

Exemple : Trouver le plus court chemin partant de la ville A (et y revenant) passant par toutes les villes du graphe en minimisant la distance parcourue.

Figure 4.5 - Le “voyageur de commerce”

A

15V 3.19

2.1.2 - Problèmes NP Complets (2)2.1.2 - Problèmes NP Complets (2)

3 villes : 2 solutions 4 villes : 6 solutions 5 villes : 24 solutions 6 villes : 120 solutions

... 10villes :362 880 solutions

... 15villes :8,71010 solutions

16V 3.19

2.1.2 - Problèmes NP Complets (3)2.1.2 - Problèmes NP Complets (3)

Figure 4.6 - Évolution des coûtsTaille du problème

Espace de recherche

Coût d'une solution

17V 3.19

2.1.3 - Exemples de problèmes2.1.3 - Exemples de problèmesNPComplets NPComplets

Allocation de ressource (humaine, matérielle...) Optimisation de tournée Emploi du temps, Planning Ordonnancement de tâches Optimisation de mélanges Rotation d'équipe Découpe de pièces

...

18V 3.19

3 - Approches3 - Approches

Pour résoudre ces problèmes, trois approches différentes :

• Algorithme de recherche opérationnelle ou programmation linéaire

• Système expert

• Programmation par contraintes

19V 3.19

3.1 - Approche algorithmique3.1 - Approche algorithmique

Par l'utilisation d'un algorithme de Recherche Opérationnelle fournissant une solution en un temps raisonnable. Il est possible d'utiliser par exemple la méthode du Simplex, ou un recuit simulé, ou même un simple algorithme Branch & bound.

Contraintes

• Nécessité d'un modèle mathématique

• Peu de paramétrages possibles

• Difficulté d'évolution (problème de l'algorithme)

20V 3.19

3.2 - Approche par système expert3.2 - Approche par système expert

Par utilisation d'un générateur de système expert du marché et d'une expertise privée permettant de résoudre le problème.

Contraintes

• Nécessité d'une expertisePas de solution algorithmique triviale

• Stratégies possibles (paramétrage dynamique)

• Possibilités d'évolution (de par la déclarativité des règles)

21V 3.19

3.3 - Approche "Contraintes"3.3 - Approche "Contraintes"

Par l'utilisation d'un langage de programmation par contraintes. Contraintes

• Pratiquement aucune (si ce n'est l'absence de motivation pour l'une des approches précédentes).

22V 3.19

3.4 - Évolution3.4 - Évolution

Évolution du nombre de problèmes traités par ces diverses approches au fil du temps

Figure 4.7 - Nombre de problèmes traités

1980R.O.

S.E.

P. Cont.

1990

23V 3.19

3.5 - Résumé3.5 - Résumé

"En quoi consiste la programmation par contraintes ?"

Souvent, quel que soit le problème, il est facile de trouver une solution, le plus difficile consistant à minimiser un critère de coût (ex : affectation de locomotives à des trains, emploi du temps, découpe de tissus...)

En fait ces méthodes sont utilisées afin d'accroître la productivité en réduisant soit le temps, soit les coûts.

24V 3.19

3.6 - Idée démarquant la programmation3.6 - Idée démarquant la programmationpar contraintes des autres approchespar contraintes des autres approches

Utiliser au sein d'un même outil• Un algorithme de Recherche Opérationnelle• Des contraintes posées de manière déclarative (donc sans énoncer

la façon de procéder)

Figure 4.8 - Comment converger rapidement vers une solution ?

espacethéorique

espacede

rechercheespacede

solutions

25V 3.19

3.7 - Fonctionnement (avec algorithme de 3.7 - Fonctionnement (avec algorithme de recherche trivial)recherche trivial)

l • Donner les objets du problèmel • Énoncer les contraintes sur ces objetsl • Propager les contraintes (restriction des ensembles de

valeurs)l • Toutes les données ont-elles une seule valeur possible ?

Oui -> Solution trouvée

Non -> Choisir D une donnée, puis V une valeur possible pour D

Impossible de trouver V (ensemble de valeurs vide) ?Oui -> Pas de solution (dans cette branche, faire

un retour arrière)

Non -> Choisir V comme valeur pour Dl • Boucler

26V 3.19

4 - Un exemple : Les huit reines4 - Un exemple : Les huit reines4.1 - Énoncé4.1 - Énoncé

Un exemple simple (et historique) reprenant les principes des problèmes d’allocation.

Placer huit reines sur un échiquier sans qu'aucune ne soit en prise. Énoncé déclaratif

• On dispose de huit reines (A à H), une par ligne, auxquelles il faut affecter un numéro de colonne.

• Toutes les reines sont sur des colonnes différentes.

• Toutes les reines sont sur des diagonales différentes.

27V 3.19

4.1 - Énoncé (2)4.1 - Énoncé (2)

Figure 4.9 - The empty board

A

B

C

D

1 2 3 4

28V 3.19

4.2 - Résolution4.2 - Résolution

Voyons comment, même avec l'algorithme simple que nous venons d'écrire, la recherche converge rapidement.

Démonstration sur un damier 4x4.

29V 3.19

4.2 - Résolution (2)4.2 - Résolution (2)

Figure 4.10 - Queens are placed

A

B

C

D

1 2 3 4

1

3 4

2 3 4

echec

2echec

4

1

3succès

30V 3.19

4.3 - Mise en évidence de certains points4.3 - Mise en évidence de certains points

Une seule solution est trouvée, or il en existe plusieurs (miroir + rotations) -> problème du déterminisme

Quelle donnée choisir (la première, la plus contrainte, la moins contrainte...) ? Une fois la donnée choisie, quelle valeur choisir pour cette donnée (celle qui

propage le plus, le moins, qui vide un ensemble...) ?

31V 3.19

4.4 - Optimisation4.4 - Optimisation

Une fois toutes les contraintes posées, l'espace de recherche est réduit, il est possible :

• soit de laisser l'algorithme "classique" prendre une à une les variables pour leur trouver une valeur ;

• soit d'utiliser un algorithme de recherche opérationnelle qui sera forcément plus efficace, puisque

• l'espace est réduit ;• il sera à nouveau réduit à chaque pas.

32V 3.19

5 - Applications opérationnelles5 - Applications opérationnelles5.1 - Les produits du marché5.1 - Les produits du marché

Liste des produits disponibles sur station de travail sous Unix ou sur PC sous Windows NT.

• Solver Ilog Objet (Lisp ou C++)

• Chip V5 Cosytec Prolog, C, C++

• Prolog IV PrologIA Prolog

33V 3.19

5.2 - Applications5.2 - Applications

5.2.1 - CARAIBE(SNCF)A partir d'un ensemble de trains (heure de départ et d'arrivée, gare de départ et d'arrivée) avec des contraintes (vitesse maximale, autonomie des locomotives diésel de 3000 km, passage obligatoire dans certaines gares pour la maintenance tous les 7 jours...), minimiser le nombre de locomotives et le nombre de kilomètres à vide.Temps : 20s pour 300 trains

5.2.2 - PMFT(Armée de Terre)Planification de la formation du personnel de l'armée de terre sur 20 ans.12000variables, 20000 contraintes (solution trouvée en 2 minutes)

5.2.3 - Journal espagnol (Madrid)Problème de disposition de petites annonces sur une page de journal.

34V 3.19

5.2 - Applications (2)5.2 - Applications (2)

5.2.4 - Comité de sécurité des Jeux OlympiquesGestion de la sécurité sur l'ensemble des sites des JOd'hiver 92 à Albertville. Expertise des ressources nécessaires, puis optimisation de l'affectation de ces ressources face à une situation de crise.

5.2.5 - Elf SanofiRéalisation de mélanges devant respecter certaines propriétés relatives aux durées de préparation, quantités etc...

5.2.6 - Aéroport de MarseilleAllocation des parkings aux avions

5.2.7 - Air FranceGestion des emplois du temps du personnel navigant.

35V 3.19

5.2 - Applications (3)5.2 - Applications (3)

5.2.8 - VachetteGénération des configurations de clés permettant de satisfaire les différents usagers d'un immeuble (gardien, résident, entretien...)

5.2.9 - Rhône PoulencAide à la formulation de la vitamine A pour les produits de nutrition animale (optimisation de mélanges)

5.2.10 - Découpage de plaques de tôleDécouper une bande tôle afin d'obtenir des plaques rectangulaires de dimensions fixes. Minimiser la surface de chutes.

5.2.11 - Construction d'un pontAfin de construire un pont, il est nécessaire d'envisager trois phases: fondations, piliers et tabliers.Des contraintes existent entre ces phases (chaque tablier après deux piliers, ressources non partageables, minimisation de la durée...)

36V 3.19

5.2 - Applications (4)5.2 - Applications (4)

5.2.12 - …et

• disposition d'entrepôts,

• emploi du temps d'un établissement scolaire

• affectation de conteneurs à des wagons

• allocations de fréquences hertziennes...

37V 3.19

6 - Conclusion6 - Conclusion

Certains problèmes à forte combinatoire peuvent être résolus à l'aide de la programmation par contraintes. (ne pas vouloir tout résoudre à l'aide des contraintes, mais savoir les utiliser lorsque l'on se heurte à un problème typiquement combinatoire)

Difficultés à trouver des compétences afin de développer une application, à cause du jeune âge de ce type de programmation (quelques années).