%************************************************ \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} \begin{mzn} include "subcircuit.mzn"; int: n; % size array[1..n,1..n] of int: p; % prize for edge (i,j), p[i,i] = 0 array[1..n] of var 0..n: next; % next posn in tour array[1..n] of var int: prize = [p[i,next[i]] | i in 1..n]; % prize for outgoing edge constraint subcircuit(next); solve minimize sum(i in 1..n)(prize[i]); \end{mzn} \section{Benchmark Environments}% \label{sec:bench-programs}