this repo has no description

Use separate models for record/replay so chuffed behaves correctly

+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
··· 1 + include "gbac.mzn"; 2 + 3 + annotation main_vars(array[int] of var int: vars); 4 + 5 + solve 6 + :: main_vars(period_of) 7 + :: int_search(period_of,first_fail,indomain_min,complete) minimize objective;
-1
gbac/on_restart.mzn
··· 28 28 annotation main_vars(array[int] of var int: vars); 29 29 30 30 solve 31 - :: main_vars(period_of) 32 31 :: int_search(period_of,first_fail,indomain_min,complete) minimize objective;
-1
gbac/original.mzn
··· 3 3 annotation main_vars(array[int] of var int: vars); 4 4 5 5 solve 6 - :: main_vars(period_of) 7 6 :: int_search(period_of,first_fail,indomain_min,complete) minimize objective;
+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
··· 1 + include "rcpsp-wet.mzn"; 2 + 3 + annotation main_vars(array[int] of var int: vars); 4 + 5 + solve 6 + ::main_vars(s) 7 + ::int_search(s, first_fail, indomain_min, complete) 8 + minimize objective;
-1
rcpsp-wet/on_restart.mzn
··· 31 31 annotation main_vars(array[int] of var int: vars); 32 32 33 33 solve 34 - ::main_vars(s) 35 34 ::int_search(s, first_fail, indomain_min, complete) 36 35 minimize objective;
-1
rcpsp-wet/original.mzn
··· 3 3 annotation main_vars(array[int] of var int: vars); 4 4 5 5 solve 6 - ::main_vars(s) 7 6 ::int_search(s, first_fail, indomain_min, complete) 8 7 minimize objective;
+1 -1
run_record_gecode.sh
··· 7 7 source setup.sh 8 8 9 9 solver="./software/install/gecode_on_record/bin/fzn-gecode" 10 - model="./${folder}/on_restart" 10 + model="./${folder}/on_record" 11 11 output_folder="./output/gecode/${folder}/record" 12 12 mkdir -p ${output_folder} 13 13
+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
··· 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
··· 1 + include "steelmillslab.mzn"; 2 + 3 + annotation main_vars(array[int] of var int: vars); 4 + 5 + solve 6 + :: main_vars(assign) 7 + :: int_search(ordered, first_fail, indomain_min, complete) 8 + minimize objective;
-1
steelmillslab/on_restart.mzn
··· 28 28 annotation main_vars(array[int] of var int: vars); 29 29 30 30 solve 31 - :: main_vars(assign) 32 31 :: int_search(ordered, first_fail, indomain_min, complete) 33 32 minimize objective;
-1
steelmillslab/original.mzn
··· 3 3 annotation main_vars(array[int] of var int: vars); 4 4 5 5 solve 6 - :: main_vars(assign) 7 6 :: int_search(ordered, first_fail, indomain_min, complete) 8 7 minimize objective;