Chapitre 3

Contraintes

[Table des matières]

1 Introduction

La manipulation des contraintes n'est pas propre à la visualisation graphique du scénario temporel. Que ce soit pour la planification du scénario joué par l'interface de présentation de Madeus ou que ce soit pour le positionnement spatial des objets nous avons besoin de manipuler et de résoudre des systèmes de contraintes. Néanmoins notre problématique soulève des besoins particuliers notamment pour répondre au besoins mis en évidence dans le chapitre précédent.

Au cours de ce chapitre, après un bref rappel de la définition d'un système de contrainte (section 2), nous présenterons les besoins en terme de résolveurs de contraintes (section 3 ) définit à partir des besoins identifiés dans le chapitre II, avant de présenter les différentes approches pour résoudre de tels systèmes (section 4).

[Table des matières]

2 Résolution de contraintes

Définition d'un système de contraintes
Un problème de satisfaction de contraintes est la donnée d'un ensemble de variables dont les valeurs sont restreintes par des contraintes. Nous allons nous intéresser exclusivement aux CSPs binaires, c'est-à-dire ne manipulant que des contraintes entre deux variables, et au contexte classique dans lequel les contraintes sont discrètes. Le CSP à considérer est un triplé G={X,D,C}, où

- X ={x1, ..., xn} est un ensemble de variables,

- D = D1 x ...x Dn représente les domaines de ces variables (ensembles de valeurs pouvant leur être affectées a priori),

- C = {cij / 1<= i,j <= n} est un ensemble de contraintes d'entrée.

Une contrainte cij exprimera la contrainte entre les variables xi et xj, restreignant du même coup les valeurs pouvant être prises simultanément par ces deux variables. Dans le cas fini, elle s'exprimera généralement sous la forme d'un ensemble de couples de valeurs permises.

c ij = { (xi1,xj1), ..., (xip,xjp) } subseteq Di x Dj

Dans le cas des domaines infinis la contrainte est donnée en intention par un prédicat sur les variables de la contrainte.

On définit ensuite une solution d'un CSP comme étant une instanciation de toutes les variables satisfaisant l'ensemble des contraintes, c'est-à-dire:

Une solution est un ensemble delta = {x1inD1, ..., xninDn / forallcijinC, (xi,xj)incij}

Expression du scénario temporel sous forme de contraintes
Dans le cas d'un scénario temporel exprimé sous forme de contraintes, chaque objet est défini par deux variables (ses instants de début et de fin), le domaine de ses variables est [ 0, +infty ]. Chaque objet flexibles introduit une contrainte correspondant à son intervalle de durées possibles :

Et chaque relation du scénario est traduite en terme de contraintes qui sont toutes sous la forme d'une différence de la forme :

min <= X - X' <= max

min et max pouvant prendre leur valeurs dans l'intervalle [0.. infty [, et où X et X' sont des instants de début ou de fin.

Par exemple la relation During entre les objets 1 et 2 sera traduite par :

Satisfaction de contraintes ou maintien de solution
Etant donné un système de contraintes, on peut identifier deux problèmes différents :

Notre problématique de visualisation du scénario temporel telle que nous l'avons présenté dans les deux premiers chapitres se situe clairement dans une problématique de maintien de solution d'un système de contraintes dynamiques. En effet à un instant donné on visualise une solution d'un ensemble de contraintes et on doit réagir à une perturbation qui dans le cas présent est la modification de la durée d'un objet. Les besoins utilisateur généralement mis en avant lors de l'étude de cette classe de problèmes est l'efficacité et la stabilité des solutions (ie, la nécessité de modifier le moins possible la solution courante). Nous allons voir dans la section suivante comment ils correspondent aussi à une réalité dans notre contexte mais aussi comment les besoins identifiés en appellent d'autres.

[Table des matières]

3 Les besoins

Nous allons voir dans cette partie comment les besoins identifiés dans le chapitre II se traduisent sur les algorithmes de maintien de solutions.

[Table des matières]

4 Les solutions existantes

On peut diviser les méthodes de maintien de solution en deux catégories : les approches locales et les approches globales.

[Table des matières]

4.1 Les approches locales

Les résolveurs locaux utilisent un graphe de contraintes tel celui présenté dans la Fig 0 :

Image graphe.gif

Fig 0. Graphe de contraintes

Le graphe de contrainte est construit de la manière suivante. Chaque variable du problème est représentée par un cercle, chaque contrainte est représentée par un carré, et chaque arc représente l'appartenance d'une variable a une contrainte. A chaque contrainte est associée un ensemble de méthodes qui explicite comment répercuter la modification d'une variable sur les autres variables présentes dans la contrainte. Par exemple, une méthode associée à la contrainte C1 peut être A <== C + B qui indique comment répercuter une modification de C et/ou B (ce sont les entrées de la méthode) sur A (c'est la sortie de la méthode).

C'est la technique de résolution la plus employée dans les applications graphiques. De nombreux travaux ont été fait sur le sujet et se poursuivent (ex : ThingLab et SketchPad ).

La fonction d'un résolveur local incrémental est de décider :

La méthode la plus communément utilisée pour assurer ces trois fonctionalités est la méthode par propagation locale de valeurs . L'idée sous-jacente à cette technique est de dire que dès que la contrainte possède assez d'informations pour calculer des valeurs, elle les calcule. Elle se décompose en deux phases :

  1. Une phase de planification au cours de laquelle le résolveur sélectionne une méthode pour chacune des contraintes à recalculer, et uniquement pour celles-ci. Cet ensemble de méthodes est calculé en partant de la variable perturbée et en identifiant toutes les contraintes potentiellement insatisfaite. Pour chacune de ces contraintes une méthode est choisie. Cette méthode doit prendre la variable perturbée en entrée et une variable ne doit pas être en sortie de deux méthodes. Ce choix construit un ensemble de variables modifiées par la perturbation initiale. Il faut donc calculer un nouvel ensemble de contraintes à réévaluer parmi les contraintes non encore examinées, et recommencer ainsi de suite jusqu'à ne plus avoir de contraintes à reconsidérer. L'ordre d'exécution correspond a un tri topologique de ce graphe en fonction de son orientation.

    Par exemple une orientation possible dans l'exemple de la Fig 0 est donnée dans la Fig 1 , cette orientation répercute une modification de A sur les variables C, D et F.

  2. Une phase d'exécution pendant laquelle le plan constitué est exécuté en séquence . Dans cette phase, les valeurs connues sont propagées le long des arcs du graphe de contraintes.
Image grapheOriente.gif

Fig 1. Orientation du graphe de contraintes

Les avantages de la propagation locale sont l'efficacité, la généricité et les facilité de compréhension du comportement des variables. Les désavantages bien connus de ces méthodes sont :

Ces deux raisons sont suffisantes pour ne pas retenir ces méthodes dans notre contexte. Cependant les techniques employées, comme la définition de poids associés aux contraintes, pour contrôler la solution et orienter la recherche sont intéressantes et adaptable à notre problème. Pour ce qui est de notre besoin de connaître les domaines de validité des variables, nous n'avons à ce jour pas d'idée sur la façon d'obtenir ces informations en utilisant ces méthodes sauf par des essais successifs.

[Table des matières]

4.2 les approches globales

Nous venons de voir que les méthodes locales ne permettent pas de répondre complètement à nos besoins spécifiques. Nous étudions à présent l'autre type d'approche, les approches globales. On ne présentera qu'un seul algorithme de cette classe qui est représentatif de l'approche. Cet algorithme appelé Dynamic Backtrack est une adaptation de l'algorithme backtrack utilisé dans un problème de satisfaction statique de contraintes. Celui ci est présenté ci dessous.

L'algorithme de backtrack
Nous rappelons simplement les caractéristiques essentielles de cet algorithme. Dans l'état initial aucune variable n'est affectée. A une étape donnée l'ensemble des variables sera divisé en deux groupes, les variables affectées et les variables non affectées. La solution courante est cohérente avec l'ensemble de contraintes. L'étape va consister à affecter une nouvelle variable, le système choisi une variable et une valeur dans l'ensemble de celles possibles et vérifie la cohérence. Si le système est cohérent il passe à l'étape suivante, si le système est incohérent il essaie une autre valeur pour la variable considérée. Si toutes les valeurs ont été considérées il désaffecte une des variables affectées, et repart à l'étape n-1.
Image SearchSpace.gif

Fig 2. Arbre de recherche

Dans l'exemple de la Fig 2 on peut voir un arbre de recherche possible dans le cas où nous avons des contraintes qui portent sur trois variables X,Y et Z (chacune étant définie dans l'intervalle [1..3]).

C'est par exemple la méthode employée dans IlogSolver .

Retour arrière dynamique
Cet algorithme part d'une solution courante, son mécanisme est assez proche de la version de l'algorithme de backtrack présenter précédemment. Cet algorithme divise les variables en deux catégories: variables fixées et variables non fixées. Dans l'état initial aucune variable n'est fixée. A chaque étape toutes les variables sont valuées, et le système peut être ou non cohérent, mais la valuation des variables fixées est cohérente. A chaque étape le système cherchera à étendre l'ensemble des variables fixées. Des heuristiques sur le choix des variables à remettre en cause lors de retour arrière ou sur le choix des valeurs pour une variable sont réalisable, ce qui permet d'améliorer et de personnaliser cet algorithme de manière à orienter la recherche de solution. Par exemple on peut imaginer, dans notre cas, de désaffecter en priorité les variables représentant les instants de début et fin des délais.

L'avantage majeur de cette technique est sa complétude: on trouve toujours la solution si elle existe et la possibilité pour l'utilisateur de contrôler la recherche de solution en cas de réponse multiples.

Ses inconvénients sont :

Cependant ces deux inconvénients peuvent être réduits par les deux remarques suivantes :

[Table des matières]

5 Conclusion

Comme nous avons pu le voir au cours de ce chapitre aucune méthode de maintien de solution répond complètement à nos besoins :

Néanmoins dans le cas de approches globales nous avons quelques idées pour contourner ces difficultés, notamment avec l'application d'algorithmes de type PC2.

Un problème commun à toute ces approches (locale et globale) est quelles ne nous permettent pas d'anticiper l'intervalle de flexibilité. Il va dont être nécessaire de réaliser un algorithme qui nous permettra d'anticiper cette intervalle dans toutes les configurations possibles (déplacements locaux ou globaux) et de manière efficace.

Nous allons maintenant présenter une méthode ad'hoc qui nous permet de traiter de manière efficace une partie des besoins présentés ainsi que les choix de représentation graphique pour les concepts de flexibilité et d'interruption présentés dans le chapitre II.

Notes :