+32
gbac/on_record.mzn
+32
gbac/on_record.mzn
···
1
+
include "gbac.mzn";
2
+
include "restart.mzn";
3
+
4
+
predicate int_eq_imp(var int: x, var int: y, var bool: b);
5
+
predicate bool_eq_imp(var bool: x, var bool: y, var bool: b);
6
+
7
+
predicate random_allocation(var bool: b) = forall(i in courses) (
8
+
int_eq_imp(period_of[i], sol(period_of[i]), b /\ (uniform_internal(1,100) < 80))
9
+
);
10
+
11
+
predicate free_period(var bool: b) = let {
12
+
var int: period = uniform_internal(periods);
13
+
} in forall(i in courses) (
14
+
int_eq_imp(period_of[i], sol(period_of[i]), b /\ (sol(period_of[i]) != period))
15
+
);
16
+
17
+
% Round Robin
18
+
array[1..2] of var bool: nbh;
19
+
constraint random_allocation(nbh[1]);
20
+
constraint free_period(nbh[2]);
21
+
var 1..2: select;
22
+
constraint lastval(select) mod 2 + 1 = select;
23
+
constraint bool_eq_imp(nbh[1], false, status() == START);
24
+
constraint bool_eq_imp(nbh[2], false, status() == START);
25
+
constraint bool_eq_imp(nbh[1], select == 1, status() != START);
26
+
constraint bool_eq_imp(nbh[2], select == 2, status() != START);
27
+
28
+
annotation main_vars(array[int] of var int: vars);
29
+
30
+
solve
31
+
:: main_vars(period_of)
32
+
:: int_search(period_of,first_fail,indomain_min,complete) minimize objective;
+7
gbac/on_replay.mzn
+7
gbac/on_replay.mzn
-1
gbac/on_restart.mzn
-1
gbac/on_restart.mzn
-1
gbac/original.mzn
-1
gbac/original.mzn
+36
rcpsp-wet/on_record.mzn
+36
rcpsp-wet/on_record.mzn
···
1
+
include "rcpsp-wet.mzn";
2
+
include "restart.mzn";
3
+
4
+
predicate int_eq_imp(var int: x, var int: y, var bool: b);
5
+
predicate bool_eq_imp(var bool: x, var bool: y, var bool: b);
6
+
7
+
predicate randomize(var bool: b) =
8
+
forall(t in Tasks) (
9
+
int_eq_imp(s[t], sol(s[t]), b /\ uniform_internal(1,100) < 80)
10
+
);
11
+
12
+
predicate free_timeslot(var bool: b) =
13
+
let {
14
+
int: slot = max(Times) div 10;
15
+
var int: time = uniform_internal(min(Times), max(Times) - slot);
16
+
} in forall(t in Tasks) (
17
+
int_eq_imp(s[t], sol(s[t]), b /\ (sol(s[t]) < time \/ time+slot > sol(s[t])))
18
+
);
19
+
20
+
% Round Robin
21
+
array[1..2] of var bool: nbh;
22
+
constraint randomize(nbh[1]);
23
+
constraint free_timeslot(nbh[2]);
24
+
var 1..2: select;
25
+
constraint lastval(select) mod 2 + 1 = select;
26
+
constraint bool_eq_imp(nbh[1], false, status() == START);
27
+
constraint bool_eq_imp(nbh[2], false, status() == START);
28
+
constraint bool_eq_imp(nbh[1], select == 1, status() != START);
29
+
constraint bool_eq_imp(nbh[2], select == 2, status() != START);
30
+
31
+
annotation main_vars(array[int] of var int: vars);
32
+
33
+
solve
34
+
::main_vars(s)
35
+
::int_search(s, first_fail, indomain_min, complete)
36
+
minimize objective;
+8
rcpsp-wet/on_replay.mzn
+8
rcpsp-wet/on_replay.mzn
-1
rcpsp-wet/on_restart.mzn
-1
rcpsp-wet/on_restart.mzn
-1
rcpsp-wet/original.mzn
-1
rcpsp-wet/original.mzn
+1
-1
run_record_gecode.sh
+1
-1
run_record_gecode.sh
+1
-1
run_replay_gecode.sh
+1
-1
run_replay_gecode.sh
···
7
7
source setup.sh
8
8
9
9
solver="./software/install/gecode_on_replay/bin/fzn-gecode"
10
-
model="./${folder}/original"
10
+
model="./${folder}/on_replay"
11
11
output_folder="./output/gecode/${folder}/replay"
12
12
records_folder="./output/gecode/${folder}/record"
13
13
mkdir -p ${output_folder}
+33
steelmillslab/on_record.mzn
+33
steelmillslab/on_record.mzn
···
1
+
include "steelmillslab.mzn";
2
+
include "restart.mzn";
3
+
4
+
predicate int_eq_imp(var int: x, var int: y, var bool: b);
5
+
predicate bool_eq_imp(var bool: x, var bool: y, var bool: b);
6
+
7
+
predicate random_assignment(var bool: b) = forall(i in 1..nbSlabs) (
8
+
int_eq_imp(assign[i], sol(assign[i]), b /\ (uniform_internal(1,100) < 80))
9
+
);
10
+
11
+
predicate random_bin(var bool: b) = let {
12
+
var int: bin = uniform_internal(1, nbSlabs);
13
+
} in forall(i in 1..nbSlabs) (
14
+
int_eq_imp(assign[i], sol(assign[i]), b /\ (bin != sol(assign[i])))
15
+
);
16
+
17
+
% Round Robin
18
+
array[1..2] of var bool: nbh;
19
+
constraint random_assignment(nbh[1]);
20
+
constraint random_bin(nbh[2]);
21
+
var 1..2: select;
22
+
constraint lastval(select) mod 2 + 1 = select;
23
+
constraint bool_eq_imp(nbh[1], false, status() == START);
24
+
constraint bool_eq_imp(nbh[2], false, status() == START);
25
+
constraint bool_eq_imp(nbh[1], select == 1, status() != START);
26
+
constraint bool_eq_imp(nbh[2], select == 2, status() != START);
27
+
28
+
annotation main_vars(array[int] of var int: vars);
29
+
30
+
solve
31
+
:: main_vars(assign)
32
+
:: int_search(ordered, first_fail, indomain_min, complete)
33
+
minimize objective;
+8
steelmillslab/on_replay.mzn
+8
steelmillslab/on_replay.mzn
-1
steelmillslab/on_restart.mzn
-1
steelmillslab/on_restart.mzn