Update half reification chapter with SAT experiment numbers

This commit is contained in:
Jip J. Dekker 2021-07-19 18:26:51 +10:00
parent 81a5efb646
commit 80b32f11e7
No known key found for this signature in database
GPG Key ID: 517DF4A00618C9C3
6 changed files with 54 additions and 26 deletions

View File

@ -353,6 +353,21 @@
bibsource = {dblp computer science bibliography, https://dblp.org}, bibsource = {dblp computer science bibliography, https://dblp.org},
} }
@article{fischetti-2014-erratiscism,
author = {Matteo Fischetti and Michele Monaci},
title = {Exploiting Erraticism in Search},
journal = {Oper. Res.},
volume = {62},
number = {1},
pages = {114--122},
year = {2014},
url = {https://doi.org/10.1287/opre.2013.1231},
doi = {10.1287/opre.2013.1231},
timestamp = {Tue, 31 Mar 2020 18:17:39 +0200},
biburl = {https://dblp.org/rec/journals/ior/FischettiM14.bib},
bibsource = {dblp computer science bibliography, https://dblp.org},
}
@software{forrest-2020-cbc, @software{forrest-2020-cbc,
author = {Forrest, J. and Stefan Vigerske and Haroldo Gambini Santos and Ted author = {Forrest, J. and Stefan Vigerske and Haroldo Gambini Santos and Ted
Ralphs and Lou Hafer and Bjarni Kristjansson and Fasano, J.P. and Ralphs and Lou Hafer and Bjarni Kristjansson and Fasano, J.P. and

View File

@ -68,6 +68,12 @@
description={A set of instructions designed to be efficiently executed by an \gls{interpreter}. Distinctive from other computer languages a byte code has a very compact representation, \eg{} using only numbers, and can not be directly read by humans}, description={A set of instructions designed to be efficiently executed by an \gls{interpreter}. Distinctive from other computer languages a byte code has a very compact representation, \eg{} using only numbers, and can not be directly read by humans},
} }
\newglossaryentry{booleanisation}{
name={Booleanisation},
description={The process of \gls{rewriting} a \gls{model} to a \gls{sat} or \gls{maxsat} problem},
}
\newglossaryentry{bounds-con}{ \newglossaryentry{bounds-con}{
name={bounds consistent}, name={bounds consistent},
description={A \gls{propagator} is bounds consistent when it reduces the minimum and maximum values of \domains{} for which there is no possible \gls{variable-assignment} such that the \gls{constraint} is satisfied}, description={A \gls{propagator} is bounds consistent when it reduces the minimum and maximum values of \domains{} for which there is no possible \gls{variable-assignment} such that the \gls{constraint} is satisfied},
@ -404,6 +410,11 @@
description={A function defined over the \glspl{variable} of a \gls{model} to assign a numeric value to the quality of the \gls{sol}}, description={A function defined over the \glspl{variable} of a \gls{model} to assign a numeric value to the quality of the \gls{sol}},
} }
\newglossaryentry{openwbo}{
name={OpenWBO},
description={A well-known \gls{maxsat} \gls{solver} \autocite{martins-2014-openwbo}},
}
\newglossaryentry{operator}{ \newglossaryentry{operator}{
name={operator}, name={operator},
description={A syntactical symbol used as a shorthand for a function. Prefix operators, such as \mzninline{not}, appear before another expression and are a shorthand for unary functions. Infix operators, such as \mzninline{+}, \mzninline{*}, and \mzninline{div}, appear in between two expressions and are a shorthand for binary functions}, description={A syntactical symbol used as a shorthand for a function. Prefix operators, such as \mzninline{not}, appear before another expression and are a shorthand for unary functions. Infix operators, such as \mzninline{+}, \mzninline{*}, and \mzninline{div}, appear in between two expressions and are a shorthand for binary functions},

View File

@ -1,11 +1,11 @@
\begin{tabular}{llll} \begin{tabular}{lrrr}
\toprule \toprule
& Full Reification & \multicolumn{2}{l}{Half Reification} \\ & Full Reification & Half Reification & \\
\midrule \midrule
Constraints & 11,351,946 & 10,959,348 & (-3.46\%) \\ Constraints & 68,652,864 & 68,111,741 & (-0.79\%) \\
Reifications & 552,928 & 357,022 & (-35.43\%) \\ Reifications & 2,903,542 & 2,557,830 & (-11.91\%) \\
Half Reifications & 171,258 & 281,655 & \\ Half Reifications & 694,276 & 856,364 & \\
Implications Removed & 0 & 0 & \\ Implications Removed & 0 & 182 & \\
Rewriting Time & 1586s & 1583s & (-0.18\%) \\ Rewriting Time & 6,030s & 5,926s & (-1.28\%) \\
\bottomrule \bottomrule
\end{tabular} \end{tabular}

View File

@ -11,7 +11,7 @@
\gls{cbc} & (Full) & 2 & (11.94s) & 41 & (131.76s) & 131 & 16 & 10 \\ \gls{cbc} & (Full) & 2 & (11.94s) & 41 & (131.76s) & 131 & 16 & 10 \\
\gls{cbc} & (Half) & 2 & (7.01s) & 35 & (135.93s) & 135 & 17 & 11 \\ \gls{cbc} & (Half) & 2 & (7.01s) & 35 & (135.93s) & 135 & 17 & 11 \\
\midrule \midrule
OpenWBO & (Full) & 4 & (2.95s) & 29 & (199.27s) & 29 & 13 & 25 \\ OpenWBO & (Full) & 16 & (20.44s) & 48 & (156.01s) & 51 & 32 & 53 \\
OpenWBO & (Half) & 4 & (3.04s) & 30 & (202.70s) & 28 & 13 & 25 \\ OpenWBO & (Half) & 16 & (19.61s) & 51 & (187.73s) & 47 & 33 & 53 \\
\bottomrule \bottomrule
\end{tabular} \end{tabular}

View File

@ -791,6 +791,7 @@ Modern day \gls{sat} solvers, like Clasp \autocite{gebser-2012-clasp}, Kissat \a
Many real world problems modelled using \cmls{} directly correspond to \gls{sat}. Many real world problems modelled using \cmls{} directly correspond to \gls{sat}.
However, even problems that contain \variables{} with types other than Boolean can still be encoded as a \gls{sat} problem. However, even problems that contain \variables{} with types other than Boolean can still be encoded as a \gls{sat} problem.
This process is known as \gls{booleanisation}.
Depending on the problem, using a \gls{sat} \solvers{} to solve the encoded problem can still be the most efficient way to solve the problem. Depending on the problem, using a \gls{sat} \solvers{} to solve the encoded problem can still be the most efficient way to solve the problem.
\begin{example} \begin{example}

View File

@ -947,12 +947,11 @@ In the 32-4-8 group, we even see that usage of the \gls{propagator} allows us to
The usage of context analysis and introduction of \glspl{half-reif} allows us to evaluate the usage of \gls{half-reif} on a larger scale. The usage of context analysis and introduction of \glspl{half-reif} allows us to evaluate the usage of \gls{half-reif} on a larger scale.
In our second experiment we assess its effects on the \gls{rewriting} and solving of the \instances{} of the 2019 and 2020 \minizinc{} challenge \autocite{stuckey-2010-challenge,stuckey-2014-challenge}. In our second experiment we assess its effects on the \gls{rewriting} and solving of the \instances{} of the 2019 and 2020 \minizinc{} challenge \autocite{stuckey-2010-challenge,stuckey-2014-challenge}.
These experiments are conducted using the \gls{gecode} \solver{}, which has propagators for \glspl{half-reif} of many basic \constraints{}, and \minizinc{}'s \gls{linearisation} library, which has been adapted to use \gls{half-reif} as earlier described. These experiments are conducted using the \gls{gecode} \solver{}, which has propagators for \glspl{half-reif} of many basic \constraints{}, and \minizinc{}'s \gls{linearisation} and \gls{booleanisation} libraries, which has been adapted to use \gls{half-reif} as earlier described.
The \minizinc{} instances are rewritten using the \minizinc{} 2.5.5 \compiler{}, which can enable and disable the usage of \gls{half-reif}. The \minizinc{} instances are rewritten using the \minizinc{} 2.5.5 \compiler{}, which can enable and disable the usage of \gls{half-reif}.
The solving of the linearised \instances{} is tested using the \gls{cbc} and \gls{cplex} \gls{mip} \solvers{}. The solving of the linearised \instances{} are tested using the \gls{cbc} and \gls{cplex} \gls{mip} \solvers{}.
The solving of the Booleanised \instances are testing using the \gls{openwbo} \solver{}.
\todo{TODO:\ Extend this section with the \gls{sat} results once they are run.} is
\begin{table} \begin{table}
\begin{subtable}[b]{\linewidth} \begin{subtable}[b]{\linewidth}
\input{assets/table/half_flat_gecode} \input{assets/table/half_flat_gecode}
@ -960,11 +959,11 @@ The solving of the linearised \instances{} is tested using the \gls{cbc} and \gl
\end{subtable} \end{subtable}
\begin{subtable}[b]{\linewidth} \begin{subtable}[b]{\linewidth}
\input{assets/table/half_flat_linear} \input{assets/table/half_flat_linear}
\caption{\label{subtab:half-flat-lin}Linearisation library} \caption{\label{subtab:half-flat-lin}\Gls{linearisation} library}
\end{subtable} \end{subtable}
\begin{subtable}[b]{\linewidth} \begin{subtable}[b]{\linewidth}
\input{assets/table/half_flat_sat} \input{assets/table/half_flat_sat}
\caption{\label{subtab:half-flat-bool}Booleanisation library} \caption{\label{subtab:half-flat-bool}\Gls{booleanisation} library}
\end{subtable} \end{subtable}
\caption{\label{tab:half-rewrite} Cumulative statistics of \gls{rewriting} all \minizinc{} \instances{} from \minizinc{} challenge 2019 \& 2020 (200 \instances{}).} \caption{\label{tab:half-rewrite} Cumulative statistics of \gls{rewriting} all \minizinc{} \instances{} from \minizinc{} challenge 2019 \& 2020 (200 \instances{}).}
\end{table} \end{table}
@ -996,15 +995,15 @@ Similar to \gls{gecode}, the number of implications that is removed is dependent
Lastly, the \gls{rewriting} time slightly increases for the linearisation process. Lastly, the \gls{rewriting} time slightly increases for the linearisation process.
Since there are many more \constraints{}, the introduced optimisation mechanisms have an slightly higher overhead. Since there are many more \constraints{}, the introduced optimisation mechanisms have an slightly higher overhead.
\todo{The \gls{sat} statistics currently only include 2019. 2020 is still WIP.} Finally, statistics for the \gls{rewriting} the \instances{} for a \gls{maxsat} \solver{} is shown in \cref{subtab:half-flat-bool}.
Unlike linearisation, the usage of \gls{half-reif} does not significantly reduces number of \constraints{} and, although still significant, the number of \glspl{reif} is reduced by only slightly over ten percent.
Finally, statistics for the \gls{rewriting} the instances is shown in \cref{subtab:half-flat-bool}. We also see that that the \gls{booleanisation} library is explicitly defined in terms of \glspl{half-reif}.
Like linearisation, the usage of \gls{half-reif} significantly reduces number of \constraints{} and \glspl{reif}.
Different, however, is that the booleanisation library is explicitly defined in terms of \glspl{half-reif}.
Some \constraints{} manually introduce \mzninline{_imp} call as part of their definition. Some \constraints{} manually introduce \mzninline{_imp} call as part of their definition.
Even when we do not automatically introduce \glspl{half-reif}, they are still introduced by other \constraints{}.
Furthermore, the usage of \gls{chain-compression} does not seem to have any effect. Furthermore, the usage of \gls{chain-compression} does not seem to have any effect.
Since all \glspl{half-reif} are defined in terms of clauses, the implications normally removed using \gls{chain-compression} are instead aggregated into bigger clauses. Since all \glspl{half-reif} are defined in terms of clauses, the implications normally removed using \gls{chain-compression} are instead aggregated into bigger clauses.
Surprisingly, the usage of \gls{half-reif} also reduces the \gls{rewriting} time as it reduces the workload. Surprisingly, the usage of \gls{half-reif} slightly reduces the \gls{rewriting} time as it reduces the workload.
The relatively small changes shown might indicate that additional work is required to correctly annotate predicates and functions in the Booleanisation library.
\begin{table} \begin{table}
\input{assets/table/half_mznc} \input{assets/table/half_mznc}
@ -1040,11 +1039,13 @@ In general, we would expect the reduction of \constraints{} in a \gls{mip} insta
However, we can imagine that the removed \constraints{} in some cases help the \gls{mip} solver. However, we can imagine that the removed \constraints{} in some cases help the \gls{mip} solver.
An important technique used by \gls{mip} solvers is to detect certain pattern, such as cliques, during the pre-processing of the \gls{mip} instance. An important technique used by \gls{mip} solvers is to detect certain pattern, such as cliques, during the pre-processing of the \gls{mip} instance.
Some patterns can only be detected when using a full \gls{reif}. Some patterns can only be detected when using a full \gls{reif}.
Furthermore, the performance of \gls{mip} solvers is often dependent on the order and form in which the \constraints{} are given. Furthermore, the performance of \gls{mip} solvers is often dependent on the order and form in which the \constraints{} are given \autocite{fischetti-2014-erratiscism}.
\todo{Is there a citation for this?} With the usage of the \gls{aggregation} and \gls{del-rew}, these can be exceedingly different when using \gls{half-reif}. With the usage of the \gls{aggregation} and \gls{del-rew}, these can be exceedingly different when using \gls{half-reif}.
\todo{\gls{sat} number are still preliminary, but look optimistic. The solving statistics for \gls{openwbo} might be most positive.
Only one case where the solver time is severely impacted.} Through the use of \gls{half-reif}, \gls{openwbo} is able to find and prove the \gls{opt-sol} for 3 more \instances{}.
It negatively impacts one \instance{}, that no longer finds any \gls{sol}.
That the effect is so positive is surprising since its \gls{rewriting} statistics for \gls{maxsat} showed the least amount of change.
% \section{Summary} % \section{Summary}
% \label{sec:half-summary} % \label{sec:half-summary}