37
1 IV - Heuristic algorithm IV - Heuristic algorithm Constraint programming Constraint programming

IV - Heuristic algorithm Constraint programming

  • Upload
    hollie

  • View
    40

  • Download
    0

Embed Size (px)

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

Page 1: IV - Heuristic algorithm Constraint programming

1

IV - Heuristic algorithmIV - Heuristic algorithmConstraint programmingConstraint programming

Page 2: IV - Heuristic algorithm Constraint 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.

Page 3: IV - Heuristic algorithm Constraint programming

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.

Page 4: IV - Heuristic algorithm Constraint programming

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

Page 5: IV - Heuristic algorithm Constraint programming

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

Page 6: IV - Heuristic algorithm Constraint programming

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.

Page 7: IV - Heuristic algorithm Constraint programming

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.

Page 8: IV - Heuristic algorithm Constraint programming

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

Page 9: IV - Heuristic algorithm Constraint programming

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…

Page 10: IV - Heuristic algorithm Constraint programming

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

Page 11: IV - Heuristic algorithm Constraint programming

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

Page 12: IV - Heuristic algorithm Constraint programming

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.

Page 13: IV - Heuristic algorithm Constraint programming

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.

Page 14: IV - Heuristic algorithm Constraint programming

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

Page 15: IV - Heuristic algorithm Constraint programming

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

Page 16: IV - Heuristic algorithm Constraint programming

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

Page 17: IV - Heuristic algorithm Constraint programming

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

...

Page 18: IV - Heuristic algorithm Constraint programming

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

Page 19: IV - Heuristic algorithm Constraint programming

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)

Page 20: IV - Heuristic algorithm Constraint programming

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)

Page 21: IV - Heuristic algorithm Constraint programming

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).

Page 22: IV - Heuristic algorithm Constraint programming

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

Page 23: IV - Heuristic algorithm Constraint programming

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.

Page 24: IV - Heuristic algorithm Constraint programming

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

Page 25: IV - Heuristic algorithm Constraint programming

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

Page 26: IV - Heuristic algorithm Constraint programming

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.

Page 27: IV - Heuristic algorithm Constraint programming

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

Page 28: IV - Heuristic algorithm Constraint programming

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.

Page 29: IV - Heuristic algorithm Constraint programming

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

Page 30: IV - Heuristic algorithm Constraint programming

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...) ?

Page 31: IV - Heuristic algorithm Constraint programming

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.

Page 32: IV - Heuristic algorithm Constraint programming

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

Page 33: IV - Heuristic algorithm Constraint programming

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.

Page 34: IV - Heuristic algorithm Constraint programming

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.

Page 35: IV - Heuristic algorithm Constraint programming

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...)

Page 36: IV - Heuristic algorithm Constraint programming

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...

Page 37: IV - Heuristic algorithm Constraint programming

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).