This repository has been archived on 2025-03-06. You can view files and clone it, but cannot push or open issues or pull requests.
dekker-phd-thesis/chapters/A2_benchmark.tex

83 lines
2.6 KiB
TeX

%************************************************
\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}