Foire aux questions
Questions
Note :
Après avoir supprimé
des variables temporaires inutiles, j'ai une boucle
infinie.
Lors de la suppression d'une variable temporaire _X il faut fixer le domaine à une seule valeur (zéro arbitrairement).
Lors de la suppression d'une variable temporaire _X il faut fixer le domaine à une seule valeur (zéro arbitrairement).
Note :
Dans la stratégie
AlwaysReduce à quel
moment réduire ?
Une stratégie a une méthode qui est appelée après chaque essai afin de vérifier l'ensemble des contraintes. La stratégie AlwaysReduce va utiliser la réduction d'intervalles lors de cette étape.
Une stratégie a une méthode qui est appelée après chaque essai afin de vérifier l'ensemble des contraintes. La stratégie AlwaysReduce va utiliser la réduction d'intervalles lors de cette étape.
Note :
Que dois-je stocker
dans les solutions ?
Une solution est une liste d'affectations de valeurs à des variables nommées. Une affectation peut être représentée par un record.
Une solution est une liste d'affectations de valeurs à des variables nommées. Une affectation peut être représentée par un record.
Note :
Comment représenter
une stratégie ?
Une stratégie est une interface Java dotée de quatre méthodes. Par exemple : boolean before(), Variable findVariable(), int step(Variable v) et boolean check().
Une stratégie est une interface Java dotée de quatre méthodes. Par exemple : boolean before(), Variable findVariable(), int step(Variable v) et boolean check().
Note :
Quel rapport entre
réduction et observateurs ?
La classe de réduction va observer les variations de domaine des variables. Nous obtenons :
La classe de réduction va observer les variations de domaine des variables. Nous obtenons :
Réduction d'une contrainte c --> réduction de l'intervalle d'une variable v --> appel de l'observateur de v --> ajout des contraintes de v dans les contraintes à réduire --> réduction d'une contrainte c
Note :
Est-ce que les
méthodes checkXXX de la
classe Solver doivent
être déplacées dans la classe DefaultStrategy ?
Oui. La stratégie par défaut va vérifier les contraintes avec les méthodes checkXXX qui doivent être déplacées. Nous pouvons également prévoir un Checker spécialisé dans cette opération.
Oui. La stratégie par défaut va vérifier les contraintes avec les méthodes checkXXX qui doivent être déplacées. Nous pouvons également prévoir un Checker spécialisé dans cette opération.
Note :
Comment traiter la
réduction de la contrainte <> ?
Dans la méthode reduce() il manque le cas de la différence. Il faut donc
Dans la méthode reduce() il manque le cas de la différence. Il faut donc
- créer une méthode reduceDiffConstraint(c) qui fait la réduction,
- appeler cette méthode dans reduce(c),
- tester les cas proposés (dans un TU).