this repo has no description
1% RUNS ON mzn20_fd
2% RUNS ON mzn-fzn_fd
3% RUNS ON mzn20_fd_linear
4% RUNS ON mzn20_mip
5% n-queens example in Zinc using IP techniques
6% By Ralph Becket
7
8% MiniZinc version
9% Peter Stuckey September 30 2006
10
11int: n = 8;
12
13set of int: rg = 0 .. n-1;
14
15array [rg, rg] of var 0 .. 1: q;
16
17%
18% Every row and column has exactly one queen.
19% Every diagonal has at most one queen.
20%
21
22constraint forall (i in rg) (
23 ( sum (j in rg) (q[i, j]) = 1 )
24/\ ( sum (j in rg) (q[j, i]) = 1 )
25/\ ( sum (j, k in rg where j - k = i) (q[j, k]) <= 1 )
26/\ ( sum (j, k in rg where j - k = - i) (q[j, k]) <= 1 )
27/\ ( sum (j, k in rg where j - k = i) (q[n - 1 - j, k]) <= 1 )
28/\ ( sum (j, k in rg where j - k = - i) (q[n - 1 - j, k]) <= 1 )
29);
30
31%
32% Find the first solution.
33%
34
35solve ::
36 int_search(
37 array1d(1..n*n, q),
38 first_fail,
39 indomain_min,
40 complete
41 )
42 satisfy;
43
44output ["8 queens, IP version:"] ++
45 [ if j = 0 then "\n" else "" endif ++
46 if fix(q[i, j]) = 1 then "Q " else ". " endif
47 | i, j in rg
48 ] ++
49 [ "\n" ];