Skip to content

Commit 5eaa42b

Browse files
committed
refactoring: refactoring for models, improved scripts
1 parent c17faa1 commit 5eaa42b

18 files changed

+7298
-27
lines changed

models/fzn/4x4_opt.fzn

Lines changed: 2150 additions & 0 deletions
Large diffs are not rendered by default.

models/fzn/4x4_opt.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
% Generated FlatZinc statistics:
2+
%%%mzn-stat: paths=1802
3+
%%%mzn-stat: flatBoolVars=946
4+
%%%mzn-stat: flatIntVars=125
5+
%%%mzn-stat: flatBoolConstraints=736
6+
%%%mzn-stat: flatIntConstraints=327
7+
%%%mzn-stat: evaluatedReifiedConstraints=210
8+
%%%mzn-stat: method="maximize"
9+
%%%mzn-stat: flatTime=0.324767
10+
%%%mzn-stat-end
11+

models/fzn/5x5_opt.fzn

Lines changed: 5070 additions & 0 deletions
Large diffs are not rendered by default.

models/fzn/5x5_opt.txt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
% Generated FlatZinc statistics:
2+
%%%mzn-stat: paths=3989
3+
%%%mzn-stat: flatBoolVars=2352
4+
%%%mzn-stat: flatIntVars=172
5+
%%%mzn-stat: flatBoolConstraints=1944
6+
%%%mzn-stat: flatIntConstraints=586
7+
%%%mzn-stat: evaluatedHalfReifiedConstraints=432
8+
%%%mzn-stat: method="maximize"
9+
%%%mzn-stat: flatTime=0.494101
10+
%%%mzn-stat-end
11+
Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
include "globals.mzn";
2-
31
% Define a two-dimensional nxn grid.
42
int: n;
53
int: m;
@@ -11,6 +9,10 @@ int: M;
119
array[1..m] of var 1..m: p;
1210
constraint alldifferent(p);
1311

12+
% Differences
13+
array[1..M] of var int: dx = [x[p[i]] - x[p[i+1]] | i in 1..M];
14+
array[1..M] of var int: dy = [y[p[i]] - y[p[i+1]] | i in 1..M];
15+
1416
% Define permutations for symmetrical lock patterns
1517
array[1..m] of int: r90;
1618
array[1..m] of int: r180;
@@ -26,24 +28,3 @@ constraint symmetry_breaking_constraint(lex_lesseq(p, [p[i] | i in r180]));
2628
constraint symmetry_breaking_constraint(lex_lesseq(p, [p[i] | i in r180_reflect]));
2729
constraint symmetry_breaking_constraint(lex_lesseq(p, [p[i] | i in r270]));
2830
constraint symmetry_breaking_constraint(lex_lesseq(p, [p[i] | i in r270_reflect]));
29-
30-
% Differences
31-
array[1..M] of var int: dx = [x[p[i]] - x[p[i+1]] | i in 1..M];
32-
array[1..M] of var int: dy = [y[p[i]] - y[p[i+1]] | i in 1..M];
33-
34-
% Maximum complexity constraints.
35-
predicate line(int: x1, int: y1, int: k) = exists(i in 1..M, c in 1..k)(
36-
(dx[i] = c*x1 /\ dy[i] = c*y1) \/ (dx[i] = -c*x1 /\ dy[i] = -c*y1)
37-
);
38-
39-
% Line types
40-
int: N;
41-
array[1..N] of int: xs;
42-
array[1..N] of int: ys;
43-
array[1..N] of int: ks;
44-
45-
constraint if N = M then
46-
forall(i in 1..N)(line(xs[i], ys[i], ks[i]))
47-
else
48-
count(i in 1..N)(line(xs[i], ys[i], ks[i])) = min(N, M)
49-
endif;

models/nxn_max_complexity.mzn

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
% Line types
2+
int: N;
3+
array[1..N] of int: xs;
4+
array[1..N] of int: ys;
5+
array[1..N] of int: ks;
6+
7+
% Maximum complexity constraints.
8+
predicate line(int: x1, int: y1, int: k) = exists(i in 1..M, c in 1..k)(
9+
(dx[i] = c*x1 /\ dy[i] = c*y1) \/ (dx[i] = -c*x1 /\ dy[i] = -c*y1)
10+
);
11+
12+
constraint if N = M then
13+
forall(i in 1..N)(line(xs[i], ys[i], ks[i]))
14+
else
15+
count(i in 1..N)(line(xs[i], ys[i], ks[i])) = min(N, M)
16+
endif;

models/nxn_opt.mzn

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
include "nxn_cons.mzn";
1+
include "globals.mzn";
2+
include "nxn_lock_pattern.mzn";
3+
include "nxn_max_complexity.mzn";
24

35
% Maximize distance
46
% TODO: add tight bounds for distance variable?

models/nxn_sat.mzn

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
include "nxn_cons.mzn";
1+
include "globals.mzn";
2+
include "nxn_lock_pattern.mzn";
3+
include "nxn_max_complexity.mzn";
24

35
% Find max complexity patterns
46
solve satisfy;

scripts/2x2_sat.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22
minizinc models/nxn_sat.mzn models/instances/2x2.dzn \
33
--solver gecode \
44
--statistics \
5-
--all-solutions
5+
--all-solutions \
6+
--output-time

scripts/3x3_sat.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22
minizinc models/nxn_sat.mzn models/instances/3x3.dzn \
33
--solver gecode \
44
--statistics \
5-
--all-solutions
5+
--all-solutions \
6+
--output-time

0 commit comments

Comments
 (0)