298 lines
11 KiB
TeX
298 lines
11 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 an \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{Experimental Design}%
|
|
\label{sec:bench-env}
|
|
|
|
To promote the verification and recreation of our experiments, we have published our experimental design in the form of several bundles.
|
|
Each bundle contains the exact versions of the software, models, and data that were used.
|
|
They are accompanied by instructions to perform the experiments.
|
|
|
|
The experiments are split into three bundles, each testing a different system.
|
|
Each part is published as a 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-optimization} 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}.
|
|
|
|
|
|
\section{Software}%
|
|
\label{sec:bench-soft}
|
|
|
|
Central to the experiments in this thesis are two kinds of programs: programs that rewrite a \constraint{} model into a \solver{} specification and the \solvers{} that given a specification search for solutions.
|
|
We generally test the rewriting programs, in particular the \minizinc{} flattener, but use the \solvers{} to evaluate the effect of changes to these rewriting programs.
|
|
|
|
\subsection{MiniZinc Flattener}
|
|
|
|
In this thesis we use three different versions of the \minizinc\ flattening tool:
|
|
|
|
\begin{itemize}
|
|
|
|
\item The officially released MiniZinc flattener (version 2.5.5) \autocite{minizinc-2021-minizinc}.
|
|
The source code for this version can be found here:
|
|
\begin{center}
|
|
\url{https://github.com/MiniZinc/libminizinc/tree/2.5.5}
|
|
\end{center}
|
|
|
|
\item A prototype for the language architecture designed as part of this thesis.
|
|
The source code for this version can be found here:
|
|
\begin{center}
|
|
\url{file://TODO}
|
|
\end{center}
|
|
|
|
\item The official MiniZinc flattener (version 2.5.5) \autocite{minizinc-2021-minizinc}, adjusted with the restart-based mechanisms.
|
|
The source code for this version can be found here:
|
|
\begin{center}
|
|
\url{https://github.com/Dekker1/libminizinc/tree/feature/on_restart}
|
|
\end{center}
|
|
|
|
\end{itemize}
|
|
|
|
\subsection{MiniZinc Solvers}
|
|
|
|
In this thesis we use the following \solvers{}:
|
|
|
|
\paragraph{Chuffed} is an open source \gls{lcg} \solver{} \cite{chuffed-2021-chuffed}.
|
|
In this thesis we use three different versions of the \gls{chuffed} \solver{}:
|
|
|
|
\begin{itemize}
|
|
|
|
\item The official development version of \gls{chuffed}.
|
|
The source code for this version can be found here:
|
|
\begin{center}
|
|
\url{https://github.com/chuffed/chuffed/tree/develop}
|
|
\end{center}
|
|
|
|
\item An extension of \gls{chuffed} that includes propagators for \glspl{half-reif} of the \mzninline{all_different} and \mzninline{element} \constraints{}.
|
|
The source code for this version can be found here:
|
|
\begin{center}
|
|
\url{https://github.com/Dekker1/chuffed/tree/feature/imp_globals}
|
|
\end{center}
|
|
|
|
\item An extension of \gls{chuffed} that includes propagators for restart-based meta-search.
|
|
The source code for this version can be found here:
|
|
\begin{center}
|
|
\url{https://github.com/Dekker1/chuffed/tree/feature/on_restart}
|
|
\end{center}
|
|
|
|
\end{itemize}
|
|
|
|
\paragraph{Coin-OR Branch-and-Cut} is an open source \gls{mip} \solver{} \autocite{forrest-2020-cbc}.
|
|
In this thesis we use version 2.10.5 of this solver.
|
|
Its source code is available at
|
|
|
|
\begin{center}
|
|
\url{https://github.com/coin-or/Cbc/tree/releases/2.10.5}
|
|
\end{center}
|
|
|
|
\paragraph{Gecode} is an open source \gls{cp} solver \autocite{gecode-2021-gecode}.
|
|
In this thesis we use four different versions of the \gls{gecode} solver:
|
|
\begin{itemize}
|
|
|
|
\item The official release of \gls{gecode}, version 6.3.0.
|
|
The source code for this version can be found here:
|
|
\begin{center}
|
|
\url{https://github.com/Gecode/gecode/tree/release-6.3.0}
|
|
\end{center}
|
|
|
|
\item An extension of \gls{gecode} that includes propagators for restart-based meta-search.
|
|
The source code for this version can be found here:
|
|
\begin{center}
|
|
\url{https://github.com/Dekker1/gecode/tree/feature/on_restart}
|
|
\end{center}
|
|
|
|
\item An extension of \gls{gecode} that is able to record the search process of restart-based meta-search.
|
|
The source code for this version can be found here:
|
|
\begin{center}
|
|
\url{https://github.com/Dekker1/gecode/tree/feature/on_restart_record}
|
|
\end{center}
|
|
|
|
\item An extension of \gls{gecode} that is able to replay the search process of restart-based meta-search.
|
|
The source code for this version can be found here:
|
|
\begin{center}
|
|
\url{https://github.com/Dekker1/gecode/tree/feature/on_restart_replay}
|
|
\end{center}
|
|
|
|
\end{itemize}
|
|
|
|
\paragraph{IBM CPLEX} is a proprietary \gls{mip} \solver{} \autocite{ibm-2020-cplex}.
|
|
In this thesis we use \gls{cplex} version 20.1 under an academic licence in our experiments.
|
|
|
|
\paragraph{OpenWBO} is an open source \gls{maxsat} \solver{} \autocite{martins-2014-openwbo}.
|
|
In this thesis we use version \todo{xxx} in our experiments.
|
|
The source code for this version can be found here:
|
|
|
|
\begin{center}
|
|
\url{https://github.com/sat-group/open-wbo}
|
|
\end{center}
|
|
|
|
|
|
\section{MiniZinc Models}%
|
|
\label{sec:bench-models}
|
|
|
|
In the following paragraphs, we introduce the origins of the models used in the experiments of this thesis.
|
|
|
|
\paragraph{MiniZinc Challenge} Most of the models used in the experiments in this thesis stem from the \minizinc{} Challenge \autocite{stuckey-2010-challenge,stuckey-2014-challenge}.
|
|
The \minizinc{} Challenge is a yearly competition, held since 2008, in which \minizinc{} \solvers{} compete against each other in solving 100 \minizinc{} instances.
|
|
\Glspl{solver} are scored based on their performance solving each instance: time to solution, quality of solution, and proof of optimality.
|
|
The 100 instances stem from 20 \minizinc{} models, 10 of which are guaranteed to have never been used in earlier challenges.
|
|
|
|
A repository of all \minizinc{} models previously used in the challenges and accompanying data files can be found here:
|
|
|
|
\begin{center}
|
|
\url{https://github.com/minizinc/minizinc-benchmarks}
|
|
\end{center}
|
|
|
|
The flattening experiment presented in \cref{sec:rew-experiments} use a selection of seventeen models originating from the \minizinc{} challenge.
|
|
These models can identified using the following labels:
|
|
|
|
\begin{multicols}{3}
|
|
\ttfamily
|
|
\begin{itemize}
|
|
\item accap
|
|
\item amaze
|
|
\item city-position
|
|
\item {\scriptsize{} community-detection}
|
|
\item depot-placement
|
|
\item freepizza
|
|
\item groupsplitter
|
|
\item kidney-exchange
|
|
\item multi-knapsack
|
|
\item nonogram
|
|
\item nside
|
|
\item rcpsp-wet
|
|
\item road-cons
|
|
\item roster
|
|
\item {\scriptsize{} stack-cuttingstock}
|
|
\item steelmillslab
|
|
\item triangular
|
|
\end{itemize}
|
|
\end{multicols}
|
|
|
|
The large scale \gls{half-reif} experiment presented in \cref{sec:half-experiments} uses the \minizinc{} instances from 2019 and 2020.
|
|
The 2019 \minizinc{} Challenge included the models identified by the following labels:
|
|
|
|
\begin{multicols}{3}
|
|
\ttfamily
|
|
\begin{itemize}
|
|
\item accap
|
|
\item amaze
|
|
\item code-generator
|
|
\item fox-geese-corn
|
|
\item groupsplitter
|
|
\item hrc
|
|
\item kidney-exchange
|
|
\item {\scriptsize{} liner-sf-repositioning}
|
|
\item lot-sizing
|
|
\item median-string
|
|
\item multi-knapsack
|
|
\item nside
|
|
\item ptv
|
|
\item rcpsp-wet-diverse
|
|
\item {\scriptsize{} rotating-workforce}
|
|
\item {\scriptsize{} stack-cuttingstock}
|
|
\item steelmillslab
|
|
\item stochastic-vrp
|
|
\item triangular
|
|
\item zephyrus
|
|
\end{itemize}
|
|
\end{multicols}
|
|
|
|
\noindent{}The 2020 \minizinc{} Challenge included the models identified by the following labels:
|
|
|
|
\begin{multicols}{3}
|
|
\ttfamily
|
|
\begin{itemize}
|
|
\item bnn-planner
|
|
\item cable\_tree\_wiring
|
|
\item code-generator
|
|
\item {\tiny{} collaborative-construction}
|
|
\item gbac
|
|
\item hoist-benchmark
|
|
\item is
|
|
\item lot-sizing
|
|
\item {\scriptsize{} minimal-decision-sets}
|
|
\item p1f-pjs
|
|
\item pentominoes
|
|
\item pillars-and-planks
|
|
\item racp
|
|
\item radiation
|
|
\item sdn-change
|
|
\item skill-allocation
|
|
\item {\scriptsize{} soccer-computational}
|
|
\item stable-goods
|
|
\item tower\_challenge
|
|
\item whirlpool
|
|
\end{itemize}
|
|
\end{multicols}
|
|
|
|
The incremental experiments presented in \cref{sec:inc-experiments} are based on four models from the \minizinc{} Challenge:
|
|
|
|
\begin{multicols}{2}
|
|
\ttfamily
|
|
\begin{itemize}
|
|
\item gbac
|
|
\item radiation
|
|
\item steelmillslab
|
|
\item rcpsp-wet
|
|
\end{itemize}
|
|
\end{multicols}
|
|
|
|
|
|
\paragraph{Prize Collecting Path} This problem was introduced in by \textcite{feydy-2011-half-reif} in the original paper on \gls{half-reif}.
|
|
In this thesis it is used to benchmark the implementation of a propagator for the \gls{half-reif} of the \mzninline{element} \constraint{}.
|
|
This experiment is shown in \cref{sec:half-experiments}.
|
|
\Cref{lst:bench-prize} shows a \minizinc{} model that can be used to solve the problem.
|
|
The data and original model are available at:
|
|
|
|
\begin{center}
|
|
\url{https://people.eng.unimelb.edu.au/pstuckey/half/}
|
|
\end{center}
|
|
|
|
\begin{listing}
|
|
\mznfile{assets/listing/prize.mzn}
|
|
\caption{\label{lst:bench-prize} A \minizinc{} model for the Prize Collecting Path problem}
|
|
\end{listing}
|
|
|
|
\paragraph{QCP-Max} This problem was introduced in by \textcite{feydy-2011-half-reif} in the original paper on \gls{half-reif}.
|
|
In this thesis it is used to benchmark the implementation of a propagator for the \gls{half-reif} of the \mzninline{all_different} \constraint{}.
|
|
This experiment is shown in \cref{sec:half-experiments}.
|
|
\Cref{lst:bench-qcpmax} shows a \minizinc{} model that can be used to solve the problem.
|
|
The data and original model are available at:
|
|
|
|
\begin{center}
|
|
\url{https://people.eng.unimelb.edu.au/pstuckey/half/}
|
|
\end{center}
|
|
|
|
\begin{listing}
|
|
\mznfile{assets/listing/qcp_max.mzn}
|
|
\caption{\label{lst:bench-qcpmax} A \minizinc{} model for the QCP-Max problem}
|
|
\end{listing}
|
|
|