Thèse soutenue

Un langage de modélisation à base de règles pour la programmation par contraintes

FR  |  
EN
Auteur / Autrice : Julien Pierre Martin
Direction : François Fages
Type : Thèse de doctorat
Discipline(s) : Informatique
Date : Soutenance en 2010
Etablissement(s) : Paris 6

Mots clés

FR

Mots clés contrôlés

Résumé

FR

La programmation par contraintes (PPC) est un style de programmation déclaratif qui connaît un grand succès pour la spécification et la résolution de problèmes combinatoires, y compris en milieu industriel. La PPC est fondée sur deux composantes : une composante contraintes et une composante recherche [VanHentenryck, 1999]. Les langages de modélisation se concentrent sur l'expression des contraintes du problème. Ils fournissent des constructions de haut niveau et une notation algébrique proche de la notation mathématique. Néanmoins, les constructions proposées et les concepts nécessaires peuvent être parfois nombreux et difficiles d'accès au non-programmeur. De plus, l'expression de la recherche et des heuristiques demeure une tâche de programmation spécifique difficile à appréhender pour le modélisateur, ce qui limite l'application de ces principes de programmation. Cette thèse présente un langage de modélisation général à base de règles, nommé Cream (pour Constraints with Rules to Ease Modelling), qui a été conçu pour rendre accessible aux non-programmeurs la formulation de problèmes combinatoires et l'intégration de connaissances spécifiques à un domaine d'activité dans des bibliothèques de règles. En pratique, les problèmes réels se réduisent rarement à des problèmes purs, et pour un ingénieur il est souvent plus facile de comprendre ou de décrire une structure complexe en petits fragments plutôt qu'en un tout monolithique. C'est pourquoi le langage est fondé sur la définition de règles et leur organisation en bibliothèques, ce qui permet précisément d'exprimer et de composer facilement des fragments de connaissance dans un domaine métier. Dans le même souci d'accessibilité, le langage adopte des structures de données simples basées sur les enregistrements et les listes données avec des itérateurs, intègre contraintes réifiées et globales, et n'autorise pas les définitions récursives. Nous montrons de plus que dans ce formalisme de règles, la composante recherche peut être spécifiée de façon déclarative. Plus précisément, les arbres de recherche y sont définis par des formules logiques et des critères heuristiques complexes d'ordonnancement des sous-formules peuvent y être définis de façon originale par filtrage sur les parties gauches des règles. La compilation des modèles Cream produit des programmes de contraintes sur domaines finis avec contraintes réifiées et contraintes globales. Le schéma de compilation fondamental, dit statique, est formalisé par un système de réécriture de termes qui procède par expansion des règles du modèle. Nous décrivons une sémantique déclarative pour les modèles Cream vis-à-vis de laquelle nous prouvons la correction de la transformation, et nous montrons la confluence, la terminaison et la complexité possiblement exponentielle de cette transformation. Certains problèmes sont de trop grande taille pour être complètement développés ou dépendent d'une valeur inconnue au moment de la compilation. À l'égard de tels problèmes dont les modèles ne peuvent être compilés selon le schéma statique, nous étudions un deuxième schéma par génération de code procédural qui conserve la structure de règles du modèle et produit du code légèrement moins efficace mais montré linéaire en la taille du modèle originel. Nous évaluons ensuite l'expressivité du langage et l'efficacité des programmes générés sur des problèmes de placement non seulement académiques mais aussi industriels. Les modèles évalués reposent sur une bibliothèque de modélisation des connaissances en placement appliquée à des problèmes purs et des problèmes de colisage dans l'industrie automobile.