this repo has no description

Use separate models for record/replay so chuffed behaves correctly

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