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).
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.
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.
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().
Note : Quel rapport entre réduction et observateurs ?
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.
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
  • 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).