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

97 lines
3.3 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}
\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}.