previous up next top index
Précédent : Combinaison de solveurs Remonter : Contraintes Suivant : Unification d'ordre supérieur


Collaboration de solveurs

Participants : Eric Monfroy, Christophe Ringeissen, Michaël Rusinowitch

Eric Monfroy a soutenu sa thèse [3] sur la collaboration de solveurs pour la programmation logique à contraintes. Le solveur de contraintes est un composant essentiel des systèmes CLP qui influence beaucoup la déclarativité et détermine l'efficacité du système. Néanmoins, il n'est pas toujours possible d'obtenir un solveur suffisamment efficace pour un domaine donné. La coopération et la combinaison de solveurs sont des approches visant à pallier ce problème. Le principe de la coopération réside dans l'utilisation de plusieurs solveurs, et l'échange d'information entre ces solveurs qui travaillent tous sur le même domaine de calcul (les réels par exemple), mais avec des classes de contraintes admissibles différentes (l'un admet des égalités, un autre des inéquations linéaires, ...).

Nous avons réalisé un tel système CLP pour les contraintes polynômiales non-linéaires [37].

Mais jusqu'à présent, les travaux basés sur les concepts de coopération et combinaison sont dédiés à des domaines précis et ne sont pas toujours implantables, ni flexibles, ni adaptables. De cette constatation nous est venue l'idée d'un environnement pour la construction de collaborations de solveurs (la collaboration étant une approche unifiant la coopération et la combinaison). Les objectifs de cet environnement [38, 48] nommé BA.2ex L I \ sont multiples. Il fournit d'abord un cadre formel et un langage pour manipuler et faire collaborer les solveurs. Cette phase s'appuie sur des primitives de collaborations autorisant plusieurs paradigmes (tels que séquentialité, concurrence et parallélisme), et des primitives de contrôle (telles que répétition, point-fixe, garde, conditionnelle) pour composer les collaborations. La deuxième spécificité de cet environnement est de créer automatiquement des serveurs ayant une architecture distribuée et réalisant les collaborations désirées.

Nous proposons également un langage d'accueil, de type CLP(X), qui offre plusieurs stratégies de résolution de contraintes et dont l'implantation est un client particulier des serveurs. Dès qu'il est connecté à une collaboration, le paramètre X est instancié par le domaine de contraintes de cette dernière. BA.2ex L I peut donc être considéré comme un environnement pour réaliser de nouveaux systèmes CLP fondés sur des collaborations de solveurs. Une maquette a montré la faisabilité de notre approche ainsi que son intérêt en pratique.

Après avoir étudié les améliorations possibles de la partie solveur grâce à la collaboration, nous avons étendu la déclarativité de BA.2ex L I . L'intérêt de notre approche est d'accroître la déclarativité indépendamment du système de contraintes. Nous proposons un schéma [36, 47], nommé SoleX, qui étend un solveur en lui permettant de traiter de nouvelles classes de contraintes, c'est-à-dire en autorisant la manipulation de nouveaux symboles de fonctions. SoleX est composé de règles de transformations permettant le traitement des nouveaux symboles en amont et en aval du solveur à étendre. Chaque règle de transformation peut être vue comme un solveur composant, et SoleX comme une collaboration de solveurs de BA.2ex L I . Ceci apporte une originalité supplémentaire à ce système : l'extension de la déclarativité de BA.2ex L I peut être décrite en BA.2ex L I .



previous up next top index Précédent : Combinaison de solveurs Suivant : Unification d'ordre supérieur Remonter : Contraintes