More work on the CP section

This commit is contained in:
Jip J. Dekker 2021-05-18 12:46:51 +10:00
parent 1e64cf304d
commit 7fcf6ff042
No known key found for this signature in database
GPG Key ID: 517DF4A00618C9C3
3 changed files with 164 additions and 47 deletions

View File

@ -224,6 +224,13 @@
bibsource = {dblp computer science bibliography, https://dblp.org}
}
@manual{cplex-2020-cplex,
title = {V20.1: Users Manual for CPLEX},
author = {CPLEX, IBM ILOG},
journal = {International Business Machines Corporation},
year = 2020
}
@article{davis-1962-dpll,
author = {Davis, Martin and Logemann, George and Loveland, Donald},
title = {A Machine Program for Theorem-Proving},
@ -280,6 +287,14 @@
bibsource = {dblp computer science bibliography, https://dblp.org}
}
@software{gecode-2021-gecode,
author = {{Gecode Team}},
title = {Gecode: A Generic Constraint Development Environment},
year = 2021,
url = {http://www.gecode.org},
version = {6.3.0},
}
@article{fourer-2002-amplcp,
author = {Robert Fourer and David M. Gay},
title = {Extending an Algebraic Modeling Language to Support
@ -296,21 +311,6 @@
bibsource = {dblp computer science bibliography, https://dblp.org}
}
@software{gecode-2021-gecode,
author = {{Gecode Team}},
title = {Gecode: A Generic Constraint Development Environment},
year = 2021,
url = {http://www.gecode.org},
version = {6.3.0},
}
@software{gurobi-2021-gurobi,
author = {{Gurobi Optimization, LLC}},
title = {Gurobi Optimizer Reference Manual},
year = 2021,
url = {http://www.gurobi.com},
}
@software{minizinc-2021-minizinc,
author = {{MiniZinc Team}},
title = {MiniZinc: a free and open-source constraint modeling language},
@ -396,6 +396,13 @@
bibsource = {dblp computer science bibliography, https://dblp.org}
}
@manual{gurobi-2021-gurobi,
author = {{Gurobi Optimization, LLC}},
title = {Gurobi Optimizer Reference Manual},
year = 2021,
url = {http://www.gurobi.com},
}
@inproceedings{hebrard-2005-diverse,
author = {Emmanuel Hebrard and Brahim Hnich and Barry O'Sullivan and
Toby Walsh},
@ -579,6 +586,17 @@
programming},
}
@phdthesis{rendl-2010-thesis,
author = {Andrea Rendl},
title = {Effective compilation of constraint models},
school = {University of St Andrews, {UK}},
year = {2010},
url = {http://hdl.handle.net/10023/973},
timestamp = {Thu, 25 Aug 2016 17:20:59 +0200},
biburl = {https://dblp.org/rec/phd/ethos/Rendl10.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}
@article{marriott-2008-zinc,
author = {Kim Marriott and Nicholas Nethercote and Reza Rafeh and
Peter J. Stuckey and Maria Garcia de la Banda and Mark
@ -597,17 +615,6 @@
bibsource = {dblp computer science bibliography, https://dblp.org}
}
@phdthesis{rendl-2010-thesis,
author = {Andrea Rendl},
title = {Effective compilation of constraint models},
school = {University of St Andrews, {UK}},
year = {2010},
url = {http://hdl.handle.net/10023/973},
timestamp = {Thu, 25 Aug 2016 17:20:59 +0200},
biburl = {https://dblp.org/rec/phd/ethos/Rendl10.bib},
bibsource = {dblp computer science bibliography, https://dblp.org}
}
@inproceedings{mears-2014-option,
author = {Christopher Mears and Andreas Schutt and Peter J. Stuckey
and Guido Tack and Kim Marriott and Mark Wallace},
@ -805,6 +812,17 @@
bibsource = {dblp computer science bibliography, https://dblp.org}
}
@techreport{gamrath-2020-scip,
author = {Gerald Gamrath and Daniel Anderson and Ksenia Bestuzheva and Wei-Kun Chen and Leon Eifler and Maxime Gasse and Patrick Gemander and Ambros Gleixner and Leona Gottwald and Katrin Halbig and Gregor Hendel and Christopher Hojny and Thorsten Koch and Le Bodic, Pierre and Stephen J. Maher and Frederic Matter and Matthias Miltenberger and Erik M{\"u}hmer and Benjamin M{\"u}ller and Marc E. Pfetsch and Franziska Schl{\"o}sser and Felipe Serrano and Yuji Shinano and Christine Tawfik and Stefan Vigerske and Fabian Wegscheider and Dieter Weninger and Jakob Witzig},
title = {{The SCIP Optimization Suite 7.0}},
type = {ZIB-Report},
institution = {Zuse Institute Berlin},
number = {20-10},
month = {3},
year = {2020},
url = {http://nbn-resolving.de/urn:nbn:de:0297-zib-78023}
}
@inproceedings{schulte-2000-deep,
author = {Christian Schulte},
editor = {Enrico Pontelli and V{\'{\i}}tor Santos Costa},
@ -824,17 +842,6 @@
bibsource = {dblp computer science bibliography, https://dblp.org}
}
@techreport{gamrath-2020-scip,
author = {Gerald Gamrath and Daniel Anderson and Ksenia Bestuzheva and Wei-Kun Chen and Leon Eifler and Maxime Gasse and Patrick Gemander and Ambros Gleixner and Leona Gottwald and Katrin Halbig and Gregor Hendel and Christopher Hojny and Thorsten Koch and Le Bodic, Pierre and Stephen J. Maher and Frederic Matter and Matthias Miltenberger and Erik M{\"u}hmer and Benjamin M{\"u}ller and Marc E. Pfetsch and Franziska Schl{\"o}sser and Felipe Serrano and Yuji Shinano and Christine Tawfik and Stefan Vigerske and Fabian Wegscheider and Dieter Weninger and Jakob Witzig},
title = {{The SCIP Optimization Suite 7.0}},
type = {ZIB-Report},
institution = {Zuse Institute Berlin},
number = {20-10},
month = {3},
year = {2020},
url = {http://nbn-resolving.de/urn:nbn:de:0297-zib-78023}
}
@inproceedings{schulte-2005-views,
author = {Christian Schulte and Guido Tack},
editor = {Peter van Beek},
@ -1025,6 +1032,29 @@
publisher = {SRI International}
}
@software{forrest-2020-cbc,
author = {Forrest, J. and
Stefan Vigerske and
Haroldo Gambini Santos and
Ted Ralphs and
Lou Hafer and
Bjarni Kristjansson and
Fasano, J.P. and
EdwinStraver and
Miles Lubin and
Lougee-Heimer, R. and
jpgoncal1 and
Gassmann, H.I. and
Matthew Saltzman},
title = {coin-or/Cbc: Version 2.10.5},
month = mar,
year = 2020,
publisher = {Zenodo},
version = {releases/2.10.5},
doi = {10.5281/zenodo.3700700},
url = {https://doi.org/10.5281/zenodo.3700700}
}
@book{wolsey-1988-mip,
title = {Integer and Combinatorial Optimization},
author = {Wolsey, L.A. and Nemhauser, G.L.},

View File

@ -39,6 +39,17 @@
description={},
}
\newglossaryentry{bnb}{
name={branch and bound},
description={},
}
\newglossaryentry{bounds-con}{
name={bounds consistent},
description={},
}
\newglossaryentry{gls-cbls}{
name={constraint-based local search},
description={},
@ -120,11 +131,21 @@
description={},
}
\newglossaryentry{domain-con}{
name={domain consistent},
description={},
}
\newglossaryentry{essence}{
name={Essence},
description={},
}
\newglossaryentry{fixpoint}{
name={fixpoint},
description={},
}
\newglossaryentry{flatzinc}{
name={Flat\-Zinc},
description={},
@ -291,13 +312,18 @@
description={},
}
\newglossaryentry{gls-trs}{
name={term rewriting system},
\newglossaryentry{termination}{
name={termination},
description={},
}
\newglossaryentry{termination}{
name={termination},
\newglossaryentry{trail}{
name={trail},
description={},
}
\newglossaryentry{gls-trs}{
name={term rewriting system},
description={},
}

View File

@ -641,18 +641,48 @@ impossible value using a process called \gls{propagation}. For each
\glspl{variable}, the \gls{propagator} will analyse and prune the any values
that are proven to be inconsistent.
When there are no more triggered \glspl{propagator} and not all \glspl{variable}
have been assigned a value, the \gls{solver} has to make a search decision. It
will bind a \gls{variable} to a value or add a new \gls{constraint}.
In the best case scenario, \gls{propagation} will eliminate all impossible value
and all \glspl{variable} have been fixed to a single value. In this case we have
arrived at a solution. Often, \gls{propagation} alone will not be enough to find
a solution to the problem. Instead, when no more \glspl{propagator} are
triggered (we have reached a \gls{fixpoint}), the \gls{solver} has to make a
search decision. It will fix a \gls{variable} to a value or add a new
\gls{constraint}. This search decision is an assumption made by the \gls{solver}
in the hope of finding a solution. If no solution is found using the search
decision, then it needs to try making the opposite decision: excluding the
chosen value or adding the opposite constraint.
Note that the important difference between values \gls{propagation} and making
search decisions is that value excluded by a \gls{propagator} are guaranteed to
not occur in any solution, but values excluded by a search heuristic are merely
removed locally and might still be part of a solution. A \gls{cp} \gls{solver}
is only able to prove that the problem is unsatisfiable by exploring the full
search space.
\Gls{propagation} is not only used when starting the search, but also after
making each search decision. This means that some of the \gls{propagation}
depends on the search decision. Therefore, if the \gls{solver} needs to
reconsider a search decision, then it must also undo all \gls{domain} changes
that were caused by \gls{propagation} dependent on that search decision.
The general most common method in \gls{cp} \glspl{solver} to achieve this is to
keep track of \gls{domain} changes using a \gls{trail}. For every \gls{domain}
change that is made during propagation (after the first search decision), the
reverse change is stored on in a list. Whenever a new search decision is made,
the current position of the list is tagged. If the \gls{solver} now needs to
undo a search decision (\ie\ \gls{backtrack}), it can apply all change until it
reaches the change that is tagged with the search decision. Because all changes
before the tagged point on the \gls{trail} were made before the search decision
was made, it is guaranteed that these \gls{domain} changes do not depend on the
search decision. Furthermore, because propagation is performed to a
\gls{fixpoint}, it is guaranteed that no duplicate propagation is required.
\begin{example}%
\label{ex:back-nqueens}
Consider as an example the N-Queens problem. Given a chess board of size
\(n \times n\), find a placement for \(n\) queen chess pieces such that no queen
can attack another. Meaning only one queen per row, one queen per column, and
one queen per diagonal.
The problem can be modelled as a \gls{csp} as follows.
one queen per diagonal. The problem can be modelled as a \gls{csp} as follows.
\begin{mzn}
int: n;
@ -687,7 +717,38 @@ board.
\end{example}
In \gls{cp} solving there is a trade-off between the amount of time spend
propagating a constraint and the the amount of search that is otherwise
required. The golden standard for a \gls{propagator} is to be \gls{domain-con},
meaning that all values left in the \glspl{domain} of its \glspl{variable} there
is at least one possible variable assignment that satisfies the constraint.
Designing an algorithm that reaches this level of consistency is, however, an
easy task and might require high complexity. Instead it can sometimes be better
to use a propagator with a lower level of consistency. Although it might not
eliminate all possible values of the domain, searching the values that are not
eliminated might take less time than achieving \gls{domain-con}.
This is, for example, the case for integer linear constraints:
\[ \sum_{i} c_{i} x_{i} = d\] where \(c_{i}\) and \(d\) are integer
\glspl{parameter} and \(x_{i}\) are integer \gls{variable}. For these
constraints, no realistic \gls{domain-con} \gls{propagator} exists. Instead
\glspl{solver} generally use a \gls{bounds-con} \gls{propagator}, which
guarantee only that the minimum and maximum values in the \glspl{domain} of the
\glspl{variable} are used in at least one possible assignment that satisfies the
constraint.
Thus far, we have only considered \glspl{csp}. \gls{cp} solving can, however,
also be used to solve optimisation problems using a method called \gls{bnb}. The
\gls{cp} \gls{solver} will follow the same method as previously described.
However, when it find a solution, it does not yet know if this solution is
optimal. It is merely an incumbent solution. The \gls{solver} must therefore
resume its search, but it is no longer interested in just any solution, only
solutions that have a better \gls{objective} value. This is achieved by adding a
new \gls{propagator} that enforces all solutions to have a better
\gls{objective} value than the incumbent solution. If the search process finds
another solution, then the incumbent solution is updated and the search process
continues. If the search process does not find any other solutions, then it is
proven that there are no better solutions than the current incumbent solution.
\subsection{Mathematical Programming}%
\label{subsec:back-mip}