Implémenter des contraintes globales expliquées
Abstract
Modifier le comportement d'un solveur de contraintes pour lui ajouter de nouvelles capacités est souvent une tâche complexe : l'optimisation extrême, fruit d'une expérience de développement de plusieurs années, du coeur de propagation et des algorithmes de filtrage rend cette opération particulièrement délicate si on souhaite maintenir le niveau de qualité atteint par l'outil. Dès lors, cette difficulté constitue bien souvent un frein pour mettre en place au sein du solveur de nouvelles techniques ou outils (explications, trace précise, etc.). Nous montrons dans cet article les problèmes posés par l'ajout d'explications dans des contraintes globales et proposons deux nouvelles méthodes pour ajouter des contraintes globales expliquées dans un solveur : l'une basée sur l'utilisation d'un cadre générique de description des contraintes globale, l'autre utilisant les possibilité de la programmation par aspects.