Un Langage de Modélisation à base de Règles pour la Programmation Par Contraintes - TEL - Thèses en ligne Accéder directement au contenu
Thèse Année : 2010

A Rule-Based Modelling Language for Constraint Programming

Un Langage de Modélisation à base de Règles pour la Programmation Par Contraintes

Résumé

Constraint programming (CP) is a declarative programming paradigm which aims at specifying and solving combinatorial problems. CP relies on two components: a constraint component and a search component [Van99]. Modelling languages focus on the constraint component. They provide high-level constructions and a mathematical-like notation. How- ever, the constructions and concepts involved may be numerous and not easily accessible to a non-programmer. Moreover, search and heuristics remain a difficult programming task which limits the applicability of these principles on a larger scale. This thesis presents a general rule-based modelling language, named Cream (for Con- straints with Rules to EAse Modelling), designed to make easy to use for ingineers the formu- lation of combinatorial problems and the integration of domain-specific knowledge in libraries. From a practical point of view, real problems seldom reduce to pure academic problems, and an engineer frequently finds it easier to understand or describe a complex design in small pieces than as a monolithic whole. Cream is based on the definition of rules and library of rules which allow to easily express and compose pieces of knowledge. In the same matter of concern, the language adopts simple data-structures based on records, lists given with iterators, integrates reified constraints and global constraints, and prohibits recursive definitions. Moreover, we show that a rule-based formalism permits to specify in a declarative manner the search component. More precisely, branching strategies can be defined as logical formulae and complex heuristics criteria for ordering sub-formulae may be defined separately from branching strategies by pattern-matching on the rule left-hand sides. The compilation of Cream models yields constraint programs over finite domains with reified and global constraints. The fundamental static compilation scheme is formalised by a term rewriting system that operates by rule expansion of the model. We describe a declarative semantics for Cream models with respect to which we prove the correctness of the compila- tion. We prove the confluence, the termination and an exponential complexity bound for this transformation. Furthermore, when a problem is too large to be fully expanded or when it depends on a value which is unknown at compile-time, we provide a second scheme generating procedural code. This scheme keeps the rule structure of the model and produces less efficient code but is shown to be linear in the original model size. We evaluate the expressiveness and the efficiency of generated programs not only on aca- demic but also on real-size industrial bin packing problems. The evaluated models rely on a placement modelling library used on pure problems and real business problems coming from the automotive and logistic industry.
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 [Van99]. 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 construc- tions 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 prob- lè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’ac- cessibilité, 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 stratégies de branchement y sont définies par des formules logiques et des critères heuristiques complexes d’ordonnancement des sous-formules dissociés des stratégies de branchement 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épen- dent 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 ap- pliquée à des problèmes purs et des problèmes de colisage dans l’industrie automobile.
Fichier principal
Vignette du fichier
Julien_Martin_these.pdf (4.72 Mo) Télécharger le fichier
Origine : Fichiers produits par l'(les) auteur(s)

Dates et versions

tel-04232429 , version 1 (08-10-2023)

Identifiants

  • HAL Id : tel-04232429 , version 1

Citer

Julien Pierre Martin. Un Langage de Modélisation à base de Règles pour la Programmation Par Contraintes. Informatique [cs]. INRIA Paris-Rocquencourt, 2010. Français. ⟨NNT : ⟩. ⟨tel-04232429⟩

Collections

INRIA INRIA2
18 Consultations
3 Téléchargements

Partager

Gmail Facebook X LinkedIn More