Circulations and Flows in Learning Constraint Solvers
Nicholas Downing, Thibaut Feydy, Peter J. Stuckey
We give here the models (*.mzn) and instances (*.dzn) and
all necessary support files to duplicate the experiments from the paper.
At top level: The files task_*_pre.txt give the command lines to
the flattener (mzn2fzn version 1.6) and remaining task_*.txt
the command lines to the solvers. These task files are generated by
scripts/task_*.sh. There are also inst_*.txt and
cols_*.txt which give the labels to each row and column of the
tables in the paper and assist in the generation of the task files.
In the directories for each experiment, being car_sequence,
etp, nurse_nina, personnel,
social_golfer, there is a *.mzn.template file
which contains the basic model annotated with optional sections to
enable features like the circulation propagator or the decompositions of
model constraints. The script m.sh generates all the
*-*.mzn versions of these. The script n.sh generates all
the *.dzn files for the given experiment, which are processed into
Minizinc format from various sources. The *.mzn and
*.dzn files are available directly from here, we just include
the generator scripts for explanatory purposes.
The mzn directory contains some additional Minizinc files
defining decompositions we use other than from the Minizinc library.
Support scripts for the NICTA cluster are seen in scripts/job.sh
and scripts/sub.sh. We post process the results with some slight
customizations for each experiment using scripts/data_*.sh which
does the following:
- Extracts relevant features from any new solver output using
grep and summarizes them into data_*.txt which we
retain for our records and which can be seen here.
- Runs the analyzer scripts/data.py which understands the
output format of each solver and extracts the data points using regular
expressions, generating a solver-independent output data_*.csv
with four columns per solver, being status, runtime,
conflict count and optimal objective.
- Runs the table generator scripts/summary.py which extracts
the relevant column (time or conflict count in these experiments) and
formats them into a table time_*.csv or count_*.csv,
with one column per solver (for ease of comparison between solvers),
and with geometric means, etc, in the last line.
- Runs a lightweight scripts/csv_to_tex.sed converter.
For the comparison with Palm we checked out the code from
svn://svn.code.sf.net/p/choco/code/trunk/choco-old_version/src/main/java
revision 1194 (it is removed in later revisions after an effort at
integration with a more recent Choco version — which does
not compile), and applied the changes in
palm.patch. These were quite extensive and
involved adding missing code, fixing bugs, instrumenting for time and
failure count, and adding graceful termination checks. See
social_golfer/SocialGolfer.java
for the driver we created to invoke this modified Choco package.
The comparisons with Chuffed and JaCoP were much easier as
they are more modern and support a Minizinc front end, we just changed a
few compile time constants in JaCoP to control their explicit arc
testing algorithm.
all files in .tar.bz2 format
car_sequence/60_01_74.dzn
car_sequence/60_02_74.dzn
car_sequence/60_03_74.dzn
car_sequence/60_04_74.dzn
car_sequence/60_05_74.dzn
car_sequence/60_06_74.dzn
car_sequence/60_07_74.dzn
car_sequence/60_08_74.dzn
car_sequence/60_09_74.dzn
car_sequence/60_10_74.dzn
car_sequence/65_01_76.dzn
car_sequence/65_02_76.dzn
car_sequence/65_03_76.dzn
car_sequence/65_04_76.dzn
car_sequence/65_05_76.dzn
car_sequence/65_06_76.dzn
car_sequence/65_07_76.dzn
car_sequence/65_08_76.dzn
car_sequence/65_09_76.dzn
car_sequence/65_10_76.dzn
car_sequence/70_01_78.dzn
car_sequence/70_02_78.dzn
car_sequence/70_03_78.dzn
car_sequence/70_04_78.dzn
car_sequence/70_05_78.dzn
car_sequence/70_06_78.dzn
car_sequence/70_07_78.dzn
car_sequence/70_08_78.dzn
car_sequence/70_09_78.dzn
car_sequence/70_10_78.dzn
car_sequence/75_01_80.dzn
car_sequence/75_02_80.dzn
car_sequence/75_03_80.dzn
car_sequence/75_04_80.dzn
car_sequence/75_05_80.dzn
car_sequence/75_06_80.dzn
car_sequence/75_07_80.dzn
car_sequence/75_08_80.dzn
car_sequence/75_09_80.dzn
car_sequence/75_10_80.dzn
car_sequence/80_01_82.dzn
car_sequence/80_02_82.dzn
car_sequence/80_03_82.dzn
car_sequence/80_04_82.dzn
car_sequence/80_05_82.dzn
car_sequence/80_06_82.dzn
car_sequence/80_07_82.dzn
car_sequence/80_08_82.dzn
car_sequence/80_09_82.dzn
car_sequence/80_10_82.dzn
car_sequence/85_01_84.dzn
car_sequence/85_02_84.dzn
car_sequence/85_03_84.dzn
car_sequence/85_04_84.dzn
car_sequence/85_05_84.dzn
car_sequence/85_06_84.dzn
car_sequence/85_07_84.dzn
car_sequence/85_08_84.dzn
car_sequence/85_09_84.dzn
car_sequence/85_10_84.dzn
car_sequence/90_01_86.dzn
car_sequence/90_02_86.dzn
car_sequence/90_03_86.dzn
car_sequence/90_04_86.dzn
car_sequence/90_05_86.dzn
car_sequence/90_06_86.dzn
car_sequence/90_07_86.dzn
car_sequence/90_08_86.dzn
car_sequence/90_09_86.dzn
car_sequence/90_10_86.dzn
car_sequence/car_sequence-gcc_c-gsc.mzn
car_sequence/car_sequence-gcc_c-seq_c.mzn
car_sequence/car_sequence-gcc_c-seq_dps.mzn
car_sequence/car_sequence-gcc_c-seq_lin.mzn
car_sequence/car_sequence-gcc_lin-gsc.mzn
car_sequence/car_sequence-gcc_lin-seq_c.mzn
car_sequence/car_sequence-gcc_lin-seq_dps.mzn
car_sequence/car_sequence-gcc_lin-seq_lin.mzn
car_sequence/car_sequence.mzn.template
car_sequence/car_sequence.py
car_sequence/data/10_93.txt
car_sequence/data/16_81.txt
car_sequence/data/19_71.txt
car_sequence/data/21_90.txt
car_sequence/data/26_82.txt
car_sequence/data/36_92.txt
car_sequence/data/41_66.txt
car_sequence/data/4_72.txt
car_sequence/data/60_01.txt
car_sequence/data/60_02.txt
car_sequence/data/60_03.txt
car_sequence/data/60_04.txt
car_sequence/data/60_05.txt
car_sequence/data/60_06.txt
car_sequence/data/60_07.txt
car_sequence/data/60_08.txt
car_sequence/data/60_09.txt
car_sequence/data/60_10.txt
car_sequence/data/65_01.txt
car_sequence/data/65_02.txt
car_sequence/data/65_03.txt
car_sequence/data/65_04.txt
car_sequence/data/65_05.txt
car_sequence/data/65_06.txt
car_sequence/data/65_07.txt
car_sequence/data/65_08.txt
car_sequence/data/65_09.txt
car_sequence/data/65_10.txt
car_sequence/data/6_76.txt
car_sequence/data/70_01.txt
car_sequence/data/70_02.txt
car_sequence/data/70_03.txt
car_sequence/data/70_04.txt
car_sequence/data/70_05.txt
car_sequence/data/70_06.txt
car_sequence/data/70_07.txt
car_sequence/data/70_08.txt
car_sequence/data/70_09.txt
car_sequence/data/70_10.txt
car_sequence/data/75_01.txt
car_sequence/data/75_02.txt
car_sequence/data/75_03.txt
car_sequence/data/75_04.txt
car_sequence/data/75_05.txt
car_sequence/data/75_06.txt
car_sequence/data/75_07.txt
car_sequence/data/75_08.txt
car_sequence/data/75_09.txt
car_sequence/data/75_10.txt
car_sequence/data/80_01.txt
car_sequence/data/80_02.txt
car_sequence/data/80_03.txt
car_sequence/data/80_04.txt
car_sequence/data/80_05.txt
car_sequence/data/80_06.txt
car_sequence/data/80_07.txt
car_sequence/data/80_08.txt
car_sequence/data/80_09.txt
car_sequence/data/80_10.txt
car_sequence/data/85_01.txt
car_sequence/data/85_02.txt
car_sequence/data/85_03.txt
car_sequence/data/85_04.txt
car_sequence/data/85_05.txt
car_sequence/data/85_06.txt
car_sequence/data/85_07.txt
car_sequence/data/85_08.txt
car_sequence/data/85_09.txt
car_sequence/data/85_10.txt
car_sequence/data/90_01.txt
car_sequence/data/90_02.txt
car_sequence/data/90_03.txt
car_sequence/data/90_04.txt
car_sequence/data/90_05.txt
car_sequence/data/90_06.txt
car_sequence/data/90_07.txt
car_sequence/data/90_08.txt
car_sequence/data/90_09.txt
car_sequence/data/90_10.txt
car_sequence/data.py
car_sequence/data.txt
car_sequence/m.sh
car_sequence/n.sh
cols_car_sequence.txt
cols_etp.txt
cols_nurse_nina.txt
cols_personnel.txt
cols_social_golfer.txt
data_car_sequence.txt
data_etp.txt
data_nurse_nina.txt
data_personnel.txt
data_social_golfer.txt
etp/96_10_10.dzn
etp/96_10_1.dzn
etp/96_10_2.dzn
etp/96_10_3.dzn
etp/96_10_4.dzn
etp/96_10_5.dzn
etp/96_10_6.dzn
etp/96_10_7.dzn
etp/96_10_8.dzn
etp/96_10_9.dzn
etp/96_15_10.dzn
etp/96_15_1.dzn
etp/96_15_2.dzn
etp/96_15_3.dzn
etp/96_15_4.dzn
etp/96_15_5.dzn
etp/96_15_6.dzn
etp/96_15_7.dzn
etp/96_15_8.dzn
etp/96_15_9.dzn
etp/96_20_10.dzn
etp/96_20_1.dzn
etp/96_20_2.dzn
etp/96_20_3.dzn
etp/96_20_4.dzn
etp/96_20_5.dzn
etp/96_20_6.dzn
etp/96_20_7.dzn
etp/96_20_8.dzn
etp/96_20_9.dzn
etp/96_5_10.dzn
etp/96_5_1.dzn
etp/96_5_2.dzn
etp/96_5_3.dzn
etp/96_5_4.dzn
etp/96_5_5.dzn
etp/96_5_6.dzn
etp/96_5_7.dzn
etp/96_5_8.dzn
etp/96_5_9.dzn
etp/etp.mzn.template
etp/etp.py
etp/etp-sp_evmdd-gcc_lin-chuffed.mzn
etp/etp-sp_evmdd-gcc_lin.mzn
etp/etp-sp_evmdd-gcc_mf-chuffed.mzn
etp/etp-sp_evmdd-gcc_mf.mzn
etp/etp-sp_mcf-gcc_lin-chuffed.mzn
etp/etp-sp_mcf-gcc_lin.mzn
etp/etp-sp_mcf-gcc_mf-chuffed.mzn
etp/etp-sp_mcf-gcc_mf.mzn
etp/etp-sp_reg-gcc_lin-chuffed.mzn
etp/etp-sp_reg-gcc_lin.mzn
etp/etp-sp_reg-gcc_mf-chuffed.mzn
etp/etp-sp_reg-gcc_mf.mzn
etp/gen2.py
etp/gen.py
etp/m.sh
etp/n.sh
inst_car_sequence.txt
inst_etp.txt
inst_nurse_nina.txt
inst_personnel.txt
inst_social_golfer.txt
mzn/circulation_lin.mzn
mzn/circulation_mcf.mzn
mzn/min_cost_flow_c.mzn
mzn/min_cost_flow_lin.mzn
mzn/soft_alldifferent_lin.mzn
mzn/soft_alldifferent_mcf.mzn
mzn/soft_alldifferent_mf.mzn
nurse_nina/28_10.dzn
nurse_nina/28_11.dzn
nurse_nina/28_12.dzn
nurse_nina/28_13.dzn
nurse_nina/28_14.dzn
nurse_nina/28_15.dzn
nurse_nina/28_16.dzn
nurse_nina/28_17.dzn
nurse_nina/28_18.dzn
nurse_nina/28_19.dzn
nurse_nina/28_1.dzn
nurse_nina/28_20.dzn
nurse_nina/28_21.dzn
nurse_nina/28_22.dzn
nurse_nina/28_23.dzn
nurse_nina/28_24.dzn
nurse_nina/28_25.dzn
nurse_nina/28_26.dzn
nurse_nina/28_27.dzn
nurse_nina/28_28.dzn
nurse_nina/28_29.dzn
nurse_nina/28_2.dzn
nurse_nina/28_30.dzn
nurse_nina/28_31.dzn
nurse_nina/28_32.dzn
nurse_nina/28_33.dzn
nurse_nina/28_34.dzn
nurse_nina/28_35.dzn
nurse_nina/28_36.dzn
nurse_nina/28_37.dzn
nurse_nina/28_38.dzn
nurse_nina/28_39.dzn
nurse_nina/28_3.dzn
nurse_nina/28_40.dzn
nurse_nina/28_41.dzn
nurse_nina/28_42.dzn
nurse_nina/28_43.dzn
nurse_nina/28_44.dzn
nurse_nina/28_45.dzn
nurse_nina/28_46.dzn
nurse_nina/28_47.dzn
nurse_nina/28_48.dzn
nurse_nina/28_49.dzn
nurse_nina/28_4.dzn
nurse_nina/28_50.dzn
nurse_nina/28_5.dzn
nurse_nina/28_6.dzn
nurse_nina/28_7.dzn
nurse_nina/28_8.dzn
nurse_nina/28_9.dzn
nurse_nina/m.sh
nurse_nina/N30.zip
nurse_nina/n.sh
nurse_nina/nurse_nina-model_1-gcc_c-seq_c.mzn
nurse_nina/nurse_nina-model_1-gcc_c-seq_dps.mzn
nurse_nina/nurse_nina-model_1-gcc_c-seq_lin.mzn
nurse_nina/nurse_nina-model_1-gcc_c-seq_reg.mzn
nurse_nina/nurse_nina-model_1-gcc_lin-seq_c.mzn
nurse_nina/nurse_nina-model_1-gcc_lin-seq_dps.mzn
nurse_nina/nurse_nina-model_1-gcc_lin-seq_lin.mzn
nurse_nina/nurse_nina-model_1-gcc_lin-seq_reg.mzn
nurse_nina/nurse_nina-model_2-gcc_c-seq_c.mzn
nurse_nina/nurse_nina-model_2-gcc_c-seq_dps.mzn
nurse_nina/nurse_nina-model_2-gcc_c-seq_lin.mzn
nurse_nina/nurse_nina-model_2-gcc_c-seq_reg.mzn
nurse_nina/nurse_nina-model_2-gcc_lin-seq_c.mzn
nurse_nina/nurse_nina-model_2-gcc_lin-seq_dps.mzn
nurse_nina/nurse_nina-model_2-gcc_lin-seq_lin.mzn
nurse_nina/nurse_nina-model_2-gcc_lin-seq_reg.mzn
nurse_nina/nurse_nina.mzn.template
nurse_nina/nurse_nina.py
palm.patch
personnel/18_3_10.dzn
personnel/18_3_1.dzn
personnel/18_3_2.dzn
personnel/18_3_3.dzn
personnel/18_3_4.dzn
personnel/18_3_5.dzn
personnel/18_3_6.dzn
personnel/18_3_7.dzn
personnel/18_3_8.dzn
personnel/18_3_9.dzn
personnel/18_4_10.dzn
personnel/18_4_1.dzn
personnel/18_4_2.dzn
personnel/18_4_3.dzn
personnel/18_4_4.dzn
personnel/18_4_5.dzn
personnel/18_4_6.dzn
personnel/18_4_7.dzn
personnel/18_4_8.dzn
personnel/18_4_9.dzn
personnel/18_5_10.dzn
personnel/18_5_1.dzn
personnel/18_5_2.dzn
personnel/18_5_3.dzn
personnel/18_5_4.dzn
personnel/18_5_5.dzn
personnel/18_5_6.dzn
personnel/18_5_7.dzn
personnel/18_5_8.dzn
personnel/18_5_9.dzn
personnel/18_6_10.dzn
personnel/18_6_1.dzn
personnel/18_6_2.dzn
personnel/18_6_3.dzn
personnel/18_6_4.dzn
personnel/18_6_5.dzn
personnel/18_6_6.dzn
personnel/18_6_7.dzn
personnel/18_6_8.dzn
personnel/18_6_9.dzn
personnel/20_3_10.dzn
personnel/20_3_1.dzn
personnel/20_3_2.dzn
personnel/20_3_3.dzn
personnel/20_3_4.dzn
personnel/20_3_5.dzn
personnel/20_3_6.dzn
personnel/20_3_7.dzn
personnel/20_3_8.dzn
personnel/20_3_9.dzn
personnel/20_4_10.dzn
personnel/20_4_1.dzn
personnel/20_4_2.dzn
personnel/20_4_3.dzn
personnel/20_4_4.dzn
personnel/20_4_5.dzn
personnel/20_4_6.dzn
personnel/20_4_7.dzn
personnel/20_4_8.dzn
personnel/20_4_9.dzn
personnel/20_5_10.dzn
personnel/20_5_1.dzn
personnel/20_5_2.dzn
personnel/20_5_3.dzn
personnel/20_5_4.dzn
personnel/20_5_5.dzn
personnel/20_5_6.dzn
personnel/20_5_7.dzn
personnel/20_5_8.dzn
personnel/20_5_9.dzn
personnel/20_6_10.dzn
personnel/20_6_1.dzn
personnel/20_6_2.dzn
personnel/20_6_3.dzn
personnel/20_6_4.dzn
personnel/20_6_5.dzn
personnel/20_6_6.dzn
personnel/20_6_7.dzn
personnel/20_6_8.dzn
personnel/20_6_9.dzn
personnel/24_3_10.dzn
personnel/24_3_1.dzn
personnel/24_3_2.dzn
personnel/24_3_3.dzn
personnel/24_3_4.dzn
personnel/24_3_5.dzn
personnel/24_3_6.dzn
personnel/24_3_7.dzn
personnel/24_3_8.dzn
personnel/24_3_9.dzn
personnel/24_4_10.dzn
personnel/24_4_1.dzn
personnel/24_4_2.dzn
personnel/24_4_3.dzn
personnel/24_4_4.dzn
personnel/24_4_5.dzn
personnel/24_4_6.dzn
personnel/24_4_7.dzn
personnel/24_4_8.dzn
personnel/24_4_9.dzn
personnel/24_5_10.dzn
personnel/24_5_1.dzn
personnel/24_5_2.dzn
personnel/24_5_3.dzn
personnel/24_5_4.dzn
personnel/24_5_5.dzn
personnel/24_5_6.dzn
personnel/24_5_7.dzn
personnel/24_5_8.dzn
personnel/24_5_9.dzn
personnel/24_6_10.dzn
personnel/24_6_1.dzn
personnel/24_6_2.dzn
personnel/24_6_3.dzn
personnel/24_6_4.dzn
personnel/24_6_5.dzn
personnel/24_6_6.dzn
personnel/24_6_7.dzn
personnel/24_6_8.dzn
personnel/24_6_9.dzn
personnel/24_7_10.dzn
personnel/24_7_1.dzn
personnel/24_7_2.dzn
personnel/24_7_3.dzn
personnel/24_7_4.dzn
personnel/24_7_5.dzn
personnel/24_7_6.dzn
personnel/24_7_7.dzn
personnel/24_7_8.dzn
personnel/24_7_9.dzn
personnel/24_8_10.dzn
personnel/24_8_1.dzn
personnel/24_8_2.dzn
personnel/24_8_3.dzn
personnel/24_8_4.dzn
personnel/24_8_5.dzn
personnel/24_8_6.dzn
personnel/24_8_7.dzn
personnel/24_8_8.dzn
personnel/24_8_9.dzn
personnel/m.sh
personnel/n.sh
personnel/personnel-first_fail-indomain_split.mzn
personnel/personnel-first_fail-value_prop.mzn
personnel/personnel-input_order-indomain_split.mzn
personnel/personnel-input_order-value_prop.mzn
personnel/personnel.mzn.template
personnel/personnel.py
scripts/csv_to_tex.sed
scripts/data_car_sequence.sh
scripts/data_etp.sh
scripts/data_nurse_nina.sh
scripts/data_personnel.sh
scripts/data.py
scripts/data_social_golfer.sh
scripts/job.sh
scripts/sub.sh
scripts/summary.py
scripts/task_car_sequence.sh
scripts/task_etp.sh
scripts/task_nurse_nina.sh
scripts/task_personnel.sh
scripts/task_social_golfer.sh
social_golfer/m.sh
social_golfer/n.sh
social_golfer/social_golfer-activity.mzn
social_golfer/social_golfer-first_fail.mzn
social_golfer/social_golfer-input_order.mzn
social_golfer/SocialGolfer.java
social_golfer/social_golfer.mzn.template
task_car_sequence_pre.txt
task_car_sequence.txt
task_etp_pre.txt
task_etp.txt
task_nurse_nina_pre.txt
task_nurse_nina.txt
task_personnel_pre.txt
task_personnel.txt
task_social_golfer_pre.txt
task_social_golfer.txt