int nbqueens = ...;
range index  1..nbqueens;
range diag1  [-1*nbqueens+1  ..nbqueens-1];
range diag2  [2..2*nbqueens];
var int setqueen[index,index] in 0..1;

minimize 
   sum (i,j in index) setqueen[i,j]

subject to {
   forall (i in index) sum (j in index) setqueen[i,j] = 1;
   forall (j in index) sum (i in index) setqueen[i,j] = 1;
   forall (k in diag1) sum (i,j in index : j-i =k) setqueen[i,j]<= 1;
   forall (k in diag2) sum (i,j in index : j+i =k) setqueen[i,j]<=1;

};
