Operation Arity Syntax Semantics
Arithmetic (operands are integers)
Opposite 1 neg(x) -x
Absolute Value 1 abs(x) |x|
Addition 2 add(x,y) x + y
Substraction 2 sub(x,y) x - y
multiplication 2 mul(x,y) x * y
Integer Division 2 div(x,y) x div y
Remainder 2 mod(x,y) x mod y
Power 2 pow(x,y) xy
Minimum 2 min(x,y) min(x,y)
Maximum 2 max(x,y) max(x,y)
Relational (operands are integers)
Equal to 2 eq(x,y) x = y
Different from 2 ne(x,y) x 6= y
Greater than or equal 2 ge(x,y) x ≥y
Greater than 2 gt(x,y) x >y
Less than or equal 2 le(x,y) x ≤y
Less than 2 lt(x,y) x <y
Logic (operands are Booleans)
Logical not 1 not(x) ¬x
Logical and 2 and(x,y) x ∧y
Logical or 2 or(x,y) x ∨y
Logical xor 2 xor(x,y) x ⊕y
Logical equivalence (iff) 2 iff(x,y) x ⇔y
Control
Alternative 3 if(x,y,z) value of y if x is true,
otherwise value of z
Table 1 – Op´erateurs utilis´es pour construire des pr´edicats
@Override
public void specifySolutionDisplay() {
for (int i = 0; i < nbQueens; i++) {
for (int j = 0; j < nbQueens; j++)
System.out.print(queens[i].dom.getUniqueValue()==j?"Q":"-");
System.out.println();
}
}
4. Noter le temps et le nombre de noeuds n´ecessaire pour trouver toutes les solutions de l’instance
des 12 reines (avec le mod`ele 1) :
java -jar abscon.jar Queens 12 1 -s=all -v=0
5. Int´egrer une nouvelle formulation des contraintes (model = 2) o`u les deux jeux de contraintes
sont fusionn´es (i.e. les contraintes de mˆeme port´ee sont fusionn´ees). Tester le nouveau mod`ele
et comparer le temps de r´esolution ainsi que le nombre de noeuds explor´es (pour toutes les
solutions de l’instance des 12 reines).
6. Pour le mod`ele 3, ajouter simplement une contrainte globale redondante (utilisez la m´ethode
addConstraintAllDifferent au mod`ele pr´ec´edent.
7. Comparer les 3 mod`eles en terme de temps d’ex´ecution et du nombre de noeuds explor´es lorsque
les 14 200 solutions au probl`eme des 12 reines sont recherch´ees.
4