english TASC - INRIA Rennes - LINA CNRS UMR 6241

Système de résolution de contraintes et extensions

CHOCO: solveur de contraintes

CHOCO

En 1999, le projet OCRE fut initié par des personnes de l'École des Mines de Nantes, de l'Onera de Toulouse, de l'Université de Montpellier, de l'INRA de Toulouse et du laboratoire privé e-lab du groupe Bouygues. Le but de ce projet est de mettre à disposition de la communauté programmation par contraintes des outils, des algorithmes, des exemples et des jeux de test utilisables comme une plate-forme d'expérimentation.

CHOCO est initialement le noyau de la plate-forme OCRE: cette librairie Java définit les structures de bases d'un système de contraintes telles que les variables domaines, les contraintes, la propagation et la recherche arborescente.

CHOCO est distribué sous licence BSD permettant une utilisation académique aussi bien qu'une utilisation commerciale.

La bibliothèque IBEX/QUIMPER

IBEX

IBEX est un logiciel destiné à un public large de scientifiques souhaitant recourir aux méthodes dites "ensemblistes" pour obtenir des solutions fiables à des problèmes s'exprimant sous forme de contraintes numériques (optimisation globale, résolution d'équations, inversion de modèles, etc.). La "fiabilité" signifie ici une prise en compte aussi bien de la représentation des réels par des flottants, des erreurs d'arrondis, de la non-linéarité des contraintes, des incertitudes sur le modèle que des bruits liés aux mesures de paramètres. Les solutions proposées doivent être compatibles avec chacun de ces aspects.

IBEX est une librairie C++ sous licence GPL basé sur un formalisme appelé "programmation par contracteurs". Le langage hant-niveau QUIMPER est une implémentation de ce formalisme. Il est à la base de plusieurs outils graphiques (actuellement: qPave, qTraj, qSolve) qui sont des exécutables construits au dessus d'IBEX et déstinés aux utilisateurs finaux.

IBEX implémente principalement des algorithmes de propagation de contraintes et des méthodes numériques de type intervalles, ainsi qu'un compilateur QUIMPER. C'est la combinaison de ces deux approches (programmation par contraintes et analyse par intervalles) qui permet de traiter efficacement certains problèmes.

IBEX/QUIMPER possède aujourd'hui une trentaine d'utilisateurs académiques réguliers répartis dans plusieurs laboratoires universitaires (I3S à Nice, UTC à Compiègne, ENSIETA à Brest, LIRMM à Montpellier ou IMS à Bordeaux,...).

librairie de contraintes globales

Au fil du temps, nous développons et intégrons de nouvelles contraintes globales dans CHOCO: les contraintes classiques de la littérature, éléments de modélisation de nombreuses applications (alldifferent, global cardinality, regular,...) et les contraintes issues de nos activités de recherche (tree, geost, multi-cost regular, etc...).

VISEXP: librairie de visualisation d'explications

Dans le cadre du projet RNTL OADYMPPAC nous avons développé un outil pour visualiser les explications. Cet outil prend en entrée la trace générique de l'exécution d'un programme avec contraintes. VISEXP utilise les fonctionnalités de VISADJ qui est un outil pour visualiser une matrice développé au sein de l'école des Mines de Nantes par l'équipe Modélisation et Conception interactive.

Apprentissage de contraintes

Dans le cadre de la plate-forme d'apprentissage de contraintes du LIRMM à Montpellier, nous avons développé dans CHOCO en collaboration avec Christian Bessière et Rémi Coletta un algorithme d'apprentissage permettant, à partir d'exemples, d'apprendre des contraintes globales. Tout en étant complètement générique le prototype s'est concentré sur l'apprentissage de contraintes de type global_cardinality.

Classification de contraintes

GCCat: Catalogue de Contraintes Globales

Le catalogue de contraintes globales...

GCSeek: Seeker de Contraintes Globales

Le seeker de contraintes globales...

Filtrage systématique de contraintes

Nous poursuivons notre travail commun avec Mats Carlsson du Swedish Institute of Computer Science sur l'utilisation d'automates pour la construction d'algorithme de filtrage. Nous avons développé un prototype dans lequel, pour une contrainte donnée, nous construisons automatiquement un algorithme de filtrage à partir d'un automate reconnaissant les solutions associées à la contrainte en question. Cet outil a été appliqué à une cinquantaine de contraintes. Nous avons également développé des automates calculant des bornes inférieures et supérieures pour certaines propriétés de graphes intervenant dans la description des contraintes globales.

Diffusion et vulgarisation

e-constraints

Le site des explications...

sudoku

sudoku

De février à mai 2006, Narendra Jussien a monté une campagne de vulgarisation dans les médias (Nouvel Observateur, Science et Vie, France Inter, Canal+,etc.) de la programmation par contraintes en s'appuyant sur le phénomène du Sudoku.

W3C: XHTML - last update : may 2011, SD
up