%************************************************ \chapter{Experiment Resources}% \label{ch:benchmarks} %************************************************ \noindent{}All experiments included in this thesis were conducted on a dedicated node in a computational cluster. The machine operates using a \textbf{Intel Xeon 8260} \gls{cpu}, which has 24 non-hyperthreaded cores, and has access to \textbf{268.55 GB} of \gls{ram}. Each experimental test was given exclusive access to a single \gls{cpu} core and access to sufficient \gls{ram}. \section{Software}% \label{sec:bench-soft} \subsection{MiniZinc Flattener} In this thesis we use three different versions of the \minizinc\ flattening tool \subsection{MiniZinc Solvers} \paragraph{Gecode} \paragraph{Chuffed} \paragraph{IBM CPLEX} \paragraph{Gurobi} \section{MiniZinc Models}% \label{sec:bench-models} \paragraph{QCP-Max} This problem was introduced in by Feydy et al. in the original paper on \gls{half-reif} \autocite{feydy-2011-half-reif}. \jip{...} \begin{mzn} include "all_different.mzn"; int: n; % size array[1..n,1..n] of 0..n: s; % 0 = unfixed 1..n = fixed array[1..n,1..n] of var 1..n: q; % qcp array; constraint forall(i,j in 1..n where s[i,j] > 0)(q[i,j] = s[i,j]); solve maximize sum(i in 1..n)(all_different([q[i,j] | j in 1..n])) + sum(j in 1..n)(all_different([q[i,j] | i in 1..n])); \end{mzn} \paragraph{Prize Collecting Path} This problem was introduced in by Feydy et al. in the original paper on \gls{half-reif} \autocite{feydy-2011-half-reif}. \jip{...} \begin{mzn} include "alldifferent_except_0.mzn"; int: n; % size array[1..n,0..n] of int: p; % prize for edge (i,j), p[i,0] = 0 array[1..n] of var 0..n: next; % next posn in tour array[1..n] of var 0..n: pos; % posn on node i in path, 0=notin array[1..n] of var int: prize = [p[i,next[i]] | i in 1..n]; % prize for outgoing edge constraint forall(i in 1..n)( (pos[i] = 0 <-> next[i] = 0) /\ (next[i] > 1 -> pos[next[i]] = pos[i] + 1) ); constraint alldifferent_except_0(next) /\ pos[1] = 1; solve minimize sum(i in 1..n)(prize[i]); \end{mzn} \section{Benchmark Design}% \label{sec:bench-env} To promote the verification and recreation of experiments, we have published the programs with accompanying instructions to perform the experiments in this thesis. The experiments are split into three parts, each testing a different system. Each part is published as a \gls{git} repository on GitHub. \paragraph{MiniZinc Prototype} The design for the experiments of the \minizinc{} prototype implementation can be found in: \begin{center} \url{file://TODO} \end{center} This repository contains the flattening, recursive function, and the incremental flattening benchmarks. \paragraph{Half Reification} The design for all the \gls{half-reif} experiments is located in: \begin{center} \url{https://github.com/Dekker1/half-reif-benchmarks} \end{center} This repository contains both the benchmark for the \gls{chuffed} propagators of \gls{half-reif} constraints and the \minizinc{} Challenge 2019 \& 2020 benchmark. \paragraph{Restarting Meta-Search} Finally, the design of the experiments for restart based \gls{meta-search} can be found in: \begin{center} \url{https://github.com/Dekker1/on-restart-benchmarks} \end{center} This repository contains the benchmarks for both \gls{gecode} and \gls{chuffed}.